diff --git a/COPYRIGHT b/COPYRIGHT new file mode 100644 index 0000000000..cf4dcc2f13 --- /dev/null +++ b/COPYRIGHT @@ -0,0 +1,12 @@ +Project Observer Copyright (C) 2007 Adam Armstrong + +This program is free software; you can redistribute it and/or modify it under the terms of the +GNU General Public License as published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without +even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with this program; if not, write to the +Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. diff --git a/DejaVuSansCondensed.ttf b/DejaVuSansCondensed.ttf new file mode 100644 index 0000000000..e58bd15bd5 Binary files /dev/null and b/DejaVuSansCondensed.ttf differ diff --git a/DejaVuSansMono.ttf b/DejaVuSansMono.ttf new file mode 100644 index 0000000000..bf798a860f Binary files /dev/null and b/DejaVuSansMono.ttf differ diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000000..39e87326f5 --- /dev/null +++ b/INSTALL @@ -0,0 +1,26 @@ +Basic Installation Instructions +------------------------------- + +Point apache to the html directory. Give apache read/write access to rrd and graphs (check symlinks in html/ work!) + +Create a database, give a user full privileges on it. Insert the mysql schema file into it. + +Edit your config.php + +Customise html/includes/topnav.inc to be useful for your organisation (put some handy links in it!) + +Put cron.sh into your crontab for every 5 mins and cron-hourly.sh into your crontab for every hour. + +add a host with 'host-add.php ' + +Cisco network devices with cdp enabled should be detected automatically in waves each hour as it spiders outwards +(run discover.php manually to speed it up!) + +Servers will need to be added manually. + +Replace the logo! + +Login to the web interface with the username 'admin' and the password 'observer'. + +*** Drop me an email to adama@memetic.org *** + diff --git a/LICENCE b/LICENCE new file mode 100644 index 0000000000..8377aa61ab --- /dev/null +++ b/LICENCE @@ -0,0 +1,11 @@ +Copyright © 2006-2007 by Adam Armstrong. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED "AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/README b/README new file mode 100644 index 0000000000..6dc00e6685 --- /dev/null +++ b/README @@ -0,0 +1,67 @@ +Copyright (C) 2007 Adam Armstrong + +Released under the GNU Public License + +Introduction +------------ + +Project Observer is an auto-discovering network monitoring system. It's not designed to be a drop-in replacement for +Nagios, Mon, JFFNMS or similar applications. It's designed to be an easily-navigable interface to the health of your +network. + +*********************************************************** +Release 0.2.4 +Fixed some misnamed files +Fixed some hardcoded binary locations +Removed some messy AJAX +Replaced the menu bar +Added some new menu items +Cleaned up presentation of some pages + +Release 0.2.3 +Fixed some broken graphing code +Added host add/remove to web interface +Added host/interface/service status to web interface +Tidied up some code + +Release 0.2.2 +Replaced old layout with new 'Project Observer' layout +Added recognition of SNOM SIP phones, data collection and some graphing +Modified standard layout to remove Vostron-specific elements +Added cpu graphing for ProCurve devices +Added tabs for device page and AJAX loading of contents +Detection of HP ProCurve devices +Detection of m0n0wall devices by new snmp-id +Can now disable the Transit, Peering and Customer sections +Added some tabbing to Interface +Added detection of Net/Open/DragonFlyBSD + +Release 0.2.1 - 19th January 2007 +Modification of graphing disply style +Seperatation of device types +Implementation of storage graphing + +Release 0.2.0 - 20th December 2006 +Cleanup of graphing code +Seperation of customer-accessible interface +Preliminary alerting system + +Release 0.1.2 - Late November 2006 +Graphing of additional server-related data + +Release 0.1.1 - November 2006 +Removal of large amounts of perl. + +Release 0.1.0 - October 2006 +Initial Release. +Basic discovery in place. Graphing in place. + +Feature Waiting List +-------------------- + +* Verification of discovered devices and interfaces +* Serial number tracking +* Manual layer 1 linking +* Service Monitoring +* Alerting +* Temperature Monitoring diff --git a/alerts.php b/alerts.php new file mode 100755 index 0000000000..748089c339 --- /dev/null +++ b/alerts.php @@ -0,0 +1,25 @@ +#!/usr/bin/php + diff --git a/cdp.php b/cdp.php new file mode 100755 index 0000000000..73cd989657 --- /dev/null +++ b/cdp.php @@ -0,0 +1,25 @@ +#!/usr/bin/php +getports(); + $cdp = $snmp->explore_cdp($ports); + + foreach (array_keys($cdp) as $key) { + $port = $ports[$key]; + $link = $cdp[$key]; + $loc_if[$key] = @mysql_result(mysql_query("SELECT `id` FROM `interfaces` WHERE host = '" . $device['id'] . "' AND `if` = '" . $port['desc'] . "'"), 0); + echo( $key . "||" . $hostname . "||" . $loc_if[$key] . "||" . $port['desc'] . "||" . $link['host'] . "||" . $link['port'] . "\n" ); + } + +} + +?> diff --git a/check-device.php b/check-device.php new file mode 100755 index 0000000000..a6166314a4 --- /dev/null +++ b/check-device.php @@ -0,0 +1,150 @@ +#!/usr/bin/php + diff --git a/check-services.php b/check-services.php new file mode 100755 index 0000000000..76dd735842 --- /dev/null +++ b/check-services.php @@ -0,0 +1,30 @@ +#!/usr/bin/php + diff --git a/checkers/check_bl b/checkers/check_bl new file mode 100755 index 0000000000..f0632d27e1 --- /dev/null +++ b/checkers/check_bl @@ -0,0 +1,160 @@ +#!/usr/bin/perl -w +# +# check_bl plugin for nagios +# $Revision: 1.0 $ +# +# Nagios plugin designed to warn you if you mail servers appear in one of the +# many anti-spam 'blacklists' +# +# By Sam Bashton, Bashton Ltd +# bashton.com/content/nagios-plugins +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +use strict; +use lib "/usr/lib/nagios/plugins"; +use utils qw($TIMEOUT %ERRORS &print_revision &support); +use Net::DNS; +use vars qw($PROGNAME); +my ($verbose,$host),; +my ($opt_V,$opt_h,$opt_B,$opt_H,$opt_c); +$opt_V = $opt_h = $opt_B = $opt_H = $opt_c = ''; +my $state = 'UNKNOWN'; +sub print_help(); +sub print_usage(); + +$PROGNAME = "check_bl"; + +$ENV{'BASH_ENV'}=''; +$ENV{'ENV'}=''; +$ENV{'PATH'}=''; +$ENV{'LC_ALL'}='C'; + +use Getopt::Long; +Getopt::Long::Configure('bundling'); +GetOptions( + "V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "H=s" => \$opt_H, "hostname=s" => \$opt_H, + "B=s" => \$opt_B, "blacklists=s" => \$opt_B, + "c=s" => \$opt_c, "critical=s" => \$opt_c +); + +# -h means display verbose help screen +if ($opt_h) { print_help(); exit $ERRORS{'OK'}; } + +# -V means display version number +if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.0 $ '); + exit $ERRORS{'OK'}; +} + +# First check the hostname is OK.. +unless ($opt_H) { print_usage(); exit $ERRORS{'UNKNOWN'}; } + +if (! utils::is_hostname($opt_H)){ + print "$opt_H is not a valid host name\n"; + print_usage(); + exit $ERRORS{"UNKNOWN"}; +}else{ + if ($opt_H =~ /[a-zA-Z]/ ) + # If the host contains letters we assume it's a hostname, not an IP + { + $host = lookup($opt_H); + } + else { $host = $opt_H } +} + + +# $opt_c is a count of the blacklists a mail server is in, +# after which state will be CRITICAL rather than WARNING +# By default any listing is CRITICAL +my $critcount = 0; +if ($opt_c) { $critcount = $opt_c }; + +# $opt_B is a comma seperated list of blacklists +$opt_B = shift unless ($opt_B); +unless ($opt_B) { print_usage(); exit -1 } +my @bls = split(/,/, $opt_B); + + +# Just in case of problems, let's not hang Nagios +$SIG{'ALRM'} = sub { + print ("ERROR: No response from BL server (alarm)\n"); + exit $ERRORS{"UNKNOWN"}; +}; +alarm($TIMEOUT); + +my %listed; # Hash of blacklists we're listed in. +foreach(@bls) +{ + if (blcheck($host,$_)) { $listed{$_} = 1 } +} + +if (scalar(keys(%listed)) == 0) { $state = 'OK' } +elsif (scalar(keys(%listed)) < $critcount) { $state = 'WARNING' } +else { $state = 'CRITICAL' } + +if (%listed) +{ + print "Listed at"; + foreach (keys(%listed)) { print " $_" } + print "\n"; +} +else { print "Not black-listed\n" } + +exit $ERRORS{$state}; + + +######## Subroutines ========================== + + +sub print_help() { + print_revision($PROGNAME,'$Revision: 1.0 $ '); + print "\n"; + support(); +} + +sub print_usage () { + print "Usage: \n"; + print " $PROGNAME -H host -B [blacklist1],[blacklist2] [-c critnum]\n"; + print " $PROGNAME [-h | --help]\n"; + print " $PROGNAME [-V | --version]\n"; +} + +sub blcheck +{ + my ($ip, $bl) = @_; + my $lookupip = $ip; + $lookupip =~ + s/([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/$4.$3.$2.$1.$bl/; + if (lookup($lookupip)) { return 1 } + else { return 0 } +} + +sub lookup +{ + my $tolookup = shift; + my $res = Net::DNS::Resolver->new; + my $query = $res->search($tolookup); + if ($query) + { + foreach my $rr ($query->answer) + { + next unless $rr->type eq "A"; # We're not interested in TXT records + return $rr->address; + } + } +} diff --git a/checkers/check_breeze b/checkers/check_breeze new file mode 100755 index 0000000000..990e981636 --- /dev/null +++ b/checkers/check_breeze @@ -0,0 +1,87 @@ +#! /usr/bin/perl -wT + + +use strict; +use Getopt::Long; +use vars qw($opt_V $opt_h $opt_w $opt_c $opt_H $opt_C $PROGNAME); +use lib "/usr/lib/nagios/plugins" ; +use utils qw(%ERRORS &print_revision &support &usage); + +$PROGNAME = "check_breeze"; + +sub print_help (); +sub print_usage (); + +$ENV{'PATH'}=''; +$ENV{'BASH_ENV'}=''; +$ENV{'ENV'}=''; + +Getopt::Long::Configure('bundling'); +GetOptions + ("V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "w=s" => \$opt_w, "warning=s" => \$opt_w, + "c=s" => \$opt_c, "critical=s" => \$opt_c, + "H=s" => \$opt_H, "hostname=s" => \$opt_H, + "C=s" => \$opt_C, "community=s" => \$opt_C); + +if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.5 $'); + exit $ERRORS{'OK'}; +} + +if ($opt_h) {print_help(); exit $ERRORS{'OK'};} + +($opt_H) || usage("Host name/address not specified\n"); +my $host = $1 if ($opt_H =~ /([-.A-Za-z0-9]+)/); +($host) || usage("Invalid host: $opt_H\n"); + +($opt_w) || usage("Warning threshold not specified\n"); +my $warning = $1 if ($opt_w =~ /([0-9]{1,2}|100)+/); +($warning) || usage("Invalid warning threshold: $opt_w\n"); + +($opt_c) || usage("Critical threshold not specified\n"); +my $critical = $1 if ($opt_c =~ /([0-9]{1,2}|100)/); +($critical) || usage("Invalid critical threshold: $opt_c\n"); + +($opt_C) || ($opt_C = "public") ; + +my $sig=0; +$sig = `/usr/bin/snmpget $host $opt_C .1.3.6.1.4.1.710.3.2.3.1.3.0`; +my @test=split(/ /,$sig); +$sig=$test[2]; +$sig=int($sig); +if ($sig>100){$sig=100} + +print "Signal Strength at: $sig%\n"; + +exit $ERRORS{'CRITICAL'} if ($sig<$critical); +exit $ERRORS{'WARNING'} if ($sig<$warning); +exit $ERRORS{'OK'}; + + +sub print_usage () { + print "Usage: $PROGNAME -H [-C community] -w -c \n"; +} + +sub print_help () { + print_revision($PROGNAME,'$Revision: 1.5 $'); + print "Copyright (c) 2000 Jeffrey Blank/Karl DeBisschop + +This plugin reports the signal strength of a Breezecom wireless equipment + +"; + print_usage(); + print " +-H, --hostname=HOST + Name or IP address of host to check +-C, --community=community + SNMPv1 community (default public) +-w, --warning=INTEGER + Percentage strength below which a WARNING status will result +-c, --critical=INTEGER + Percentage strength below which a CRITICAL status will result + +"; + support(); +} diff --git a/checkers/check_by_ssh b/checkers/check_by_ssh new file mode 100755 index 0000000000..9d3d1e5b18 Binary files /dev/null and b/checkers/check_by_ssh differ diff --git a/checkers/check_dhcp b/checkers/check_dhcp new file mode 100755 index 0000000000..9a4e4a3ef1 Binary files /dev/null and b/checkers/check_dhcp differ diff --git a/checkers/check_dig b/checkers/check_dig new file mode 100755 index 0000000000..cd9af25c86 Binary files /dev/null and b/checkers/check_dig differ diff --git a/checkers/check_disk b/checkers/check_disk new file mode 100755 index 0000000000..26f20d852d Binary files /dev/null and b/checkers/check_disk differ diff --git a/checkers/check_disk_smb b/checkers/check_disk_smb new file mode 100755 index 0000000000..80b3e2d930 --- /dev/null +++ b/checkers/check_disk_smb @@ -0,0 +1,296 @@ +#! /usr/bin/perl -w +# +# +# check_disk.pl [warn] [critical] [port] +# +# Nagios host script to get the disk usage from a SMB share +# +# Changes and Modifications +# ========================= +# 7-Aug-1999 - Michael Anthon +# Created from check_disk.pl script provided with netsaint_statd (basically +# cause I was too lazy (or is that smart?) to write it from scratch) +# 8-Aug-1999 - Michael Anthon +# Modified [warn] and [critical] parameters to accept format of nnn[M|G] to +# allow setting of limits in MBytes or GBytes. Percentage settings for large +# drives is a pain in the butt +# 2-May-2002 - SGhosh fix for embedded perl +# +# $Id: check_disk_smb.pl,v 1.12 2005/04/17 22:22:41 seanius Exp $ +# + +require 5.004; +use POSIX; +use strict; +use Getopt::Long; +use vars qw($opt_P $opt_V $opt_h $opt_H $opt_s $opt_W $opt_u $opt_p $opt_w $opt_c $opt_a $verbose); +use vars qw($PROGNAME); +use lib "/usr/lib/nagios/plugins" ; +use utils qw($TIMEOUT %ERRORS &print_revision &support &usage); + +sub print_help (); +sub print_usage (); + +$PROGNAME = "check_disk_smb"; + +$ENV{'PATH'}=''; +$ENV{'BASH_ENV'}=''; +$ENV{'ENV'}=''; + +Getopt::Long::Configure('bundling'); +GetOptions + ("v" => \$verbose, "verbose" => \$verbose, + "P=s" => \$opt_P, "port=s" => \$opt_P, + "V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "w=s" => \$opt_w, "warning=s" => \$opt_w, + "c=s" => \$opt_c, "critical=s" => \$opt_c, + "p=s" => \$opt_p, "password=s" => \$opt_p, + "u=s" => \$opt_u, "username=s" => \$opt_u, + "s=s" => \$opt_s, "share=s" => \$opt_s, + "W=s" => \$opt_W, "workgroup=s" => \$opt_W, + "H=s" => \$opt_H, "hostname=s" => \$opt_H, + "a=s" => \$opt_a, "address=s" => \$opt_a); + +if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.12 $'); #' + exit $ERRORS{'OK'}; +} + +if ($opt_h) {print_help(); exit $ERRORS{'OK'};} + +my $smbclient= "$utils::PATH_TO_SMBCLIENT " ; +my $smbclientoptions= $opt_P ? "-p $opt_P " : ""; + + +# Options checking + +($opt_H) || ($opt_H = shift) || usage("Host name not specified\n"); +my $host = $1 if ($opt_H =~ /^([-_.A-Za-z0-9 ]+\$?)$/); +($host) || usage("Invalid host: $opt_H\n"); + +($opt_s) || ($opt_s = shift) || usage("Share volume not specified\n"); +my $share = $1 if ($opt_s =~ /^([-_.A-Za-z0-9]+\$?)$/); +($share) || usage("Invalid share: $opt_s\n"); + +($opt_u) || ($opt_u = shift) || ($opt_u = "guest"); +my $user = $1 if ($opt_u =~ /^([-_.A-Za-z0-9\\]+)$/); +($user) || usage("Invalid user: $opt_u\n"); + +($opt_p) || ($opt_p = shift) || ($opt_p = ""); +my $pass = $1 if ($opt_p =~ /(.*)/); + +($opt_w) || ($opt_w = shift) || ($opt_w = 85); +my $warn = $1 if ($opt_w =~ /^([0-9]{1,2}\%?|100\%?|[0-9]+[kMG])$/); +($warn) || usage("Invalid warning threshold: $opt_w\n"); + +($opt_c) || ($opt_c = shift) || ($opt_c = 95); +my $crit = $1 if ($opt_c =~ /^([0-9]{1,2}\%?|100\%?|[0-9]+[kMG])$/); +($crit) || usage("Invalid critical threshold: $opt_c\n"); + +# split the type from the unit value +#Check $warn and $crit for type (%/M/G) and set up for tests +#P = Percent, K = KBytes +my $warn_type; +my $crit_type; + +if ($opt_w =~ /^([0-9]+)\%?$/) { + $warn = "$1"; + $warn_type = "P"; +} elsif ($opt_w =~ /^([0-9]+)k$/) { + $warn_type = "K"; + $warn = $1; +} elsif ($opt_w =~ /^([0-9]+)M$/) { + $warn_type = "K"; + $warn = $1 * 1024; +} elsif ($opt_w =~ /^([0-9]+)G$/) { + $warn_type = "K"; + $warn = $1 * 1048576; +} +if ($opt_c =~ /^([0-9]+)\%?$/) { + $crit = "$1"; + $crit_type = "P"; +} elsif ($opt_c =~ /^([0-9]+)k$/) { + $crit_type = "K"; + $crit = $1; +} elsif ($opt_c =~ /^([0-9]+)M$/) { + $crit_type = "K"; + $crit = $1 * 1024; +} elsif ($opt_c =~ /^([0-9]+)G$/) { + $crit_type = "K"; + $crit = $1 * 1048576; +} + +# check if both warning and critical are percentage or size +unless( ( $warn_type eq "P" && $crit_type eq "P" ) || ( $warn_type ne "P" && $crit_type ne "P" ) ){ + $opt_w =~ s/\%/\%\%/g; + $opt_c =~ s/\%/\%\%/g; + usage("Both warning and critical should be same type- warning: $opt_w critical: $opt_c \n"); +} + +# verify warning is less than critical +if ( $warn_type eq "K") { + unless ( $warn > $crit) { + usage("Disk size: warning ($opt_w) should be greater than critical ($opt_c) \n"); + } +}else{ + unless ( $warn < $crit) { + $opt_w =~ s/\%/\%\%/g; + $opt_c =~ s/\%/\%\%/g; + usage("Percentage: warning ($opt_w) should be less than critical ($opt_c) \n"); + } +} + +my $workgroup = $1 if (defined($opt_W) && $opt_W =~ /(.*)/); + +my $address = $1 if (defined($opt_a) && $opt_a =~ /(.*)/); + +# end of options checking + + +my $state = "OK"; +my $answer = undef; +my $res = undef; +my @lines = undef; + +# Just in case of problems, let's not hang Nagios +$SIG{'ALRM'} = sub { + print "No Answer from Client\n"; + exit $ERRORS{"UNKNOWN"}; +}; +alarm($TIMEOUT); + +# Execute an "ls" on the share using smbclient program +# get the results into $res +if (defined($workgroup)) { + if (defined($address)) { + print "$smbclient " . "\/\/$host\/$share" ." $pass -W $workgroup -U $user $smbclientoptions -I $address -c ls\n" if ($verbose); + $res = qx/$smbclient "\/\/$host\/$share" $pass -W $workgroup -U $user $smbclientoptions -I $address -c ls/; + } else { + print "$smbclient " . "\/\/$host\/$share" ." $pass -W $workgroup -U $user $smbclientoptions -c ls\n" if ($verbose); + $res = qx/$smbclient "\/\/$host\/$share" $pass -W $workgroup -U $user $smbclientoptions -c ls/; + } +} else { + if (defined($address)) { + print "$smbclient " . "\/\/$host\/$share" ." $pass -U $user $smbclientoptions -I $address -c ls\n" if ($verbose); + $res = qx/$smbclient "\/\/$host\/$share" $pass -U $user $smbclientoptions -I $address -c ls/; + } else { + print "$smbclient " . "\/\/$host\/$share" ." $pass -U $user $smbclientoptions -c ls\n" if ($verbose); + $res = qx/$smbclient "\/\/$host\/$share" $pass -U $user $smbclientoptions -c ls/; + } +} +#Turn off alarm +alarm(0); + +#Split $res into an array of lines +@lines = split /\n/, $res; + +#Get the last line into $_ +$_ = $lines[$#lines]; +#print "$_\n"; + +#Process the last line to get free space. +#If line does not match required regexp, return an UNKNOWN error +if (/\s*(\d*) blocks of size (\d*)\. (\d*) blocks available/) { + + my ($avail) = ($3*$2)/1024; + my ($avail_bytes) = $avail; + my ($capper) = int(($3/$1)*100); + my ($mountpt) = "\\\\$host\\$share"; + + + if (int($avail / 1024) > 0) { + $avail = int($avail / 1024); + if (int($avail /1024) > 0) { + $avail = (int(($avail / 1024)*100))/100; + $avail = $avail ."G"; + } else { + $avail = $avail ."M"; + } + } else { + $avail = $avail ."K"; + } + +#print ":$warn:$warn_type:\n"; +#print ":$crit:$crit_type:\n"; +#print ":$avail:$avail_bytes:$capper:$mountpt:\n"; + + if ((($warn_type eq "P") && (100 - $capper) < $warn) || (($warn_type eq "K") && ($avail_bytes > $warn))) { + $answer = "Disk ok - $avail ($capper%) free on $mountpt\n"; + } elsif ((($crit_type eq "P") && (100 - $capper) < $crit) || (($crit_type eq "K") && ($avail_bytes > $crit))) { + $state = "WARNING"; + $answer = "WARNING: Only $avail ($capper%) free on $mountpt\n"; + } else { + $state = "CRITICAL"; + $answer = "CRITICAL: Only $avail ($capper%) free on $mountpt\n"; + } +} else { + $answer = "Result from smbclient not suitable\n"; + $state = "UNKNOWN"; + foreach (@lines) { + if (/(Access denied|NT_STATUS_LOGON_FAILURE)/) { + $answer = "Access Denied\n"; + $state = "CRITICAL"; + last; + } + if (/(Unknown host \w*|Connection.*failed)/) { + $answer = "$1\n"; + $state = "CRITICAL"; + last; + } + if (/(You specified an invalid share name|NT_STATUS_BAD_NETWORK_NAME)/) { + $answer = "Invalid share name \\\\$host\\$share\n"; + $state = "CRITICAL"; + last; + } + } +} + + +print $answer; +print "$state\n" if ($verbose); +exit $ERRORS{$state}; + +sub print_usage () { + print "Usage: $PROGNAME -H -s -u -p + -w -c [-W ] [-P ] [-a ]\n"; +} + +sub print_help () { + print_revision($PROGNAME,'$Revision: 1.12 $'); + print "Copyright (c) 2000 Michael Anthon/Karl DeBisschop + +Perl Check SMB Disk plugin for Nagios + +"; + print_usage(); + print " +-H, --hostname=HOST + NetBIOS name of the server +-s, --share=STRING + Share name to be tested +-W, --workgroup=STRING + Workgroup or Domain used (Defaults to \"WORKGROUP\") +-a, --address=IP + IP-address of HOST (only necessary if HOST is in another network) +-u, --user=STRING + Username to log in to server. (Defaults to \"guest\") +-p, --password=STRING + Password to log in to server. (Defaults to an empty password) +-w, --warning=INTEGER or INTEGER[kMG] + Percent of used space at which a warning will be generated (Default: 85%) + +-c, --critical=INTEGER or INTEGER[kMG] + Percent of used space at which a critical will be generated (Defaults: 95%) +-P, --port=INTEGER + Port to be used to connect to. Some Windows boxes use 139, others 445 (Defaults to smbclient default) + + If thresholds are followed by either a k, M, or G then check to see if that + much disk space is available (kilobytes, Megabytes, Gigabytes) + + Warning percentage should be less than critical + Warning (remaining) disk space should be greater than critical. + +"; + support(); +} diff --git a/checkers/check_dns b/checkers/check_dns new file mode 100755 index 0000000000..02e164e79f Binary files /dev/null and b/checkers/check_dns differ diff --git a/checkers/check_dummy b/checkers/check_dummy new file mode 100755 index 0000000000..e1d1319712 Binary files /dev/null and b/checkers/check_dummy differ diff --git a/checkers/check_file_age b/checkers/check_file_age new file mode 100755 index 0000000000..a1ed17cebb --- /dev/null +++ b/checkers/check_file_age @@ -0,0 +1,113 @@ +#! /usr/bin/perl -w +# $Id: check_file_age.pl,v 1.2 2003/10/21 15:56:35 tonvoon Exp $ + +# check_file_age.pl Copyright (C) 2003 Steven Grimm +# +# Checks a file's size and modification time to make sure it's not empty +# and that it's sufficiently recent. +# +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty +# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# you should have received a copy of the GNU General Public License +# along with this program (or with Nagios); if not, write to the +# Free Software Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA + +use strict; +use English; +use Getopt::Long; +use File::stat; +use vars qw($PROGNAME); +use lib "/usr/lib/nagios/plugins"; +use utils qw (%ERRORS &print_revision &support); + +sub print_help (); +sub print_usage (); + +my ($opt_c, $opt_f, $opt_w, $opt_C, $opt_W, $opt_h, $opt_V); +my ($result, $message, $age, $size, $st); + +$PROGNAME="check_file_age"; + +$opt_w = 240; +$opt_c = 600; +$opt_W = 0; +$opt_C = 0; +$opt_f = ""; + +Getopt::Long::Configure('bundling'); +GetOptions( + "V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "f=s" => \$opt_f, "file" => \$opt_f, + "w=f" => \$opt_w, "warning-age=f" => \$opt_w, + "W=f" => \$opt_W, "warning-size=f" => \$opt_W, + "c=f" => \$opt_c, "critical-age=f" => \$opt_c, + "C=f" => \$opt_C, "critical-size=f" => \$opt_C); + +if ($opt_V) { + print_revision($PROGNAME, '$Id: check_file_age.pl,v 1.2 2003/10/21 15:56:35 tonvoon Exp $'); + exit $ERRORS{'OK'}; +} + +if ($opt_h) { + print_help(); + exit $ERRORS{'OK'}; +} + +$opt_f = shift unless ($opt_f); + +if (! $opt_f) { + print "No file specified\n"; + exit $ERRORS{'UNKNOWN'}; +} + +# Examine the file. +unless (-f $opt_f) { + print "$opt_f: File not found\n"; + exit $ERRORS{'UNKNOWN'}; +} + +$st = File::stat::stat($opt_f); +$age = time - $st->mtime; +$size = $st->size; + + +$result = 'OK'; + +if (($opt_c and $age > $opt_c) or ($opt_C and $size < $opt_C)) { + $result = 'CRITICAL'; +} +elsif (($opt_w and $age > $opt_w) or ($opt_W and $size < $opt_W)) { + $result = 'WARNING'; +} + +print "$result - $opt_f is $age seconds old and $size bytes\n"; +exit $ERRORS{$result}; + +sub print_usage () { + print "Usage:\n"; + print " $PROGNAME [-w ] [-c ] [-W ] [-C ] -f \n"; + print " $PROGNAME [-h | --help]\n"; + print " $PROGNAME [-V | --version]\n"; +} + +sub print_help () { + print_revision($PROGNAME, '$Id: check_file_age.pl,v 1.2 2003/10/21 15:56:35 tonvoon Exp $'); + print "Copyright (c) 2003 Steven Grimm\n\n"; + print_usage(); + print "\n"; + print " File must be no more than this many seconds old\n"; + print " File must be at least this many bytes long\n"; + print "\n"; + support(); +} diff --git a/checkers/check_flexlm b/checkers/check_flexlm new file mode 100755 index 0000000000..f77478a37d --- /dev/null +++ b/checkers/check_flexlm @@ -0,0 +1,245 @@ +#! /usr/bin/perl -w +# +# usage: +# check_flexlm.pl license_file +# +# Check available flexlm license managers. +# Use lmstat to check the status of the license server +# described by the license file given as argument. +# Check and interpret the output of lmstat +# and create returncodes and output. +# +# Contrary to the nagios concept, this script takes +# a file, not a hostname as an argument and returns +# the status of hosts and services described in that +# file. Use these hosts.cfg entries as an example +# +#host[anchor]=any host will do;some.address.com;;check-host-alive;3;120;24x7;1;1;1; +#service[anchor]=yodel;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_flexlm!/opt/lic/licfiles/yodel_lic +#service[anchor]=yeehaw;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_flexlm!/opt/lic/licfiles/yeehaw_lic +#command[check_flexlm]=/some/path/libexec/check_flexlm.pl $ARG1$ +# +# Notes: +# - you need the lmstat utility which comes with flexlm. +# - set the correct path in the variable $lmstat. +# +# initial version: 9-10-99 Ernst-Dieter Martin edmt@infineon.com +# +# License: GPL +# $Id: check_flexlm.pl,v 1.6 2003/02/04 06:16:16 sghosh Exp $ +# +# lmstat output patches from Steve Rigler/Cliff Rice 13-Apr-2002 +# srigler@marathonoil.com,cerice@marathonoil.com + + + +use strict; +use Getopt::Long; +use vars qw($opt_V $opt_h $opt_F $opt_t $verbose $PROGNAME); +use lib "/usr/lib/nagios/plugins"; +use utils qw(%ERRORS &print_revision &support &usage); + +$PROGNAME="check_flexlm"; + +sub print_help (); +sub print_usage (); + +$ENV{'PATH'}=''; +$ENV{'BASH_ENV'}=''; +$ENV{'ENV'}=''; + +Getopt::Long::Configure('bundling'); +GetOptions + ("V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "v" => \$verbose, "verbose" => \$verbose, + "F=s" => \$opt_F, "filename=s" => \$opt_F, + "t=i" => \$opt_t, "timeout=i" => \$opt_t); + +if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.6 $'); + exit $ERRORS{'OK'}; +} + +unless (defined $opt_t) { + $opt_t = $utils::TIMEOUT ; # default timeout +} + + +if ($opt_h) {print_help(); exit $ERRORS{'OK'};} + +unless (defined $opt_F) { + print "Missing license.dat file\n"; + print_usage(); + exit $ERRORS{'UNKNOWN'}; +} +# Just in case of problems, let's not hang Nagios +$SIG{'ALRM'} = sub { + print "Timeout: No Answer from Client\n"; + exit $ERRORS{'UNKNOWN'}; +}; +alarm($opt_t); + +my $lmstat = $utils::PATH_TO_LMSTAT ; +unless (-x $lmstat ) { + print "Cannot find \"lmstat\"\n"; + exit $ERRORS{'UNKNOWN'}; +} + +($opt_F) || ($opt_F = shift) || usage("License file not specified\n"); +my $licfile = $1 if ($opt_F =~ /^(.*)$/); +($licfile) || usage("Invalid filename: $opt_F\n"); + +print "$licfile\n" if $verbose; + +if ( ! open(CMD,"$lmstat -c $licfile |") ) { + print "ERROR: Could not open \"$lmstat -c $licfile\" ($!)\n"; + exit exit $ERRORS{'UNKNOWN'}; +} + +my $serverup = 0; +my @upsrv; +my @downsrv; # list of servers up and down + +#my ($ls1,$ls2,$ls3,$lf1,$lf2,$lf3,$servers); + +# key off of the term "license server" and +# grab the status. Keep going until "Vendor" is found +# + +# +# Collect list of license servers by their status +# Vendor daemon status is ignored for the moment. + +while ( ) { + next if (/^lmstat/); # ignore 1st line - copyright + next if (/^Flexible/); # ignore 2nd line - timestamp + (/^Vendor/) && last; # ignore Vendor daemon status + print $_ if $verbose; + + if ($_ =~ /license server /) { # matched 1 (of possibly 3) license server + s/^\s*//; #some servers start at col 1, other have whitespace + # strip staring whitespace if any + if ( $_ =~ /UP/) { + $_ =~ /^(.*):/ ; + push(@upsrv, $1); + print "up:$1:\n" if $verbose; + } else { + $_ =~ /^(.*):/; + push(@downsrv, $1); + print "down:$1:\n" if $verbose; + } + + } + + +# if ( /^License server status: [0-9]*@([-0-9a-zA-Z_]*),[0-9]*@([-0-9a-zA-Z_]*),[0-9]*@([-0-9a-zA-Z_]*)/ ) { +# $ls1 = $1; +# $ls2 = $2; +# $ls3 = $3; +# $lf1 = $lf2 = $lf3 = 0; +# $servers = 3; +# } elsif ( /^License server status: [0-9]*@([-0-9a-zA-Z_]*)/ ) { +# $ls1 = $1; +# $ls2 = $ls3 = ""; +# $lf1 = $lf2 = $lf3 = 0; +# $servers = 1; +# } elsif ( / *$ls1: license server UP/ ) { +# print "$ls1 UP, "; +# $lf1 = 1 +# } elsif ( / *$ls2: license server UP/ ) { +# print "$ls2 UP, "; +# $lf2 = 1 +# } elsif ( / *$ls3: license server UP/ ) { +# print "$ls3 UP, "; +# $lf3 = 1 +# } elsif ( / *([^:]*: UP .*)/ ) { +# print " license server for $1\n"; +# $serverup = 1; +# } + +} + +#if ( $serverup == 0 ) { +# print " license server not running\n"; +# exit 2; +#} + +close CMD; + +if ($verbose) { + print "License Servers running: ".scalar(@upsrv) ."\n"; + foreach my $upserver (@upsrv) { + print "$upserver\n"; + } + print "License servers not running: ".scalar(@downsrv)."\n"; + foreach my $downserver (@downsrv) { + print "$downserver\n"; + } +} + +# +# print list of servers which are up. +# +if (scalar(@upsrv) > 0) { + print "License Servers running:"; + foreach my $upserver (@upsrv) { + print "$upserver,"; + } +} +# +# Ditto for those which are down. +# +if (scalar(@downsrv) > 0) { + print "License servers NOT running:"; + foreach my $downserver (@downsrv) { + print "$downserver,"; + } +} + +# perfdata +print "\n|flexlm::up:".scalar(@upsrv).";down:".scalar(@downsrv)."\n"; + +exit $ERRORS{'OK'} if ( scalar(@downsrv) == 0 ); +exit $ERRORS{'WARNING'} if ( (scalar(@upsrv) > 0) && (scalar(@downsrv) > 0)); + +#exit $ERRORS{'OK'} if ( $servers == $lf1 + $lf2 + $lf3 ); +#exit $ERRORS{'WARNING'} if ( $servers == 3 && $lf1 + $lf2 + $lf3 == 2 ); +exit $ERRORS{'CRITICAL'}; + + +sub print_usage () { + print "Usage: + $PROGNAME -F [-v] [-t] [-V] [-h] + $PROGNAME --help + $PROGNAME --version +"; +} + +sub print_help () { + print_revision($PROGNAME,'$Revision: 1.6 $'); + print "Copyright (c) 2000 Ernst-Dieter Martin/Karl DeBisschop + +Check available flexlm license managers + +"; + print_usage(); + print " +-F, --filename=FILE + Name of license file (usually \"license.dat\") +-v, --verbose + Print some extra debugging information (not advised for normal operation) +-t, --timeout + Plugin time out in seconds (default = $utils::TIMEOUT ) +-V, --version + Show version and license information +-h, --help + Show this help screen + +Flexlm license managers usually run as a single server or three servers and a +quorum is needed. The plugin return OK if 1 (single) or 3 (triple) servers +are running, CRITICAL if 1(single) or 3 (triple) servers are down, and WARNING +if 1 or 2 of 3 servers are running\n +"; + support(); +} diff --git a/checkers/check_fping b/checkers/check_fping new file mode 100755 index 0000000000..27f4bf8179 Binary files /dev/null and b/checkers/check_fping differ diff --git a/checkers/check_ftp b/checkers/check_ftp new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_ftp @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_game b/checkers/check_game new file mode 100755 index 0000000000..f1b47bb4e5 Binary files /dev/null and b/checkers/check_game differ diff --git a/checkers/check_hpjd b/checkers/check_hpjd new file mode 100755 index 0000000000..e59a7c1f8d Binary files /dev/null and b/checkers/check_hpjd differ diff --git a/checkers/check_http b/checkers/check_http new file mode 100755 index 0000000000..a0520d4e60 Binary files /dev/null and b/checkers/check_http differ diff --git a/checkers/check_icmp b/checkers/check_icmp new file mode 100755 index 0000000000..aba7da4579 Binary files /dev/null and b/checkers/check_icmp differ diff --git a/checkers/check_ifoperstatus b/checkers/check_ifoperstatus new file mode 100755 index 0000000000..91c9b333c0 --- /dev/null +++ b/checkers/check_ifoperstatus @@ -0,0 +1,505 @@ +#! /usr/bin/perl -w +# +# check_ifoperstatus.pl - nagios plugin +# +# Copyright (C) 2000 Christoph Kron, +# Modified 5/2002 to conform to updated Nagios Plugin Guidelines +# Added support for named interfaces per Valdimir Ivaschenko (S. Ghosh) +# Added SNMPv3 support (10/2003) +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +# Report bugs to: nagiosplug-help@lists.sourceforge.net +# +# 11.01.2000 Version 1.0 +# $Id: check_ifoperstatus.pl,v 1.6 2004/12/07 03:13:14 mattkent Exp $ +# +# Patches from Guy Van Den Bergh to warn on ifadminstatus down interfaces +# instead of critical. +# +# Primary MIB reference - RFC 2863 + + +use POSIX; +use strict; +use lib "/usr/lib/nagios/plugins" ; +use utils qw($TIMEOUT %ERRORS &print_revision &support); + +use Net::SNMP; +use Getopt::Long; +&Getopt::Long::config('bundling'); + +my $PROGNAME = "check_ifoperstatus"; +sub print_help (); +sub usage (); +sub process_arguments (); + +my $timeout; +my $status; +my %ifOperStatus = ('1','up', + '2','down', + '3','testing', + '4','unknown', + '5','dormant', + '6','notPresent', + '7','lowerLayerDown'); # down due to the state of lower layer interface(s) + +my $state = "UNKNOWN"; +my $answer = ""; +my $snmpkey = 0; +my $community = "public"; +my $maxmsgsize = 1472 ; # Net::SNMP default is 1472 +my ($seclevel, $authproto, $secname, $authpass, $privpass, $auth, $priv, $context); +my $port = 161; +my @snmpoids; +my $sysUptime = '1.3.6.1.2.1.1.3.0'; +my $snmpIfDescr = '1.3.6.1.2.1.2.2.1.2'; +my $snmpIfAdminStatus = '1.3.6.1.2.1.2.2.1.7'; +my $snmpIfOperStatus = '1.3.6.1.2.1.2.2.1.8'; +my $snmpIfName = '1.3.6.1.2.1.31.1.1.1.1'; +my $snmpIfLastChange = '1.3.6.1.2.1.2.2.1.9'; +my $snmpIfAlias = '1.3.6.1.2.1.31.1.1.1.18'; +my $snmpLocIfDescr = '1.3.6.1.4.1.9.2.2.1.1.28'; +my $hostname; +my $ifName; +my $session; +my $error; +my $response; +my $snmp_version = 1 ; +my $ifXTable; +my $opt_h ; +my $opt_V ; +my $ifdescr; +my $key; +my $lastc; +my $dormantWarn; +my $adminWarn; +my $name; + +### Validate Arguments + +$status = process_arguments(); + + +# Just in case of problems, let's not hang Nagios +$SIG{'ALRM'} = sub { + print ("ERROR: No snmp response from $hostname (alarm)\n"); + exit $ERRORS{"UNKNOWN"}; +}; + +alarm($timeout); + + +## map ifdescr to ifindex - should look at being able to cache this value + +if (defined $ifdescr) { + # escape "/" in ifdescr - very common in the Cisco world + $ifdescr =~ s/\//\\\//g; + + $status=fetch_ifdescr(); # if using on device with large number of interfaces + # recommend use of SNMP v2 (get-bulk) + if ($status==0) { + $state = "UNKNOWN"; + printf "$state: could not retrive ifdescr snmpkey - $status-$snmpkey\n"; + $session->close; + exit $ERRORS{$state}; + } +} + + +## Main function + +$snmpIfAdminStatus = $snmpIfAdminStatus . "." . $snmpkey; +$snmpIfOperStatus = $snmpIfOperStatus . "." . $snmpkey; +$snmpIfDescr = $snmpIfDescr . "." . $snmpkey; +$snmpIfName = $snmpIfName . "." . $snmpkey ; +$snmpIfAlias = $snmpIfAlias . "." . $snmpkey ; + +push(@snmpoids,$snmpIfAdminStatus); +push(@snmpoids,$snmpIfOperStatus); +push(@snmpoids,$snmpIfDescr); +push(@snmpoids,$snmpIfName) if (defined $ifXTable) ; +push(@snmpoids,$snmpIfAlias) if (defined $ifXTable) ; + + if (!defined($response = $session->get_request(@snmpoids))) { + $answer=$session->error; + $session->close; + $state = 'WARNING'; + print ("$state: SNMP error: $answer\n"); + exit $ERRORS{$state}; + } + + $answer = sprintf("host '%s', %s(%s) is %s\n", + $hostname, + $response->{$snmpIfDescr}, + $snmpkey, + $ifOperStatus{$response->{$snmpIfOperStatus}} + ); + + + ## Check to see if ifName match is requested and it matches - exit if no match + ## not the interface we want to monitor + if ( defined $name && not ($response->{$snmpIfName} eq $name) ) { + $state = 'UNKNOWN'; + $answer = "Interface name ($name) doesn't match snmp value ($response->{$snmpIfName}) (index $snmpkey)"; + print ("$state: $answer"); + exit $ERRORS{$state}; + } + + ## define the interface name + if (defined $ifXTable) { + $name = $response->{$snmpIfName} ." - " .$response->{$snmpIfAlias} ; + }else{ + $name = $response->{$snmpIfDescr} ; + } + + ## if AdminStatus is down - some one made a consious effort to change config + ## + if ( not ($response->{$snmpIfAdminStatus} == 1) ) { + $answer = "Interface $name (index $snmpkey) is administratively down."; + if ( not defined $adminWarn or $adminWarn eq "w" ) { + $state = 'WARNING'; + } elsif ( $adminWarn eq "i" ) { + $state = 'OK'; + } elsif ( $adminWarn eq "c" ) { + $state = 'CRITICAL'; + } else { # If wrong value for -a, say warning + $state = 'WARNING'; + } + } + ## Check operational status + elsif ( $response->{$snmpIfOperStatus} == 2 ) { + $state = 'CRITICAL'; + $answer = "Interface $name (index $snmpkey) is down."; + } elsif ( $response->{$snmpIfOperStatus} == 5 ) { + if (defined $dormantWarn ) { + if ($dormantWarn eq "w") { + $state = 'WARNING'; + $answer = "Interface $name (index $snmpkey) is dormant."; + }elsif($dormantWarn eq "c") { + $state = 'CRITICAL'; + $answer = "Interface $name (index $snmpkey) is dormant."; + }elsif($dormantWarn eq "i") { + $state = 'OK'; + $answer = "Interface $name (index $snmpkey) is dormant."; + } + }else{ + # dormant interface - but warning/critical/ignore not requested + $state = 'CRITICAL'; + $answer = "Interface $name (index $snmpkey) is dormant."; + } + } elsif ( $response->{$snmpIfOperStatus} == 6 ) { + $state = 'CRITICAL'; + $answer = "Interface $name (index $snmpkey) notPresent - possible hotswap in progress."; + } elsif ( $response->{$snmpIfOperStatus} == 7 ) { + $state = 'CRITICAL'; + $answer = "Interface $name (index $snmpkey) down due to lower layer being down."; + + } elsif ( $response->{$snmpIfOperStatus} == 3 || $response->{$snmpIfOperStatus} == 4 ) { + $state = 'CRITICAL'; + $answer = "Interface $name (index $snmpkey) down (testing/unknown)."; + + } else { + $state = 'OK'; + $answer = "Interface $name (index $snmpkey) is up."; + } + + + +print ("$state: $answer"); +exit $ERRORS{$state}; + + +### subroutines + +sub fetch_ifdescr { + if (!defined ($response = $session->get_table($snmpIfDescr))) { + $answer=$session->error; + $session->close; + $state = 'CRITICAL'; + printf ("$state: SNMP error with snmp version $snmp_version ($answer)\n"); + $session->close; + exit $ERRORS{$state}; + } + + foreach $key ( keys %{$response}) { + if ($response->{$key} =~ /^$ifdescr$/) { + $key =~ /.*\.(\d+)$/; + $snmpkey = $1; + #print "$ifdescr = $key / $snmpkey \n"; #debug + } + } + unless (defined $snmpkey) { + $session->close; + $state = 'CRITICAL'; + printf "$state: Could not match $ifdescr on $hostname\n"; + exit $ERRORS{$state}; + } + + return $snmpkey; +} + +sub usage() { + printf "\nMissing arguments!\n"; + printf "\n"; + printf "usage: \n"; + printf "check_ifoperstatus -k -H [-C ]\n"; + printf "Copyright (C) 2000 Christoph Kron\n"; + printf "check_ifoperstatus.pl comes with ABSOLUTELY NO WARRANTY\n"; + printf "This programm is licensed under the terms of the "; + printf "GNU General Public License\n(check source code for details)\n"; + printf "\n\n"; + exit $ERRORS{"UNKNOWN"}; +} + +sub print_help() { + printf "check_ifoperstatus plugin for Nagios monitors operational \n"; + printf "status of a particular network interface on the target host\n"; + printf "\nUsage:\n"; + printf " -H (--hostname) Hostname to query - (required)\n"; + printf " -C (--community) SNMP read community (defaults to public,\n"; + printf " used with SNMP v1 and v2c\n"; + printf " -v (--snmp_version) 1 for SNMP v1 (default)\n"; + printf " 2 for SNMP v2c\n"; + printf " SNMP v2c will use get_bulk for less overhead\n"; + printf " if monitoring with -d\n"; + printf " -L (--seclevel) choice of \"noAuthNoPriv\", \"authNoPriv\", or \"authPriv\"\n"; + printf " -U (--secname) username for SNMPv3 context\n"; + printf " -c (--context) SNMPv3 context name (default is empty string)"; + printf " -A (--authpass) authentication password (cleartext ascii or localized key\n"; + printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; + printf " auth password and authEngineID\n"; + printf " -a (--authproto) Authentication protocol ( MD5 or SHA1)\n"; + printf " -X (--privpass) privacy password (cleartext ascii or localized key\n"; + printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; + printf " privacy password and authEngineID\n"; + printf " -k (--key) SNMP IfIndex value\n"; + printf " -d (--descr) SNMP ifDescr value\n"; + printf " -p (--port) SNMP port (default 161)\n"; + printf " -I (--ifmib) Agent supports IFMIB ifXTable. Do not use if\n"; + printf " you don't know what this is. \n"; + printf " -n (--name) the value should match the returned ifName\n"; + printf " (Implies the use of -I)\n"; + printf " -w (--warn =i|w|c) ignore|warn|crit if the interface is dormant (default critical)\n"; + printf " -D (--admin-down =i|w|c) same for administratively down interfaces (default warning)\n"; + printf " -M (--maxmsgsize) Max message size - usefull only for v1 or v2c\n"; + printf " -t (--timeout) seconds before the plugin times out (default=$TIMEOUT)\n"; + printf " -V (--version) Plugin version\n"; + printf " -h (--help) usage help \n\n"; + printf " -k or -d must be specified\n\n"; + printf "Note: either -k or -d must be specified and -d is much more network \n"; + printf "intensive. Use it sparingly or not at all. -n is used to match against\n"; + printf "a much more descriptive ifName value in the IfXTable to verify that the\n"; + printf "snmpkey has not changed to some other network interface after a reboot.\n\n"; + print_revision($PROGNAME, '$Revision: 1.6 $'); + +} + +sub process_arguments() { + $status = GetOptions( + "V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "v=i" => \$snmp_version, "snmp_version=i" => \$snmp_version, + "C=s" => \$community, "community=s" => \$community, + "L=s" => \$seclevel, "seclevel=s" => \$seclevel, + "a=s" => \$authproto, "authproto=s" => \$authproto, + "U=s" => \$secname, "secname=s" => \$secname, + "A=s" => \$authpass, "authpass=s" => \$authpass, + "X=s" => \$privpass, "privpass=s" => \$privpass, + "c=s" => \$context, "context=s" => \$context, + "k=i" => \$snmpkey, "key=i",\$snmpkey, + "d=s" => \$ifdescr, "descr=s" => \$ifdescr, + "l=s" => \$lastc, "lastchange=s" => \$lastc, + "p=i" => \$port, "port=i" =>\$port, + "H=s" => \$hostname, "hostname=s" => \$hostname, + "I" => \$ifXTable, "ifmib" => \$ifXTable, + "n=s" => \$ifName, "name=s" => \$ifName, + "w=s" => \$dormantWarn, "warn=s" => \$dormantWarn, + "D=s" => \$adminWarn, "admin-down=s" => \$adminWarn, + "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize, + "t=i" => \$timeout, "timeout=i" => \$timeout, + ); + + + + if ($status == 0){ + print_help(); + exit $ERRORS{'OK'}; + } + + if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.6 $ '); + exit $ERRORS{'OK'}; + } + + if ($opt_h) { + print_help(); + exit $ERRORS{'OK'}; + } + + if (! utils::is_hostname($hostname)){ + usage(); + exit $ERRORS{"UNKNOWN"}; + } + + + unless ($snmpkey > 0 || defined $ifdescr){ + printf "Either a valid snmpkey key (-k) or a ifDescr (-d) must be provided)\n"; + usage(); + exit $ERRORS{"UNKNOWN"}; + } + + + if (defined $name) { + $ifXTable=1; + } + + if (defined $dormantWarn) { + unless ($dormantWarn =~ /^(w|c|i)$/ ) { + printf "Dormant alerts must be one of w|c|i \n"; + exit $ERRORS{'UNKNOWN'}; + } + } + + unless (defined $timeout) { + $timeout = $TIMEOUT; + } + + if ($snmp_version =~ /3/ ) { + # Must define a security level even though default is noAuthNoPriv + # v3 requires a security username + if (defined $seclevel && defined $secname) { + + # Must define a security level even though defualt is noAuthNoPriv + unless ($seclevel eq ('noAuthNoPriv' || 'authNoPriv' || 'authPriv' ) ) { + usage(); + exit $ERRORS{"UNKNOWN"}; + } + + # Authentication wanted + if ($seclevel eq ('authNoPriv' || 'authPriv') ) { + + unless ($authproto eq ('MD5' || 'SHA1') ) { + usage(); + exit $ERRORS{"UNKNOWN"}; + } + + if ( !defined $authpass) { + usage(); + exit $ERRORS{"UNKNOWN"}; + }else{ + if ($authpass =~ /^0x/ ) { + $auth = "-authkey => $authpass" ; + }else{ + $auth = "-authpassword => $authpass"; + } + } + + } + + # Privacy (DES encryption) wanted + if ($seclevel eq 'authPriv' ) { + if (! defined $privpass) { + usage(); + exit $ERRORS{"UNKNOWN"}; + }else{ + if ($privpass =~ /^0x/){ + $priv = "-privkey => $privpass"; + }else{ + $priv = "-privpassword => $privpass"; + } + } + } + + # Context name defined or default + + unless ( defined $context) { + $context = ""; + } + + + + }else { + usage(); + exit $ERRORS{'UNKNOWN'}; ; + } + } # end snmpv3 + + + if ( $snmp_version =~ /[12]/ ) { + ($session, $error) = Net::SNMP->session( + -hostname => $hostname, + -community => $community, + -port => $port, + -version => $snmp_version, + -maxmsgsize => $maxmsgsize + ); + + if (!defined($session)) { + $state='UNKNOWN'; + $answer=$error; + print ("$state: $answer"); + exit $ERRORS{$state}; + } + + }elsif ( $snmp_version =~ /3/ ) { + + if ($seclevel eq 'noAuthNoPriv') { + ($session, $error) = Net::SNMP->session( + -hostname => $hostname, + -port => $port, + -version => $snmp_version, + -username => $secname, + ); + + }elsif ( $seclevel eq 'authNoPriv' ) { + ($session, $error) = Net::SNMP->session( + -hostname => $hostname, + -port => $port, + -version => $snmp_version, + -username => $secname, + $auth, + -authprotocol => $authproto, + ); + }elsif ($seclevel eq 'authPriv' ) { + ($session, $error) = Net::SNMP->session( + -hostname => $hostname, + -port => $port, + -version => $snmp_version, + -username => $secname, + $auth, + -authprotocol => $authproto, + $priv + ); + } + + + if (!defined($session)) { + $state='UNKNOWN'; + $answer=$error; + print ("$state: $answer"); + exit $ERRORS{$state}; + } + + }else{ + $state='UNKNOWN'; + print ("$state: No support for SNMP v$snmp_version yet\n"); + exit $ERRORS{$state}; + } + +} +## End validation + diff --git a/checkers/check_ifstatus b/checkers/check_ifstatus new file mode 100755 index 0000000000..3f3d70234f --- /dev/null +++ b/checkers/check_ifstatus @@ -0,0 +1,459 @@ +#! /usr/bin/perl -w +# +# check_ifstatus.pl - nagios plugin +# +# +# Copyright (C) 2000 Christoph Kron +# Modified 5/2002 to conform to updated Nagios Plugin Guidelines (S. Ghosh) +# Added -x option (4/2003) +# Added -u option (4/2003) +# Added -M option (10/2003) +# Added SNMPv3 support (10/2003) +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +# Report bugs to: ck@zet.net, nagiosplug-help@lists.sf.net +# +# 11.01.2000 Version 1.0 +# +# $Id: check_ifstatus.pl,v 1.9 2004/08/18 19:51:35 tonvoon Exp $ + +use POSIX; +use strict; +use lib "/usr/lib/nagios/plugins" ; +use utils qw($TIMEOUT %ERRORS &print_revision &support); + +use Net::SNMP; +use Getopt::Long; +Getopt::Long::Configure('bundling'); + +my $PROGNAME = "check_ifstatus"; + +sub print_help (); +sub usage (); +sub process_arguments (); + + +my $status; +my %ifOperStatus = ('1','up', + '2','down', + '3','testing', + '4','unknown', + '5','dormant', + '6','notPresent', + '7','lowerLayerDown'); # down due to the state of lower layer interface(s)); + +my $timeout ; +my $state = "UNKNOWN"; +my $answer = ""; +my $snmpkey=0; +my $snmpoid=0; +my $key=0; +my $community = "public"; +my $maxmsgsize = 1472 ; # Net::SNMP default is 1472 +my ($seclevel, $authproto, $secname, $authpass, $privpass, $auth, $priv, $context); +my $port = 161; +my @snmpoids; +my $snmpIfAdminStatus = '1.3.6.1.2.1.2.2.1.7'; +my $snmpIfDescr = '1.3.6.1.2.1.2.2.1.2'; +my $snmpIfOperStatus = '1.3.6.1.2.1.2.2.1.8'; +my $snmpIfName = '1.3.6.1.2.1.31.1.1.1.1'; +my $snmpIfAlias = '1.3.6.1.2.1.31.1.1.1.18'; +my $snmpLocIfDescr = '1.3.6.1.4.1.9.2.2.1.1.28'; +my $snmpIfType = '1.3.6.1.2.1.2.2.1.3'; +my $hostname; +my $session; +my $error; +my $response; +my %ifStatus; +my $ifup =0 ; +my $ifdown =0; +my $ifdormant = 0; +my $ifexclude = 0 ; +my $ifunused = 0; +my $ifmessage = ""; +my $snmp_version = 1; +my $ifXTable; +my $opt_h ; +my $opt_V ; +my $opt_u; +my $opt_x ; +my %excluded ; +my @unused_ports ; + + + + + +# Just in case of problems, let's not hang Nagios +$SIG{'ALRM'} = sub { + print ("ERROR: No snmp response from $hostname (alarm timeout)\n"); + exit $ERRORS{"UNKNOWN"}; +}; + + +#Option checking +$status = process_arguments(); + +if ($status != 0) +{ + print_help() ; + exit $ERRORS{'OK'}; +} + + +alarm($timeout); + +push(@snmpoids,$snmpIfOperStatus); +push(@snmpoids,$snmpIfAdminStatus); +push(@snmpoids,$snmpIfDescr); +push(@snmpoids,$snmpIfType); +push(@snmpoids,$snmpIfName) if ( defined $ifXTable); +push(@snmpoids,$snmpIfAlias) if ( defined $ifXTable); + + + + +foreach $snmpoid (@snmpoids) { + + if (!defined($response = $session->get_table($snmpoid))) { + $answer=$session->error; + $session->close; + $state = 'CRITICAL'; + if ( ( $snmpoid =~ $snmpIfName ) && defined $ifXTable ) { + print ("$state: Device does not support ifTable - try without -I option\n"); + }else{ + print ("$state: $answer for $snmpoid with snmp version $snmp_version\n"); + } + exit $ERRORS{$state}; + } + + foreach $snmpkey (keys %{$response}) { + $snmpkey =~ /.*\.(\d+)$/; + $key = $1; + $ifStatus{$key}{$snmpoid} = $response->{$snmpkey}; + } +} + + +$session->close; + +alarm(0); + +foreach $key (keys %ifStatus) { + + # skip unused interfaces + if (!defined($ifStatus{$key}{'notInUse'})) { + # check only if interface is administratively up + if ($ifStatus{$key}{$snmpIfAdminStatus} == 1 ) { + + # check only if interface type is not listed in %excluded + if (!defined $excluded{$ifStatus{$key}{$snmpIfType}} ) { + if ($ifStatus{$key}{$snmpIfOperStatus} == 1 ) { $ifup++ ;} + if ($ifStatus{$key}{$snmpIfOperStatus} == 2 ) { + $ifdown++ ; + if (defined $ifXTable) { + $ifmessage .= sprintf("%s: down -> %s
", + $ifStatus{$key}{$snmpIfName}, + $ifStatus{$key}{$snmpIfAlias}); + }else{ + $ifmessage .= sprintf("%s: down
", + $ifStatus{$key}{$snmpIfDescr}); + } + } + if ($ifStatus{$key}{$snmpIfOperStatus} == 5 ) { $ifdormant++ ;} + }else{ + $ifexclude++; + } + + } + }else{ + $ifunused++; + } +} + + if ($ifdown > 0) { + $state = 'CRITICAL'; + $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d
", + $hostname, + $ifup, + $ifdown, + $ifdormant, + $ifexclude, + $ifunused); + $answer = $answer . $ifmessage . "\n"; + } + else { + $state = 'OK'; + $answer = sprintf("host '%s', interfaces up: %d, down: %d, dormant: %d, excluded: %d, unused: %d", + $hostname, + $ifup, + $ifdown, + $ifdormant, + $ifexclude, + $ifunused); + } +my $perfdata = sprintf("up=%d,down=%d,dormant=%d,excluded=%d,unused=%d",$ifup,$ifdown,$ifdormant,$ifexclude,$ifunused); +print ("$state: $answer |$perfdata\n"); +exit $ERRORS{$state}; + + +sub usage (){ + printf "\nMissing arguments!\n"; + printf "\n"; + printf "check_ifstatus -C -p -H \n"; + printf "Copyright (C) 2000 Christoph Kron\n"; + printf "Updates 5/2002 Subhendu Ghosh\n"; + printf "\n\n"; + support(); + exit $ERRORS{"UNKNOWN"}; +} + +sub print_help (){ + printf "check_ifstatus plugin for Nagios monitors operational \n"; + printf "status of each network interface on the target host\n"; + printf "\nUsage:\n"; + printf " -H (--hostname) Hostname to query - (required)\n"; + printf " -C (--community) SNMP read community (defaults to public,\n"; + printf " used with SNMP v1 and v2c\n"; + printf " -v (--snmp_version) 1 for SNMP v1 (default)\n"; + printf " 2 for SNMP v2c\n"; + printf " SNMP v2c will use get_bulk for less overhead\n"; + printf " 3 for SNMPv3 (requires -U option)"; + printf " -p (--port) SNMP port (default 161)\n"; + printf " -I (--ifmib) Agent supports IFMIB ifXTable. For Cisco - this will provide\n"; + printf " the descriptive name. Do not use if you don't know what this is. \n"; + printf " -x (--exclude) A comma separated list of ifType values that should be excluded \n"; + printf " from the report (default for an empty list is PPP(23).\n"; + printf " -u (--unused_ports) A comma separated list of ifIndex values that should be excluded \n"; + printf " from the report (default is an empty exclusion list).\n"; + printf " See the IANAifType-MIB for a list of interface types.\n"; + printf " -L (--seclevel) choice of \"noAuthNoPriv\", \"authNoPriv\", or \"authPriv\"\n"; + printf " -U (--secname) username for SNMPv3 context\n"; + printf " -c (--context) SNMPv3 context name (default is empty string)"; + printf " -A (--authpass) authentication password (cleartext ascii or localized key\n"; + printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; + printf " auth password and authEngineID\n"; + printf " -a (--authproto) Authentication protocol ( MD5 or SHA1)\n"; + printf " -X (--privpass) privacy password (cleartext ascii or localized key\n"; + printf " in hex with 0x prefix generated by using \"snmpkey\" utility\n"; + printf " privacy password and authEngineID\n"; + printf " -M (--maxmsgsize) Max message size - usefull only for v1 or v2c\n"; + printf " -t (--timeout) seconds before the plugin times out (default=$TIMEOUT)\n"; + printf " -V (--version) Plugin version\n"; + printf " -h (--help) usage help \n\n"; + print_revision($PROGNAME, '$Revision: 1.9 $'); + +} + +sub process_arguments() { + $status = GetOptions( + "V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "v=i" => \$snmp_version, "snmp_version=i" => \$snmp_version, + "C=s" => \$community,"community=s" => \$community, + "L=s" => \$seclevel, "seclevel=s" => \$seclevel, + "a=s" => \$authproto, "authproto=s" => \$authproto, + "U=s" => \$secname, "secname=s" => \$secname, + "A=s" => \$authpass, "authpass=s" => \$authpass, + "X=s" => \$privpass, "privpass=s" => \$privpass, + "c=s" => \$context, "context=s" => \$context, + "p=i" =>\$port, "port=i" => \$port, + "H=s" => \$hostname, "hostname=s" => \$hostname, + "I" => \$ifXTable, "ifmib" => \$ifXTable, + "x:s" => \$opt_x, "exclude:s" => \$opt_x, + "u=s" => \$opt_u, "unused_ports=s" => \$opt_u, + "M=i" => \$maxmsgsize, "maxmsgsize=i" => \$maxmsgsize, + "t=i" => \$timeout, "timeout=i" => \$timeout, + ); + + if ($status == 0){ + print_help() ; + exit $ERRORS{'OK'}; + } + if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.9 $ '); + exit $ERRORS{'OK'}; + } + + if ($opt_h) { + print_help(); + exit $ERRORS{'OK'}; + } + + unless (defined $timeout) { + $timeout = $TIMEOUT; + } + + if ($snmp_version =~ /3/ ) { + # Must define a security level even though default is noAuthNoPriv + # v3 requires a security username + if (defined $seclevel && defined $secname) { + + # Must define a security level even though defualt is noAuthNoPriv + unless ($seclevel eq ('noAuthNoPriv' || 'authNoPriv' || 'authPriv' ) ) { + usage(); + exit $ERRORS{"UNKNOWN"}; + } + + # Authentication wanted + if ($seclevel eq ('authNoPriv' || 'authPriv') ) { + + unless ($authproto eq ('MD5' || 'SHA1') ) { + usage(); + exit $ERRORS{"UNKNOWN"}; + } + + if ( !defined $authpass) { + usage(); + exit $ERRORS{"UNKNOWN"}; + }else{ + if ($authpass =~ /^0x/ ) { + $auth = "-authkey => $authpass" ; + }else{ + $auth = "-authpassword => $authpass"; + } + } + + } + + # Privacy (DES encryption) wanted + if ($seclevel eq 'authPriv' ) { + if (! defined $privpass) { + usage(); + exit $ERRORS{"UNKNOWN"}; + }else{ + if ($privpass =~ /^0x/){ + $priv = "-privkey => $privpass"; + }else{ + $priv = "-privpassword => $privpass"; + } + } + } + + # Context name defined or default + + unless ( defined $context) { + $context = ""; + } + + + + }else { + usage(); + exit $ERRORS{'UNKNOWN'}; ; + } + } # end snmpv3 + + # for snmp v1 & v2c we default to community = "public" + + # Excluded interfaces types (ifType) (backup interfaces, dial-on demand interfaces, PPP interfaces + if (defined $opt_x) { + my @x = split(/,/, $opt_x); + if ( @x) { + foreach $key (@x){ + $excluded{$key} = 1; + } + }else{ + $excluded{23} = 1; # default PPP(23) if empty list - note (AIX seems to think PPP is 22 according to a post) + } + } + + # Excluded interface ports (ifIndex) - management reasons + if ($opt_u) { + @unused_ports = split(/,/,$opt_u); + foreach $key (@unused_ports) { + $ifStatus{$key}{'notInUse'}++ ; + } + } + + if (! utils::is_hostname($hostname)){ + usage(); + exit $ERRORS{"UNKNOWN"}; + } + + # create SNMP session handle based on options passed. + + if ( ! $snmp_version ) { + $snmp_version =1 ; + }else{ + if ( $snmp_version =~ /[12]/ ) { + + ($session, $error) = Net::SNMP->session( + -hostname => $hostname, + -community => $community, + -port => $port, + -version => $snmp_version, + -maxmsgsize => $maxmsgsize + ); + + if (!defined($session)) { + $state='UNKNOWN'; + $answer=$error; + print ("$state: $answer"); + exit $ERRORS{$state}; + } + + + }elsif ( $snmp_version =~ /3/ ) { + + if ($seclevel eq 'noAuthNoPriv') { + ($session, $error) = Net::SNMP->session( + -hostname => $hostname, + -port => $port, + -version => $snmp_version, + -username => $secname, + ); + + }elsif ( $seclevel eq 'authNoPriv' ) { + ($session, $error) = Net::SNMP->session( + -hostname => $hostname, + -port => $port, + -version => $snmp_version, + -username => $secname, + -authprotocol => $authproto, + $auth + ); + }elsif ($seclevel eq 'authPriv' ) { + ($session, $error) = Net::SNMP->session( + -hostname => $hostname, + -port => $port, + -version => $snmp_version, + -username => $secname, + -authprotocol => $authproto, + $auth, + $priv + ); + } + + + if (!defined($session)) { + $state='UNKNOWN'; + $answer=$error; + print ("$state: $answer"); + exit $ERRORS{$state}; + } + + }else{ + $state='UNKNOWN'; + print ("$state: No support for SNMP v$snmp_version yet\n"); + exit $ERRORS{$state}; + } +} + +return $ERRORS{"OK"}; + +} diff --git a/checkers/check_imap b/checkers/check_imap new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_imap @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_ircd b/checkers/check_ircd new file mode 100755 index 0000000000..8900b8aeeb --- /dev/null +++ b/checkers/check_ircd @@ -0,0 +1,250 @@ +#! /usr/bin/perl -wT + +# ----------------------------------------------------------------------------- +# File Name: check_ircd.pl +# +# Author: Richard Mayhew - South Africa +# +# Date: 1999/09/20 +# +# $Id: check_ircd.pl,v 1.3 2002/05/07 05:35:49 sghosh Exp $ +# +# Description: This script will check to see if an IRCD is running +# about how many users it has +# +# Email: netsaint@splash.co.za +# +# ----------------------------------------------------------------------------- +# Copyright 1999 (c) Richard Mayhew +# +# Credits go to Ethan Galstad for coding Nagios +# +# If any changes are made to this script, please mail me a copy of the +# changes :) +# +# Some code taken from Charlie Cook (check_disk.pl) +# +# License GPL +# +# ----------------------------------------------------------------------------- +# Date Author Reason +# ---- ------ ------ +# +# 1999/09/20 RM Creation +# +# 1999/09/20 TP Changed script to use strict, more secure by +# specifying $ENV variables. The bind command is +# still insecure through. Did most of my work +# with perl -wT and 'use strict' +# +# test using check_ircd.pl (irc-2.mit.edu|irc.erols.com|irc.core.com) +# 2002/05/02 SG Fixed for Embedded Perl +# + +# ----------------------------------------------------------------[ Require ]-- + +require 5.004; + +# -------------------------------------------------------------------[ Uses ]-- + +use Socket; +use strict; +use Getopt::Long; +use vars qw($opt_V $opt_h $opt_t $opt_p $opt_H $opt_w $opt_c $verbose); +use vars qw($PROGNAME); +use lib "/usr/lib/nagios/plugins"; +use utils qw($TIMEOUT %ERRORS &print_revision &support &usage); + +# ----------------------------------------------------[ Function Prototypes ]-- + +sub print_help (); +sub print_usage (); +sub connection ($$$$); +sub bindRemote ($$$); + +# -------------------------------------------------------------[ Enviroment ]-- + +$ENV{PATH} = ""; +$ENV{ENV} = ""; +$ENV{BASH_ENV} = ""; + +# -----------------------------------------------------------------[ Global ]-- + +$PROGNAME = "check_ircd"; +my $NICK="ircd$$"; +my $USER_INFO="monitor localhost localhost : "; + +# -------------------------------------------------------------[ connection ]-- +sub connection ($$$$) +{ + my ($in_remotehost,$in_users,$in_warn,$in_crit) = @_; + my $state; + my $answer; + + print "connection(debug): users = $in_users\n" if $verbose; + $in_users =~ s/\ //g; + + if ($in_users >= 0) { + + if ($in_users > $in_crit) { + $state = "CRITICAL"; + $answer = "Critical Number Of Clients Connected : $in_users (Limit = $in_crit)\n"; + + } elsif ($in_users > $in_warn) { + $state = "WARNING"; + $answer = "Warning Number Of Clients Connected : $in_users (Limit = $in_warn)\n"; + + } else { + $state = "OK"; + $answer = "IRCD ok - Current Local Users: $in_users\n"; + } + + } else { + $state = "UNKNOWN"; + $answer = "Server $in_remotehost has less than 0 users! Something is Really WRONG!\n"; + } + + print ClientSocket "quit\n"; + print $answer; + exit $ERRORS{$state}; +} + +# ------------------------------------------------------------[ print_usage ]-- + +sub print_usage () { + print "Usage: $PROGNAME -H [-w ] [-c ] [-p ]\n"; +} + +# -------------------------------------------------------------[ print_help ]-- + +sub print_help () +{ + print_revision($PROGNAME,'$Revision: 1.3 $ '); + print "Copyright (c) 2000 Richard Mayhew/Karl DeBisschop + +Perl Check IRCD plugin for Nagios + +"; + print_usage(); + print " +-H, --hostname=HOST + Name or IP address of host to check +-w, --warning=INTEGER + Number of connected users which generates a warning state (Default: 50) +-c, --critical=INTEGER + Number of connected users which generates a critical state (Default: 100) +-p, --port=INTEGER + Port that the ircd daemon is running on (Default: 6667) +-v, --verbose + Print extra debugging information +"; +} + +# -------------------------------------------------------------[ bindRemote ]-- + +sub bindRemote ($$$) +{ + my ($in_remotehost, $in_remoteport, $in_hostname) = @_; + my $proto = getprotobyname('tcp'); + my $sockaddr; + my $this; + my $that; + my ($name, $aliases,$type,$len,$thataddr) = gethostbyname($in_remotehost); +# ($name,$aliases,$type,$len,$thisaddr) = gethostbyname($in_hostname); + + if (!socket(ClientSocket,AF_INET, SOCK_STREAM, $proto)) { + print "IRCD UNKNOWN: Could not start socket ($!)\n"; + exit $ERRORS{"UNKNOWN"}; + } + $sockaddr = 'S n a4 x8'; + $this = pack($sockaddr, AF_INET, 0, INADDR_ANY); + $that = pack($sockaddr, AF_INET, $in_remoteport, $thataddr); + if (!bind(ClientSocket, $this)) { + print "IRCD UNKNOWN: Could not bind socket ($!)\n"; + exit $ERRORS{"UNKNOWN"}; + } + if (!connect(ClientSocket, $that)) { + print "IRCD UNKNOWN: Could not connect socket ($!)\n"; + exit $ERRORS{"UNKNOWN"}; + } + select(ClientSocket); $| = 1; select(STDOUT); + return \*ClientSocket; +} + +# ===================================================================[ MAIN ]== + +MAIN: +{ + my $hostname; + + Getopt::Long::Configure('bundling'); + GetOptions + ("V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "v" => \$verbose,"verbose" => \$verbose, + "t=i" => \$opt_t, "timeout=i" => \$opt_t, + "w=i" => \$opt_w, "warning=i" => \$opt_w, + "c=i" => \$opt_c, "critical=i" => \$opt_c, + "p=i" => \$opt_p, "port=i" => \$opt_p, + "H=s" => \$opt_H, "hostname=s" => \$opt_H); + + if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.3 $ '); + exit $ERRORS{'OK'}; + } + + if ($opt_h) {print_help(); exit $ERRORS{'OK'};} + + ($opt_H) || ($opt_H = shift) || usage("Host name/address not specified\n"); + my $remotehost = $1 if ($opt_H =~ /([-.A-Za-z0-9]+)/); + ($remotehost) || usage("Invalid host: $opt_H\n"); + + ($opt_w) || ($opt_w = shift) || ($opt_w = 50); + my $warn = $1 if ($opt_w =~ /^([0-9]+)$/); + ($warn) || usage("Invalid warning threshold: $opt_w\n"); + + ($opt_c) || ($opt_c = shift) || ($opt_c = 100); + my $crit = $1 if ($opt_c =~ /^([0-9]+)$/); + ($crit) || usage("Invalid critical threshold: $opt_c\n"); + + ($opt_p) || ($opt_p = shift) || ($opt_p = 6667); + my $remoteport = $1 if ($opt_p =~ /^([0-9]+)$/); + ($remoteport) || usage("Invalid port: $opt_p\n"); + + if ($opt_t && $opt_t =~ /^([0-9]+)$/) { $TIMEOUT = $1; } + + # Just in case of problems, let's not hang Nagios + $SIG{'ALRM'} = sub { + print "Somthing is Taking a Long Time, Increase Your TIMEOUT (Currently Set At $TIMEOUT Seconds)\n"; + exit $ERRORS{"UNKNOWN"}; + }; + + alarm($TIMEOUT); + + chomp($hostname = `/bin/hostname`); + $hostname = $1 if ($hostname =~ /([-.a-zA-Z0-9]+)/); + my ($name, $alias, $proto) = getprotobyname('tcp'); + print "MAIN(debug): hostname = $hostname\n" if $verbose; + + print "MAIN(debug): binding to remote host: $remotehost -> $remoteport -> $hostname\n" if $verbose; + my $ClientSocket = &bindRemote($remotehost,$remoteport,$hostname); + + print ClientSocket "NICK $NICK\nUSER $USER_INFO\n"; + + while () { + print "MAIN(debug): default var = $_\n" if $verbose; + + # DALnet,LagNet,UnderNet etc. Require this! + # Replies with a PONG when presented with a PING query. + # If a server doesn't require it, it will be ignored. + + if (m/^PING (.*)/) {print ClientSocket "PONG $1\n";} + + alarm(0); + + # Look for pattern in IRCD Output to gather Client Connections total. + connection($remotehost,$1,$warn,$crit) if (m/:I have\s+(\d+)/); + } + print "IRCD UNKNOWN: Unknown error - maybe could not authenticate\n"; + exit $ERRORS{"UNKNOWN"}; +} diff --git a/checkers/check_jabber b/checkers/check_jabber new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_jabber @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_ldap b/checkers/check_ldap new file mode 100755 index 0000000000..d7afad1d5b Binary files /dev/null and b/checkers/check_ldap differ diff --git a/checkers/check_ldaps b/checkers/check_ldaps new file mode 100755 index 0000000000..d7afad1d5b Binary files /dev/null and b/checkers/check_ldaps differ diff --git a/checkers/check_load b/checkers/check_load new file mode 100755 index 0000000000..4430d49cd5 Binary files /dev/null and b/checkers/check_load differ diff --git a/checkers/check_log b/checkers/check_log new file mode 100755 index 0000000000..8f55865af8 --- /dev/null +++ b/checkers/check_log @@ -0,0 +1,217 @@ +#! /bin/sh +# +# Log file pattern detector plugin for Nagios +# Written by Ethan Galstad (nagios@nagios.org) +# Last Modified: 07-31-1999 +# +# Usage: ./check_log +# +# Description: +# +# This plugin will scan a log file (specified by the option) +# for a specific pattern (specified by the option). Successive +# calls to the plugin script will only report *new* pattern matches in the +# log file, since an copy of the log file from the previous run is saved +# to . +# +# Output: +# +# On the first run of the plugin, it will return an OK state with a message +# of "Log check data initialized". On successive runs, it will return an OK +# state if *no* pattern matches have been found in the *difference* between the +# log file and the older copy of the log file. If the plugin detects any +# pattern matches in the log diff, it will return a CRITICAL state and print +# out a message is the following format: "(x) last_match", where "x" is the +# total number of pattern matches found in the file and "last_match" is the +# last entry in the log file which matches the pattern. +# +# Notes: +# +# If you use this plugin make sure to keep the following in mind: +# +# 1. The "max_attempts" value for the service should be 1, as this +# will prevent Nagios from retrying the service check (the +# next time the check is run it will not produce the same results). +# +# 2. The "notify_recovery" value for the service should be 0, so that +# Nagios does not notify you of "recoveries" for the check. Since +# pattern matches in the log file will only be reported once and not +# the next time, there will always be "recoveries" for the service, even +# though recoveries really don't apply to this type of check. +# +# 3. You *must* supply a different for each service that +# you define to use this plugin script - even if the different services +# check the same for pattern matches. This is necessary +# because of the way the script operates. +# +# Examples: +# +# Check for login failures in the syslog... +# +# check_log /var/log/messages ./check_log.badlogins.old "LOGIN FAILURE" +# +# Check for port scan alerts generated by Psionic's PortSentry software... +# +# check_log /var/log/message ./check_log.portscan.old "attackalert" +# + +# Paths to commands used in this script. These +# may have to be modified to match your system setup. + +PATH="" + +ECHO="/bin/echo" +GREP="/bin/grep" +DIFF="/usr/bin/diff" +TAIL="/usr/bin/tail" +CAT="/bin/cat" +RM="/bin/rm" + +PROGNAME=`/usr/bin/basename $0` +PROGPATH=`echo $0 | /bin/sed -e 's,[\\/][^\\/][^\\/]*$,,'` +REVISION=`echo '$Revision: 1.4 $' | /bin/sed -e 's/[^0-9.]//g'` + +. $PROGPATH/utils.sh + +print_usage() { + echo "Usage: $PROGNAME -F logfile -O oldlog -q query" + echo "Usage: $PROGNAME --help" + echo "Usage: $PROGNAME --version" +} + +print_help() { + print_revision $PROGNAME $REVISION + echo "" + print_usage + echo "" + echo "Log file pattern detector plugin for Nagios" + echo "" + support +} + +# Make sure the correct number of command line +# arguments have been supplied + +if [ $# -lt 1 ]; then + print_usage + exit $STATE_UNKNOWN +fi + +# Grab the command line arguments + +#logfile=$1 +#oldlog=$2 +#query=$3 +exitstatus=$STATE_WARNING #default +while test -n "$1"; do + case "$1" in + --help) + print_help + exit $STATE_OK + ;; + -h) + print_help + exit $STATE_OK + ;; + --version) + print_revision $PROGNAME $VERSION + exit $STATE_OK + ;; + -V) + print_revision $PROGNAME $VERSION + exit $STATE_OK + ;; + --filename) + logfile=$2 + shift + ;; + -F) + logfile=$2 + shift + ;; + --oldlog) + oldlog=$2 + shift + ;; + -O) + oldlog=$2 + shift + ;; + --query) + query=$2 + shift + ;; + -q) + query=$2 + shift + ;; + -x) + exitstatus=$2 + shift + ;; + --exitstatus) + exitstatus=$2 + shift + ;; + *) + echo "Unknown argument: $1" + print_usage + exit $STATE_UNKNOWN + ;; + esac + shift +done + +# If the source log file doesn't exist, exit + +if [ ! -e $logfile ]; then + $ECHO "Log check error: Log file $logfile does not exist!\n" + exit $STATE_UNKNOWN +elif [ ! -r $logfile ] ; then + $ECHO "Log check error: Log file $logfile is not readable!\n" + exit $STATE_UNKNOWN +fi + +# If the old log file doesn't exist, this must be the first time +# we're running this test, so copy the original log file over to +# the old diff file and exit + +if [ ! -e $oldlog ]; then + $CAT $logfile > $oldlog + $ECHO "Log check data initialized...\n" + exit $STATE_OK +fi + +# The old log file exists, so compare it to the original log now + +# The temporary file that the script should use while +# processing the log file. +if [ -x /bin/mktemp ]; then + tempdiff=`/bin/mktemp /tmp/check_log.XXXXXXXXXX` +else + tempdiff=`/bin/date '+%H%M%S'` + tempdiff="/tmp/check_log.${tempdiff}" + /bin/touch $tempdiff + chmod 600 $tempdiff +fi + +$DIFF $logfile $oldlog > $tempdiff + +# Count the number of matching log entries we have +count=`$GREP -c "$query" $tempdiff` + +# Get the last matching entry in the diff file +lastentry=`$GREP "$query" $tempdiff | $TAIL --lines=1` + +$RM -f $tempdiff +$CAT $logfile > $oldlog + +if [ "$count" = "0" ]; then # no matches, exit with no error + $ECHO "Log check ok - 0 pattern matches found\n" + exitstatus=$STATE_OK +else # Print total matche count and the last entry we found + $ECHO "($count) $lastentry" + exitstatus=$STATE_CRITICAL +fi + +exit $exitstatus diff --git a/checkers/check_mailq b/checkers/check_mailq new file mode 100755 index 0000000000..a455665d6a --- /dev/null +++ b/checkers/check_mailq @@ -0,0 +1,610 @@ +#! /usr/bin/perl -w + +# check_mailq - check to see how many messages are in the smtp queue awating +# transmittal. +# +# Initial version support sendmail's mailq command +# Support for mutiple sendmail queues (Carlos Canau) +# Support for qmail (Benjamin Schmid) + +# License Information: +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# +# $Id: check_mailq.pl,v 1.6 2005/04/14 04:13:13 seanius Exp $ +# +############################################################################ + +use POSIX; +use strict; +use Getopt::Long; +use vars qw($opt_V $opt_h $opt_v $verbose $PROGNAME $opt_w $opt_c $opt_t + $opt_M $mailq $status $state $msg $msg_q $msg_p $opt_W $opt_C $mailq @lines + %srcdomains %dstdomains); +use lib "/usr/lib/nagios/plugins"; +use utils qw(%ERRORS &print_revision &support &usage ); + + +sub print_help (); +sub print_usage (); +sub process_arguments (); + +$ENV{'PATH'}=''; +$ENV{'BASH_ENV'}=''; +$ENV{'ENV'}=''; +$PROGNAME = "check_mailq"; +$mailq = 'sendmail'; # default +$msg_q = 0 ; +$msg_p = 0 ; +$state = $ERRORS{'UNKNOWN'}; + +Getopt::Long::Configure('bundling'); +$status = process_arguments(); +if ($status){ + print "ERROR: processing arguments\n"; + exit $ERRORS{"UNKNOWN"}; +} + +$SIG{'ALRM'} = sub { + print ("ERROR: timed out waiting for $utils::PATH_TO_MAILQ \n"); + exit $ERRORS{"WARNING"}; +}; +alarm($opt_t); + +# switch based on MTA + +if ($mailq eq "sendmail") { + + ## open mailq + if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { + if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) { + print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; + exit $ERRORS{'UNKNOWN'}; + } + }elsif( defined $utils::PATH_TO_MAILQ){ + unless (-x $utils::PATH_TO_MAILQ) { + print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; + exit $ERRORS{'UNKNOWN'}; + } + } else { + print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; + exit $ERRORS{'UNKNOWN'}; + } +# single queue empty +##/var/spool/mqueue is empty +# single queue: 1 +## /var/spool/mqueue (1 request) +##----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------ +##h32E30p01763 2782 Wed Apr 2 15:03 +## 8BITMIME +## + +# multi queue empty +##/var/spool/mqueue/q0/df is empty +##/var/spool/mqueue/q1/df is empty +##/var/spool/mqueue/q2/df is empty +##/var/spool/mqueue/q3/df is empty +##/var/spool/mqueue/q4/df is empty +##/var/spool/mqueue/q5/df is empty +##/var/spool/mqueue/q6/df is empty +##/var/spool/mqueue/q7/df is empty +##/var/spool/mqueue/q8/df is empty +##/var/spool/mqueue/q9/df is empty +##/var/spool/mqueue/qA/df is empty +##/var/spool/mqueue/qB/df is empty +##/var/spool/mqueue/qC/df is empty +##/var/spool/mqueue/qD/df is empty +##/var/spool/mqueue/qE/df is empty +##/var/spool/mqueue/qF/df is empty +## Total Requests: 0 +# multi queue: 1 +##/var/spool/mqueue/q0/df is empty +##/var/spool/mqueue/q1/df is empty +##/var/spool/mqueue/q2/df is empty +## /var/spool/mqueue/q3/df (1 request) +##----Q-ID---- --Size-- -----Q-Time----- ------------Sender/Recipient------------ +##h32De2f23534* 48 Wed Apr 2 14:40 nocol +## nouserATEUnet.pt +## canau +##/var/spool/mqueue/q4/df is empty +##/var/spool/mqueue/q5/df is empty +##/var/spool/mqueue/q6/df is empty +##/var/spool/mqueue/q7/df is empty +##/var/spool/mqueue/q8/df is empty +##/var/spool/mqueue/q9/df is empty +##/var/spool/mqueue/qA/df is empty +##/var/spool/mqueue/qB/df is empty +##/var/spool/mqueue/qC/df is empty +##/var/spool/mqueue/qD/df is empty +##/var/spool/mqueue/qE/df is empty +##/var/spool/mqueue/qF/df is empty +## Total Requests: 1 + + + while () { + + # match email addr on queue listing + if ( (/<.*@.*\.(\w+\.\w+)>/) || (/<.*@(\w+\.\w+)>/) ) { + my $domain = $1; + if (/^\w+/) { + print "$utils::PATH_TO_MAILQ = srcdomain = $domain \n" if $verbose ; + $srcdomains{$domain} ++; + } + next; + } + + # + # ... + # sendmail considers a message with more than one destiny, say N, to the same MX + # to have N messages in queue. + # we will only consider one in this code + if (( /\s\(reply:\sread\serror\sfrom\s.*\.(\w+\.\w+)\.$/ ) || ( /\s\(reply:\sread\serror\sfrom\s(\w+\.\w+)\.$/ ) || + ( /\s\(timeout\swriting\smessage\sto\s.*\.(\w+\.\w+)\.:/ ) || ( /\s\(timeout\swriting\smessage\sto\s(\w+\.\w+)\.:/ ) || + ( /\s\(host\smap:\slookup\s\(.*\.(\w+\.\w+)\):/ ) || ( /\s\(host\smap:\slookup\s\((\w+\.\w+)\):/ ) || + ( /\s\(Deferred:\s.*\s.*\.(\w+\.\w+)\.\)/ ) || ( /\s\(Deferred:\s.*\s(\w+\.\w+)\.\)/ ) ) { + + print "$utils::PATH_TO_MAILQ = dstdomain = $1 \n" if $verbose ; + $dstdomains{$1} ++; + } + + if (/\s+\(I\/O\serror\)/) { + print "$utils::PATH_TO_MAILQ = dstdomain = UNKNOWN \n" if $verbose ; + $dstdomains{'UNKNOWN'} ++; + } + + # Finally look at the overall queue length + # + if (/mqueue/) { + print "$utils::PATH_TO_MAILQ = $_ "if $verbose ; + if (/ \((\d+) request/) { + # + # single queue: first line + # multi queue: one for each queue. overwrite on multi queue below + $msg_q = $1 ; + } + } elsif (/^\s+Total\sRequests:\s(\d+)$/i) { + print "$utils::PATH_TO_MAILQ = $_ \n" if $verbose ; + # + # multi queue: last line + $msg_q = $1 ; + } + + } + + + ## close mailq + + close (MAILQ); + # declare an error if we also get a non-zero return code from mailq + # unless already set to critical + if ( $? ) { + $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; + print "STDERR $?: $!\n" if $verbose; + $msg = "$state: (stderr)\n"; + } + + ## shut off the alarm + alarm(0); + + + + ## now check the queue length(s) + + if ($msg_q == 0) { + $msg = "OK: mailq is empty"; + $state = $ERRORS{'OK'}; + } else { + print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; + + # overall queue length + if ($msg_q < $opt_w) { + $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; + $state = $ERRORS{'OK'}; + }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { + $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)"; + $state = $ERRORS{'WARNING'}; + }else { + $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)"; + $state = $ERRORS{'CRITICAL'}; + } + + # check for domain specific queue lengths if requested + if (defined $opt_W) { + + # Apply threshold to queue lengths FROM domain + my @srckeys = sort { $srcdomains{$b} <=> $srcdomains{$a} } keys %srcdomains; + my $srcmaxkey = $srckeys[0]; + print "src max is $srcmaxkey with $srcdomains{$srcmaxkey} messages\n" if $verbose; + + if ($srcdomains{$srcmaxkey} >= $opt_W && $srcdomains{$srcmaxkey} < $opt_C) { + if ($state == $ERRORS{'OK'}) { + $msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; + $state = $ERRORS{'WARNING'}; + } elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){ + $msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; + } else { + $msg = "WARNING: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; + $state = $ERRORS{'WARNING'}; + } + } elsif ($srcdomains{$srcmaxkey} >= $opt_C) { + if ($state == $ERRORS{'OK'}) { + $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C)"; + $state = $ERRORS{'CRITICAL'}; + } elsif ($state == $ERRORS{'WARNING'}) { + $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold C = $opt_C) -and- " . $msg; + $msg =~ s/WARNING: //; + } elsif ($state == $ERRORS{'CRITICAL'}) { + $msg .= " -and- $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; + } else { + $msg = "CRITICAL: $srcdomains{$srcmaxkey} messages in queue FROM $srcmaxkey (threshold W = $opt_W)"; + $state = $ERRORS{'CRITICAL'}; + } + } else { + if ($srcdomains{$srcmaxkey} > 0) { + $msg .= " $srcdomains{$srcmaxkey} msgs. FROM $srcmaxkey is below threshold ($opt_W/$opt_C)"; + } + } + + # Apply threshold to queue lengths TO domain + my @dstkeys = sort { $dstdomains{$b} <=> $dstdomains{$a} } keys %dstdomains; + my $dstmaxkey = $dstkeys[0]; + print "dst max is $dstmaxkey with $dstdomains{$dstmaxkey} messages\n" if $verbose; + + if ($dstdomains{$dstmaxkey} >= $opt_W && $dstdomains{$dstmaxkey} < $opt_C) { + if ($state == $ERRORS{'OK'}) { + $msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; + $state = $ERRORS{'WARNING'}; + } elsif (($state == $ERRORS{'WARNING'}) || ($state == $ERRORS{'CRITICAL'})){ + $msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; + } else { + $msg = "WARNING: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; + $state = $ERRORS{'WARNING'}; + } + } elsif ($dstdomains{$dstmaxkey} >= $opt_C) { + if ($state == $ERRORS{'OK'}) { + $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C)"; + $state = $ERRORS{'CRITICAL'}; + } elsif ($state == $ERRORS{'WARNING'}) { + $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold C = $opt_C) -and- " . $msg; + $msg =~ s/WARNING: //; + } elsif ($state == $ERRORS{'CRITICAL'}) { + $msg .= " -and- $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; + } else { + $msg = "CRITICAL: $dstdomains{$dstmaxkey} messages in queue TO $dstmaxkey (threshold W = $opt_W)"; + $state = $ERRORS{'CRITICAL'}; + } + } else { + if ($dstdomains{$dstmaxkey} > 0) { + $msg .= " $dstdomains{$dstmaxkey} msgs. TO $dstmaxkey is below threshold ($opt_W/$opt_C)"; + } + } + + } # End of queue length thresholds + + } + +} # end of ($mailq eq "sendmail") +elsif ( $mailq eq "postfix" ) { + + ## open mailq + if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { + if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) { + print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; + exit $ERRORS{'UNKNOWN'}; + } + }elsif( defined $utils::PATH_TO_MAILQ){ + unless (-x $utils::PATH_TO_MAILQ) { + print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; + exit $ERRORS{'UNKNOWN'}; + } + } else { + print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; + exit $ERRORS{'UNKNOWN'}; + } + + + @lines = reverse ; + + # close qmail-qstat + close MAILQ; + # declare an error if we also get a non-zero return code from mailq + # unless already set to critical + if ( $? ) { + $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; + print "STDERR $?: $!\n" if $verbose; + $msg = "$state: (stderr)\n"; + } + + ## shut off the alarm + alarm(0); + + # check queue length + if ($lines[0]=~/Kbytes in (\d+)/) { + $msg_q = $1 ; + }elsif ($lines[0]=~/Mail queue is empty/) { + $msg_q = 0; + }else{ + print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n"; + exit $ERRORS{'UNKNOWN'}; + } + + # check messages not processed + #if ($lines[1]=~/^messages in queue but not yet preprocessed: (\d+)/) { + # my $msg_p = $1; + #}else{ + # print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n"; + # exit $ERRORS{'UNKNOWN'}; + #} + + # check queue length(s) + if ($msg_q == 0){ + $msg = "OK: mailq reports queue is empty"; + $state = $ERRORS{'OK'}; + } else { + print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; + + # overall queue length + if ($msg_q < $opt_w) { + $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; + $state = $ERRORS{'OK'}; + }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { + $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)"; + $state = $ERRORS{'WARNING'}; + }else { + $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)"; + $state = $ERRORS{'CRITICAL'}; + } + + # check messages not yet preprocessed (only compare is $opt_W and $opt_C + # are defined) + + #if (defined $opt_W) { + # $msg .= "[Preprocessed = $msg_p]"; + # if ($msg_p >= $opt_W && $msg_p < $opt_C ) { + # $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; + # }elsif ($msg_p >= $opt_C ) { + # $state = $ERRORS{"CRITICAL"} ; + # } + #} + } +} # end of ($mailq eq "postfixl") +elsif ( $mailq eq "qmail" ) { + + # open qmail-qstat + if ( defined $utils::PATH_TO_QMAIL_QSTAT && -x $utils::PATH_TO_QMAIL_QSTAT ) { + if (! open (MAILQ, "$utils::PATH_TO_QMAIL_QSTAT | " ) ) { + print "ERROR: could not open $utils::PATH_TO_QMAIL_QSTAT \n"; + exit $ERRORS{'UNKNOWN'}; + } + }elsif( defined $utils::PATH_TO_QMAIL_QSTAT){ + unless (-x $utils::PATH_TO_QMAIL_QSTAT) { + print "ERROR: $utils::PATH_TO_QMAIL_QSTAT is not executable by (uid $>:gid($)))\n"; + exit $ERRORS{'UNKNOWN'}; + } + } else { + print "ERROR: \$utils::PATH_TO_QMAIL_QSTAT is not defined\n"; + exit $ERRORS{'UNKNOWN'}; + } + + @lines = ; + + # close qmail-qstat + close MAILQ; + # declare an error if we also get a non-zero return code from mailq + # unless already set to critical + if ( $? ) { + $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; + print "STDERR $?: $!\n" if $verbose; + $msg = "$state: (stderr)\n"; + } + + ## shut off the alarm + alarm(0); + + # check queue length + if ($lines[0]=~/^messages in queue: (\d+)/) { + $msg_q = $1 ; + }else{ + print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n"; + exit $ERRORS{'UNKNOWN'}; + } + + # check messages not processed + if ($lines[1]=~/^messages in queue but not yet preprocessed: (\d+)/) { + my $msg_p = $1; + }else{ + print "Couldn't match $utils::PATH_TO_QMAIL_QSTAT output\n"; + exit $ERRORS{'UNKNOWN'}; + } + + + # check queue length(s) + if ($msg_q == 0){ + $msg = "OK: qmail-qstat reports queue is empty"; + $state = $ERRORS{'OK'}; + } else { + print "msg_q = $msg_q warn=$opt_w crit=$opt_c\n" if $verbose; + + # overall queue length + if ($msg_q < $opt_w) { + $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; + $state = $ERRORS{'OK'}; + }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { + $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)"; + $state = $ERRORS{'WARNING'}; + }else { + $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)"; + $state = $ERRORS{'CRITICAL'}; + } + + # check messages not yet preprocessed (only compare is $opt_W and $opt_C + # are defined) + + if (defined $opt_W) { + $msg .= "[Preprocessed = $msg_p]"; + if ($msg_p >= $opt_W && $msg_p < $opt_C ) { + $state = $state == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"WARNING"} ; + }elsif ($msg_p >= $opt_C ) { + $state = $ERRORS{"CRITICAL"} ; + } + } + } + + + +} # end of ($mailq eq "qmail") +elsif ( $mailq eq "exim" ) { + ## open mailq + if ( defined $utils::PATH_TO_MAILQ && -x $utils::PATH_TO_MAILQ ) { + if (! open (MAILQ, "$utils::PATH_TO_MAILQ | " ) ) { + print "ERROR: could not open $utils::PATH_TO_MAILQ \n"; + exit $ERRORS{'UNKNOWN'}; + } + }elsif( defined $utils::PATH_TO_MAILQ){ + unless (-x $utils::PATH_TO_MAILQ) { + print "ERROR: $utils::PATH_TO_MAILQ is not executable by (uid $>:gid($)))\n"; + exit $ERRORS{'UNKNOWN'}; + } + } else { + print "ERROR: \$utils::PATH_TO_MAILQ is not defined\n"; + exit $ERRORS{'UNKNOWN'}; + } + + while () { + #22m 1.7K 19aEEr-0007hx-Dy <> *** frozen *** + #root@exlixams.glups.fr + + if (/\s[\w\d]{6}-[\w\d]{6}-[\w\d]{2}\s/) { # message id 19aEEr-0007hx-Dy + $msg_q++ ; + } + } + close(MAILQ) ; + if ($msg_q < $opt_w) { + $msg = "OK: mailq ($msg_q) is below threshold ($opt_w/$opt_c)"; + $state = $ERRORS{'OK'}; + }elsif ($msg_q >= $opt_w && $msg_q < $opt_c) { + $msg = "WARNING: mailq is $msg_q (threshold w = $opt_w)"; + $state = $ERRORS{'WARNING'}; + }else { + $msg = "CRITICAL: mailq is $msg_q (threshold c = $opt_c)"; + $state = $ERRORS{'CRITICAL'}; + } +} # end of ($mailq eq "exim") + +# Perfdata support +print "$msg|unsent=$msg_q;$opt_w;$opt_c;0\n"; +exit $state; + + +##################################### +#### subs + + +sub process_arguments(){ + GetOptions + ("V" => \$opt_V, "version" => \$opt_V, + "v" => \$opt_v, "verbose" => \$opt_v, + "h" => \$opt_h, "help" => \$opt_h, + "M:s" => \$opt_M, "mailserver:s" => \$opt_M, # mailserver (default sendmail) + "w=i" => \$opt_w, "warning=i" => \$opt_w, # warning if above this number + "c=i" => \$opt_c, "critical=i" => \$opt_c, # critical if above this number + "t=i" => \$opt_t, "timeout=i" => \$opt_t + ); + + if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.6 $ '); + exit $ERRORS{'OK'}; + } + + if ($opt_h) { + print_help(); + exit $ERRORS{'OK'}; + } + + if (defined $opt_v ){ + $verbose = $opt_v; + } + + unless (defined $opt_t) { + $opt_t = $utils::TIMEOUT ; # default timeout + } + + unless ( defined $opt_w && defined $opt_c ) { + print_usage(); + exit $ERRORS{'UNKNOWN'}; + } + + if ( $opt_w >= $opt_c) { + print "Warning (-w) cannot be greater than Critical (-c)!\n"; + exit $ERRORS{'UNKNOWN'}; + } + + if (defined $opt_W && ! defined !$opt_C) { + print "Need -C if using -W\n"; + exit $ERRORS{'UNKNOWN'}; + }elsif(defined $opt_W && defined $opt_C) { + if ($opt_W >= $opt_C) { + print "Warning (-W) cannot be greater than Critical (-C)!\n"; + exit $ERRORS{'UNKNOWN'}; + } + } + + if (defined $opt_M) { + if ($opt_M =~ /^(sendmail|qmail|postfix|exim)$/) { + $mailq = $opt_M ; + }elsif( $opt_M eq ''){ + $mailq = 'sendmail'; + }else{ + print "-M: $opt_M is not supported\n"; + exit $ERRORS{'UNKNOWN'}; + } + }else{ + $mailq = 'sendmail' ; + } + + return $ERRORS{'OK'}; +} + +sub print_usage () { + print "Usage: $PROGNAME -w -c [-W ] [-C ] [-M ] [-t ] [-v verbose]\n"; +} + +sub print_help () { + print_revision($PROGNAME,'$Revision: 1.6 $'); + print "Copyright (c) 2002 Subhendu Ghosh/Carlos Canau/Benjamin Schmid\n"; + print "\n"; + print_usage(); + print "\n"; + print " Checks the number of messages in the mail queue (supports multiple sendmail queues, qmail)\n"; + print " Feedback/patches to support non-sendmail mailqueue welcome\n\n"; + print "-w (--warning) = Min. number of messages in queue to generate warning\n"; + print "-c (--critical) = Min. number of messages in queu to generate critical alert ( w < c )\n"; + print "-W (--Warning) = Min. number of messages for same domain in queue to generate warning\n"; + print "-C (--Critical) = Min. number of messages for same domain in queue to generate critical alert ( W < C )\n"; + print "-t (--timeout) = Plugin timeout in seconds (default = $utils::TIMEOUT)\n"; + print "-M (--mailserver) = [ sendmail | qmail | postfix | exim ] (default = sendmail)\n"; + print "-h (--help)\n"; + print "-V (--version)\n"; + print "-v (--verbose) = debugging output\n"; + print "\n\n"; + print "Note: -w and -c are required arguments. -W and -C are optional.\n"; + print " -W and -C are applied to domains listed on the queues - both FROM and TO. (sendmail)\n"; + print " -W and -C are applied message not yet preproccessed. (qmail)\n"; + print " This plugin uses the system mailq command (sendmail) or qmail-stat (qmail)\n"; + print " to look at the queues. Mailq can usually only be accessed by root or \n"; + print " a TrustedUser. You will have to set appropriate permissions for the plugin to work.\n"; + print ""; + print "\n\n"; + support(); +} diff --git a/checkers/check_mrtg b/checkers/check_mrtg new file mode 100755 index 0000000000..b5e0198b4d Binary files /dev/null and b/checkers/check_mrtg differ diff --git a/checkers/check_mrtgtraf b/checkers/check_mrtgtraf new file mode 100755 index 0000000000..05670a29b9 Binary files /dev/null and b/checkers/check_mrtgtraf differ diff --git a/checkers/check_mysql b/checkers/check_mysql new file mode 100755 index 0000000000..7a15d43772 Binary files /dev/null and b/checkers/check_mysql differ diff --git a/checkers/check_nagios b/checkers/check_nagios new file mode 100755 index 0000000000..30b2d0cc28 Binary files /dev/null and b/checkers/check_nagios differ diff --git a/checkers/check_nntp b/checkers/check_nntp new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_nntp @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_nntps b/checkers/check_nntps new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_nntps @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_nt b/checkers/check_nt new file mode 100755 index 0000000000..907e3e19f1 Binary files /dev/null and b/checkers/check_nt differ diff --git a/checkers/check_ntp b/checkers/check_ntp new file mode 100755 index 0000000000..f8a503ceaf --- /dev/null +++ b/checkers/check_ntp @@ -0,0 +1,465 @@ +#! /usr/bin/perl -w + +# (c)1999 Ian Cass, Knowledge Matters Ltd. +# Read the GNU copyright stuff for all the legalese +# +# Check NTP time servers plugin. This plugin requires the ntpdate utility to +# be installed on the system, however since it's part of the ntp suite, you +# should already have it installed. +# +# $Id: check_ntp.pl,v 1.29 2005/05/25 14:05:41 sghosh Exp $ +# +# Nothing clever done in this program - its a very simple bare basics hack to +# get the job done. +# +# Things to do... +# check @words[9] for time differences greater than +/- x secs & return a +# warning. +# +# (c) 1999 Mark Jewiss, Knowledge Matters Limited +# 22-9-1999, 12:45 +# +# Modified script to accept 2 parameters or set defaults. +# Now issues warning or critical alert is time difference is greater than the +# time passed. +# +# These changes have not been tested completely due to the unavailability of a +# server with the incorrect time. +# +# (c) 1999 Bo Kersey, VirCIO - Managed Server Solutions +# 22-10-99, 12:17 +# +# Modified the script to give useage if no parameters are input. +# +# Modified the script to check for negative as well as positive +# time differences. +# +# Modified the script to work with ntpdate 3-5.93e Wed Apr 14 20:23:03 EDT 1999 +# +# Modified the script to work with ntpdate's that return adjust or offset... +# +# +# Script modified 2000 June 01 by William Pietri +# +# Modified script to handle weird cases: +# o NTP server doesn't respond (e.g., has died) +# o Server has correct time but isn't suitable synchronization +# source. This happens while starting up and if contact +# with master has been lost. +# +# Modifed to run under Embedded Perl (sghosh@users.sf.net) +# - combined logic some blocks together.. +# +# Added ntpdate check for stratum 16 desynch peer (James Fidell) Feb 03, 2003 +# +# ntpdate - offset is in seconds +# changed ntpdc to ntpq - jitter/dispersion is in milliseconds +# +# Patch for for regex for stratum1 refid. + +require 5.004; +use POSIX; +use strict; +use Getopt::Long; +use vars qw($opt_V $opt_h $opt_H $opt_t $opt_w $opt_c $opt_O $opt_j $opt_k $verbose $PROGNAME $def_jitter $ipv4 $ipv6); +use lib "/usr/lib/nagios/plugins"; +use utils qw($TIMEOUT %ERRORS &print_revision &support); + +$PROGNAME="check_ntp"; + +sub print_help (); +sub print_usage (); + +$ENV{'PATH'}=''; +$ENV{'BASH_ENV'}=''; +$ENV{'ENV'}=''; + +# defaults in sec +my $DEFAULT_OFFSET_WARN = 60; # 1 minute +my $DEFAULT_OFFSET_CRIT = 120; # 2 minutes +# default in millisec +my $DEFAULT_JITTER_WARN = 5000; # 5 sec +my $DEFAULT_JITTER_CRIT = 10000; # 10 sec + +Getopt::Long::Configure('bundling'); +GetOptions + ("V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "v" => \$verbose, "verbose" => \$verbose, + "4" => \$ipv4, "use-ipv4" => \$ipv4, + "6" => \$ipv6, "use-ipv6" => \$ipv6, + "w=f" => \$opt_w, "warning=f" => \$opt_w, # offset|adjust warning if above this number + "c=f" => \$opt_c, "critical=f" => \$opt_c, # offset|adjust critical if above this number + "O" => \$opt_O, "zero-offset" => \$opt_O, # zero-offset bad + "j=s" => \$opt_j, "jwarn=i" => \$opt_j, # jitter warning if above this number + "k=s" => \$opt_k, "jcrit=i" => \$opt_k, # jitter critical if above this number + "t=s" => \$opt_t, "timeout=i" => \$opt_t, + "H=s" => \$opt_H, "hostname=s" => \$opt_H); + +if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.29 $ '); + exit $ERRORS{'OK'}; +} + +if ($opt_h) { + print_help(); + exit $ERRORS{'OK'}; +} + +# jitter test params specified +if (defined $opt_j || defined $opt_k ) { + $def_jitter = 1; +} + +$opt_H = shift unless ($opt_H); +my $host = $1 if ($opt_H && $opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0-9]+(\.[a-zA-Z][-a-zA-Z0-9]+)*)$/); +unless ($host) { + print "No target host specified\n"; + print_usage(); + exit $ERRORS{'UNKNOWN'}; +} + +my ($timeout, $owarn, $ocrit, $jwarn, $jcrit); + +$timeout = $TIMEOUT; +($opt_t) && ($opt_t =~ /^([0-9]+)$/) && ($timeout = $1); + +$owarn = $DEFAULT_OFFSET_WARN; +($opt_w) && ($opt_w =~ /^([0-9.]+)$/) && ($owarn = $1); + +$ocrit = $DEFAULT_OFFSET_CRIT; +($opt_c) && ($opt_c =~ /^([0-9.]+)$/) && ($ocrit = $1); + +$jwarn = $DEFAULT_JITTER_WARN; +($opt_j) && ($opt_j =~ /^([0-9]+)$/) && ($jwarn = $1); + +$jcrit = $DEFAULT_JITTER_CRIT; +($opt_k) && ($opt_k =~ /^([0-9]+)$/) && ($jcrit = $1); + +if ($ocrit < $owarn ) { + print "Critical offset should be larger than warning offset\n"; + print_usage(); + exit $ERRORS{"UNKNOWN"}; +} + +if ($def_jitter) { + if ($opt_k < $opt_j) { + print "Critical jitter should be larger than warning jitter\n"; + print_usage(); + exit $ERRORS{'UNKNOWN'}; + } +} + + +my $stratum = -1; +my $ignoreret = 0; +my $answer = undef; +my $offset = undef; +my $jitter = undef; +my $syspeer = undef; +my $candidate = 0; +my @candidates; +my $msg; # first line of output to print if format is invalid + +my $state = $ERRORS{'UNKNOWN'}; +my $ntpdate_error = $ERRORS{'UNKNOWN'}; +my $jitter_error = $ERRORS{'UNKNOWN'}; + +# some systems don't have a proper ntpq (migrated from ntpdc) +my $have_ntpq = undef; +if ($utils::PATH_TO_NTPQ && -x $utils::PATH_TO_NTPQ ) { + $have_ntpq = 1; +}else{ + $have_ntpq = 0; +} + +# Just in case of problems, let's not hang Nagios +$SIG{'ALRM'} = sub { + print ("ERROR: No response from ntp server (alarm)\n"); + exit $ERRORS{"UNKNOWN"}; +}; +alarm($timeout); + +# Determine protocol to be used for ntpdate and ntpq +my $ntpdate = $utils::PATH_TO_NTPDATE; +my $ntpq = $utils::PATH_TO_NTPQ; +if ($ipv4) { + $ntpdate .= " -4"; + $ntpq .= " -4"; +} +elsif ($ipv6) { + $ntpdate .= " -6"; + $ntpq .= " -6"; +} +# else don't use any flags + +### +### +### First, check ntpdate +### +### + +if (!open (NTPDATE, $ntpdate . " -q $host 2>&1 |")) { + print "Could not open ntpdate\n"; + exit $ERRORS{"UNKNOWN"}; +} + +while () { + #print if ($verbose); # noop + $msg = $_ unless ($msg); + + if (/stratum\s(\d+)/) { + $stratum = $1; + } + + if (/(offset|adjust)\s+([-.\d]+)/i) { + $offset = $2; + + # An offset of 0.000000 with an error is probably bogus. Actually, + # it's probably always bogus, but let's be paranoid here. + # Has been reported that 0.0000 happens in a production environment + # on Solaris 8 so this check should be taken out - SF tracker 1150777 + if (defined $opt_O ) { + if ($offset == 0) { undef $offset;} + } + + $ntpdate_error = defined ($offset) ? $ERRORS{"OK"} : $ERRORS{"CRITICAL"}; + print "ntperr = $ntpdate_error \n" if $verbose; + + } + + if (/no server suitable for synchronization found/) { + if ($stratum == 16) { + $ntpdate_error = $ERRORS{"WARNING"}; + $msg = "Desynchronized peer server found"; + $ignoreret=1; + } + else { + $ntpdate_error = $ERRORS{"CRITICAL"}; + $msg = "No suitable peer server found - "; + } + } + +} + +close (NTPDATE); +# declare an error if we also get a non-zero return code from ntpdate +# unless already set to critical +if ( $? && !$ignoreret ) { + print "stderr = $? : $! \n" if $verbose; + $ntpdate_error = $ntpdate_error == $ERRORS{"CRITICAL"} ? $ERRORS{"CRITICAL"} : $ERRORS{"UNKNOWN"} ; + print "ntperr = $ntpdate_error : $!\n" if $verbose; +} + +### +### +### Then scan xntpq/ntpq if it exists +### and look in the 11th column for jitter +### +# Field 1: Tally Code ( Space, 'x','.','-','+','#','*','o') +# Only match for '*' which implies sys.peer +# or 'o' which implies pps.peer +# If both exist, the last one is picked. +# Field 2: address of the remote peer +# Field 3: Refid of the clock (0.0.0.0 if unknown, WWWV/PPS/GPS/ACTS/USNO/PCS/... if Stratum1) +# Field 4: stratum (0-15) +# Field 5: Type of the peer: local (l), unicast (u), multicast (m) +# broadcast (b); not sure about multicast/broadcast +# Field 6: last packet receive (in seconds) +# Field 7: polling interval +# Field 8: reachability resgister (octal) +# Field 9: delay +# Field 10: offset +# Field 11: dispersion/jitter +# +# According to bug 773588 Some solaris xntpd implementations seemto match on +# "#" even though the docs say it exceeds maximum distance. Providing patch +# here which will generate a warining. + +if ($have_ntpq) { + + if ( open(NTPQ, $ntpq . " -np $host 2>&1 |") ) { + while () { + print $_ if ($verbose); + if ( /timed out/ ){ + $have_ntpq = 0 ; + last ; + } + # number of candidates on for sys.peer + if (/^(\*|\+|\#|o])/) { + ++$candidate; + push (@candidates, $_); + print "Candidate count= $candidate\n" if ($verbose); + } + + # match sys.peer or pps.peer + if (/^(\*|o)(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/) { + $syspeer = $2; + $stratum = $4; + $jitter = $11; + print "match $_ \n" if $verbose; + if ($jitter > $jcrit) { + print "Jitter_crit = $11 :$jcrit\n" if ($verbose); + $jitter_error = $ERRORS{'CRITICAL'}; + } elsif ($jitter > $jwarn ) { + print "Jitter_warn = $11 :$jwarn\n" if ($verbose); + $jitter_error = $ERRORS{'WARNING'}; + } else { + $jitter_error = $ERRORS{'OK'}; + } + } else { + print "No match!\n" if $verbose; + $jitter = '(not parsed)'; + } + + } + close NTPQ; + + # if we did not match sys.peer or pps.peer but matched # candidates only + # generate a warning + # based on bug id 773588 + unless (defined $syspeer) { + if ($#candidates >=0) { + foreach my $c (@candidates) { + $c =~ /^(#)([-0-9.\s]+)\s+([-0-9A-Za-z_().]+)\s+([-0-9.]+)\s+([lumb-]+)\s+([-0-9m.]+)\s+([-0-9.]+)\s+([-0-9.]+)\s+([-0-9.]+)\s+([-0-9.]+)\s+([-0-9.]+)/; + $syspeer = $2; + $stratum = $4; + $jitter = $11; + print "candidate match $c \n" if $verbose; + if ($jitter > $jcrit) { + print "Candidate match - Jitter_crit = $11 :$jcrit\n" if ($verbose); + $jitter_error = $ERRORS{'CRITICAL'}; + }elsif ($jitter > $jwarn ) { + print "Candidate match - Jitter_warn = $11 :$jwarn \n" if ($verbose); + $jitter_error = $ERRORS{'WARNING'}; + } else { + $jitter_error = $ERRORS{'WARNING'}; + } + } + + } + } + } +} + + +if ($ntpdate_error != $ERRORS{'OK'}) { + $state = $ntpdate_error; + if ($ntpdate_error == $ERRORS{'WARNING'} ) { + $answer = $msg; + } + else { + $answer = $msg . "Server for ntp probably down"; + } + + if (defined($offset) && abs($offset) > $ocrit) { + $state = $ERRORS{'CRITICAL'}; + $answer = "Server Error and offset $offset sec > +/- $ocrit sec"; + } elsif (defined($offset) && abs($offset) > $owarn) { + $answer = "Server error and offset $offset sec > +/- $owarn sec"; + } elsif (defined($jitter) && abs($jitter) > $jcrit) { + $answer = "Server error and jitter $jitter msec > +/- $jcrit msec"; + } elsif (defined($jitter) && abs($jitter) > $jwarn) { + $answer = "Server error and jitter $jitter msec > +/- $jwarn msec"; + } + +} elsif ($have_ntpq && $jitter_error != $ERRORS{'OK'}) { + $state = $jitter_error; + $answer = "Jitter $jitter too high"; + if (defined($offset) && abs($offset) > $ocrit) { + $state = $ERRORS{'CRITICAL'}; + $answer = "Jitter error and offset $offset sec > +/- $ocrit sec"; + } elsif (defined($offset) && abs($offset) > $owarn) { + $answer = "Jitter error and offset $offset sec > +/- $owarn sec"; + } elsif (defined($jitter) && abs($jitter) > $jcrit) { + $answer = "Jitter error and jitter $jitter msec > +/- $jcrit msec"; + } elsif (defined($jitter) && abs($jitter) > $jwarn) { + $answer = "Jitter error and jitter $jitter msec > +/- $jwarn msec"; + } + +} elsif( !$have_ntpq ) { # no errors from ntpdate and no ntpq or ntpq timed out + if (abs($offset) > $ocrit) { + $state = $ERRORS{'CRITICAL'}; + $answer = "Offset $offset sec > +/- $ocrit sec"; + } elsif (abs($offset) > $owarn) { + $state = $ERRORS{'WARNING'}; + $answer = "Offset $offset sec > +/- $owarn sec"; + } elsif (( abs($offset) > $owarn) && $def_jitter ) { + $state = $ERRORS{'WARNING'}; + $answer = "Offset $offset sec > +/- $owarn sec, ntpq timed out"; + } elsif ( $def_jitter ) { + $state = $ERRORS{'WARNING'}; + $answer = "Offset $offset secs, ntpq timed out"; + } else{ + $state = $ERRORS{'OK'}; + $answer = "Offset $offset secs"; + } + + + +} else { # no errors from ntpdate or ntpq + if (abs($offset) > $ocrit) { + $state = $ERRORS{'CRITICAL'}; + $answer = "Offset $offset sec > +/- $ocrit sec, jitter $jitter msec"; + } elsif (abs($jitter) > $jcrit ) { + $state = $ERRORS{'CRITICAL'}; + $answer = "Jitter $jitter msec> +/- $jcrit msec, offset $offset sec"; + } elsif (abs($offset) > $owarn) { + $state = $ERRORS{'WARNING'}; + $answer = "Offset $offset sec > +/- $owarn sec, jitter $jitter msec"; + } elsif (abs($jitter) > $jwarn ) { + $state = $ERRORS{'WARNING'}; + $answer = "Jitter $jitter msec> +/- $jwarn msec, offset $offset sec"; + + } else { + $state = $ERRORS{'OK'}; + $answer = "Offset $offset secs, jitter $jitter msec, peer is stratum $stratum"; + } + +} + +foreach my $key (keys %ERRORS) { + if ($state==$ERRORS{$key}) { +# print ("NTP $key: $answer"); + print ("NTP $key: $answer|offset=$offset, jitter=" . $jitter/1000 . ",peer_stratum=$stratum\n"); + last; + } +} +exit $state; + + +#### +#### subs + +sub print_usage () { + print "Usage: $PROGNAME -H [-46] [-O] [-w ] [-c ] [-j ] [-k ] [-v verbose]\n"; +} + +sub print_help () { + print_revision($PROGNAME,'$Revision: 1.29 $'); + print "Copyright (c) 2003 Bo Kersey/Karl DeBisschop\n"; + print "\n"; + print_usage(); + print " +Checks the local timestamp offset versus with ntpdate +Checks the jitter/dispersion of clock signal between and its sys.peer with ntpq\n +-O (--zero-offset) + A zero offset on \"ntpdate\" will generate a CRITICAL.\n +-w (--warning) + Clock offset in seconds at which a warning message will be generated.\n Defaults to $DEFAULT_OFFSET_WARN. +-c (--critical) + Clock offset in seconds at which a critical message will be generated.\n Defaults to $DEFAULT_OFFSET_CRIT. +-j (--jwarn) + Clock jitter in milliseconds at which a warning message will be generated.\n Defaults to $DEFAULT_JITTER_WARN. +-k (--jcrit) + Clock jitter in milliseconds at which a critical message will be generated.\n Defaults to $DEFAULT_JITTER_CRIT. + + If jitter/dispersion is specified with -j or -k and ntpq times out, then a + warning is returned.\n +-4 (--use-ipv4) + Use IPv4 connection +-6 (--use-ipv6) + Use IPv6 connection +\n"; +support(); +} diff --git a/checkers/check_nwstat b/checkers/check_nwstat new file mode 100755 index 0000000000..3e82019dd7 Binary files /dev/null and b/checkers/check_nwstat differ diff --git a/checkers/check_oracle b/checkers/check_oracle new file mode 100755 index 0000000000..5bf9066c78 --- /dev/null +++ b/checkers/check_oracle @@ -0,0 +1,284 @@ +#! /bin/sh +# +# latigid010@yahoo.com +# 01/06/2000 +# +# This Nagios plugin was created to check Oracle status +# + +PROGNAME=`basename $0` +PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'` +REVISION=`echo '$Revision: 1.14 $' | sed -e 's/[^0-9.]//g'` + +. $PROGPATH/utils.sh + + +print_usage() { + echo "Usage:" + echo " $PROGNAME --tns " + echo " $PROGNAME --db " + echo " $PROGNAME --login " + echo " $PROGNAME --cache " + echo " $PROGNAME --tablespace " + echo " $PROGNAME --oranames " + echo " $PROGNAME --help" + echo " $PROGNAME --version" +} + +print_help() { + print_revision $PROGNAME $REVISION + echo "" + print_usage + echo "" + echo "Check Oracle status" + echo "" + echo "--tns SID/IP Address" + echo " Check remote TNS server" + echo "--db SID" + echo " Check local database (search /bin/ps for PMON process) and check" + echo " filesystem for sgadefORACLE_SID.dbf" + echo "--login SID" + echo " Attempt a dummy login and alert if not ORA-01017: invalid username/password" + echo "--cache" + echo " Check local database for library and buffer cache hit ratios" + echo " ---> Requires Oracle user/password and SID specified." + echo " ---> Requires select on v_$sysstat and v_$librarycache" + echo "--tablespace" + echo " Check local database for tablespace capacity in ORACLE_SID" + echo " ---> Requires Oracle user/password specified." + echo " ---> Requires select on dba_data_files and dba_free_space" + echo "--oranames Hostname" + echo " Check remote Oracle Names server" + echo "--help" + echo " Print this help screen" + echo "--version" + echo " Print version and license information" + echo "" + echo "If the plugin doesn't work, check that the ORACLE_HOME environment" + echo "variable is set, that ORACLE_HOME/bin is in your PATH, and the" + echo "tnsnames.ora file is locatable and is properly configured." + echo "" + echo "When checking local database status your ORACLE_SID is case sensitive." + echo "" + echo "If you want to use a default Oracle home, add in your oratab file:" + echo "*:/opt/app/oracle/product/7.3.4:N" + echo "" + support +} + +case "$1" in +1) + cmd='--tns' + ;; +2) + cmd='--db' + ;; +*) + cmd="$1" + ;; +esac + +# Information options +case "$cmd" in +--help) + print_help + exit $STATE_OK + ;; +-h) + print_help + exit $STATE_OK + ;; +--version) + print_revision $PLUGIN $REVISION + exit $STATE_OK + ;; +-V) + print_revision $PLUGIN $REVISION + exit $STATE_OK + ;; +esac + +# Hunt down a reasonable ORACLE_HOME +if [ -z "$ORACLE_HOME" ] ; then + # Adjust to taste + for oratab in /var/opt/oracle/oratab /etc/oratab + do + [ ! -f $oratab ] && continue + ORACLE_HOME=`IFS=: + while read SID ORACLE_HOME junk; + do + if [ "$SID" = "$2" -o "$SID" = "*" ] ; then + echo $ORACLE_HOME; + exit; + fi; + done < $oratab` + [ -n "$ORACLE_HOME" ] && break + done +fi +# Last resort +[ -z "$ORACLE_HOME" -a -d $PROGPATH/oracle ] && ORACLE_HOME=$PROGPATH/oracle + +if [ -z "$ORACLE_HOME" -o ! -d "$ORACLE_HOME" ] ; then + echo "Cannot determine ORACLE_HOME for sid $2" + exit $STATE_UNKNOWN +fi +PATH=$PATH:$ORACLE_HOME/bin +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib +export ORACLE_HOME PATH LD_LIBRARY_PATH + +case "$cmd" in +--tns) + tnschk=` tnsping $2` + tnschk2=` echo $tnschk | grep -c OK` + if [ ${tnschk2} -eq 1 ] ; then + tnschk3=` echo $tnschk | sed -e 's/.*(//' -e 's/).*//'` + echo "OK - reply time ${tnschk3} from $2" + exit $STATE_OK + else + echo "No TNS Listener on $2" + exit $STATE_CRITICAL + fi + ;; +--oranames) + namesctl status $2 | awk ' + /Server has been running for:/ { + msg = "OK: Up" + for (i = 6; i <= NF; i++) { + msg = msg " " $i + } + status = '$STATE_OK' + } + /error/ { + msg = "CRITICAL: " $0 + status = '$STATE_CRITICAL' + } + END { + print msg + exit status + }' + ;; +--db) + pmonchk=`ps -ef | grep -v grep | grep -c "ora_pmon_${2}$"` + if [ ${pmonchk} -ge 1 ] ; then + echo "${2} OK - ${pmonchk} PMON process(es) running" + exit $STATE_OK + #if [ -f $ORACLE_HOME/dbs/sga*${2}* ] ; then + #if [ ${pmonchk} -eq 1 ] ; then + #utime=`ls -la $ORACLE_HOME/dbs/sga*$2* | cut -c 43-55` + #echo "${2} OK - running since ${utime}" + #exit $STATE_OK + #fi + else + echo "${2} Database is DOWN" + exit $STATE_CRITICAL + fi + ;; +--login) + loginchk=`sqlplus dummy/user@$2 < /dev/null` + loginchk2=` echo $loginchk | grep -c ORA-01017` + if [ ${loginchk2} -eq 1 ] ; then + echo "OK - dummy login connected" + exit $STATE_OK + else + loginchk3=` echo "$loginchk" | grep "ORA-" | head -1` + echo "CRITICAL - $loginchk3" + exit $STATE_CRITICAL + fi + ;; +--cache) + if [ ${5} -gt ${6} ] ; then + echo "UNKNOWN - Warning level is less then Crit" + exit $STATE_UNKNOWN + fi + result=`sqlplus -s ${3}/${4}@${2} << EOF +set pagesize 0 +set numf '9999999.99' +select (1-(pr.value/(dbg.value+cg.value)))*100 +from v\\$sysstat pr, v\\$sysstat dbg, v\\$sysstat cg +where pr.name='physical reads' +and dbg.name='db block gets' +and cg.name='consistent gets'; +EOF` + + if [ -n "`echo $result | grep ORA-`" ] ; then + error=` echo "$result" | grep "ORA-" | head -1` + echo "CRITICAL - $error" + exit $STATE_CRITICAL + fi + + buf_hr=`echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}'` + buf_hrx=`echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}'` + result=`sqlplus -s ${3}/${4}@${2} << EOF +set pagesize 0 +set numf '9999999.99' +select sum(lc.pins)/(sum(lc.pins)+sum(lc.reloads))*100 +from v\\$librarycache lc; +EOF` + + if [ -n "`echo $result | grep ORA-`" ] ; then + error=` echo "$result" | grep "ORA-" | head -1` + echo "CRITICAL - $error" + exit $STATE_CRITICAL + fi + + lib_hr=`echo "$result" | awk '/^[0-9\. \t]+$/ {print int($1)}'` + lib_hrx=`echo "$result" | awk '/^[0-9\. \t]+$/ {print $1}'` + + if [ $buf_hr -le ${5} -o $lib_hr -le ${5} ] ; then + echo "${2} CRITICAL - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100" + exit $STATE_CRITICAL + fi + if [ $buf_hr -le ${6} -o $lib_hr -le ${6} ] ; then + echo "${2} WARNING - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100" + exit $STATE_WARNING + fi + echo "${2} OK - Cache Hit Rates: $lib_hrx% Lib -- $buf_hrx% Buff|lib=$lib_hrx%;${6};${5};0;100 buffer=$buf_hrx%;${6};${5};0;100" + + exit $STATE_OK + ;; +--tablespace) + if [ ${6} -lt ${7} ] ; then + echo "UNKNOWN - Warning level is more then Crit" + exit $STATE_UNKNOWN + fi + result=`sqlplus -s ${3}/${4}@${2} << EOF +set pagesize 0 +set numf '9999999.99' +select b.free,a.total,100 - trunc(b.free/a.total * 1000) / 10 prc +from ( +select tablespace_name,sum(bytes)/1024/1024 total +from dba_data_files group by tablespace_name) A, +( select tablespace_name,sum(bytes)/1024/1024 free +from dba_free_space group by tablespace_name) B +where a.tablespace_name=b.tablespace_name and a.tablespace_name='${5}'; +EOF` + + if [ -n "`echo $result | grep ORA-`" ] ; then + error=` echo "$result" | grep "ORA-" | head -1` + echo "CRITICAL - $error" + exit $STATE_CRITICAL + fi + + ts_free=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($1)}'` + ts_total=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($2)}'` + ts_pct=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print int($3)}'` + ts_pctx=`echo "$result" | awk '/^[ 0-9\.\t ]+$/ {print $3}'` + if [ "$ts_free" -eq 0 -a "$ts_total" -eq 0 -a "$ts_pct" -eq 0 ] ; then + echo "No data returned by Oracle - tablespace $5 not found?" + exit $STATE_UNKNOWN + fi + if [ "$ts_pct" -ge ${6} ] ; then + echo "${2} : ${5} CRITICAL - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100" + exit $STATE_CRITICAL + fi + if [ "$ts_pct" -ge ${7} ] ; then + echo "${2} : ${5} WARNING - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100" + exit $STATE_WARNING + fi + echo "${2} : ${5} OK - $ts_pctx% used [ $ts_free / $ts_total MB available ]|${5}=$ts_pctx%;${7};${6};0;100" + exit $STATE_OK + ;; +*) + print_usage + exit $STATE_UNKNOWN +esac diff --git a/checkers/check_overcr b/checkers/check_overcr new file mode 100755 index 0000000000..8850dbee33 Binary files /dev/null and b/checkers/check_overcr differ diff --git a/checkers/check_pgsql b/checkers/check_pgsql new file mode 100755 index 0000000000..1847203517 Binary files /dev/null and b/checkers/check_pgsql differ diff --git a/checkers/check_ping b/checkers/check_ping new file mode 100755 index 0000000000..59ee1f0d6c Binary files /dev/null and b/checkers/check_ping differ diff --git a/checkers/check_pop b/checkers/check_pop new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_pop @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_procs b/checkers/check_procs new file mode 100755 index 0000000000..73df901cb8 Binary files /dev/null and b/checkers/check_procs differ diff --git a/checkers/check_radius b/checkers/check_radius new file mode 100755 index 0000000000..f07273eacf Binary files /dev/null and b/checkers/check_radius differ diff --git a/checkers/check_real b/checkers/check_real new file mode 100755 index 0000000000..8e1e98f521 Binary files /dev/null and b/checkers/check_real differ diff --git a/checkers/check_rpc b/checkers/check_rpc new file mode 100755 index 0000000000..cf3eb87e86 --- /dev/null +++ b/checkers/check_rpc @@ -0,0 +1,377 @@ +#! /usr/bin/perl -w +# +# check_rpc plugin for nagios +# +# usage: +# check_rpc host service +# +# Check if an rpc serice is registered and running +# using rpcinfo - $proto $host $prognum 2>&1 |"; +# +# Use these hosts.cfg entries as examples +# +# command[check_nfs]=/some/path/libexec/check_rpc $HOSTADDRESS$ nfs +# service[check_nfs]=NFS;24x7;3;5;5;unix-admin;60;24x7;1;1;1;;check_rpc +# +# initial version: 3 May 2000 by Truongchinh Nguyen and Karl DeBisschop +# Modified May 2002 Subhendu Ghosh - support for ePN and patches +# current status: $Revision: 1.8 $ +# +# Copyright Notice: GPL +# $Id: check_rpc.pl,v 1.8 2003/08/10 12:11:49 kdebisschop Exp $ +# + +use strict; +use lib "/usr/lib/nagios/plugins"; +use utils qw($TIMEOUT %ERRORS &print_revision &support); +use vars qw($PROGNAME); +my ($verbose,@proto,%prognum,$host,$response,$prognum,$port,$cmd,$progver,$state); +my ($array_ref,$test,$element,@progkeys,$proto,$a,$b); +my ($opt_V,$opt_h,$opt_C,$opt_p,$opt_H,$opt_c,$opt_u,$opt_t); +my ($line, @progvers, $response2,$response3); +$opt_V = $opt_h = $opt_C = $opt_p = $opt_H = $opt_u = $opt_t =''; +$state = 'UNKNOWN'; +$progver = $response=$response2= $response3 =''; + +$PROGNAME = "check_rpc"; +sub print_help (); +sub print_usage (); +sub in ($$); + +$ENV{'BASH_ENV'}=''; +$ENV{'ENV'}=''; +$ENV{'PATH'}=''; +$ENV{'LC_ALL'}='C'; + +#Initialise protocol for each progname number +# 'u' for UDP, 't' for TCP +$proto[10003]='u'; +$proto[10004]='u'; +$proto[10007]='u'; + +use Getopt::Long; +Getopt::Long::Configure('bundling'); +GetOptions( + "V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "C=s" => \$opt_C, "command=s" => \$opt_C, + "p=i" => \$opt_p, "port=i" => \$opt_p, + "H=s" => \$opt_H, "hostname=s" => \$opt_H, + "c=s" => \$opt_c, "progver=s" => \$opt_c, + "v+" => \$verbose, "verbose+" => \$verbose, + "u" => \$opt_u, "udp" => \$opt_u, + "t" => \$opt_t, "tcp" => \$opt_t +); + +# -h means display verbose help screen +if ($opt_h) { print_help(); exit $ERRORS{'OK'}; } + +# -V means display version number +if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.8 $ '); + exit $ERRORS{'OK'}; +} + +# Hash containing all RPC program names and numbers +# Add to the hash if support for new RPC program is required + +%prognum = ( + "portmapper" => 100000 , + "portmap" => 100000 , + "sunrpc" => 100000 , + "rpcbind" => 100000 , + "rstatd" => 100001 , + "rstat" => 100001 , + "rup" => 100001 , + "perfmeter" => 100001 , + "rstat_svc" => 100001 , + "rusersd" => 100002 , + "rusers" => 100002 , + "nfs" => 100003 , + "nfsprog" => 100003 , + "ypserv" => 100004 , + "ypprog" => 100004 , + "mountd" => 100005 , + "mount" => 100005 , + "showmount" => 100005 , + "ypbind" => 100007 , + "walld" => 100008 , + "rwall" => 100008 , + "shutdown" => 100008 , + "yppasswdd" => 100009 , + "yppasswd" => 100009 , + "etherstatd" => 100010 , + "etherstat" => 100010 , + "rquotad" => 100011 , + "rquotaprog" => 100011 , + "quota" => 100011 , + "rquota" => 100011 , + "sprayd" => 100012 , + "spray" => 100012 , + "3270_mapper" => 100013 , + "rje_mapper" => 100014 , + "selection_svc" => 100015 , + "selnsvc" => 100015 , + "database_svc" => 100016 , + "rexd" => 100017 , + "rex" => 100017 , + "alis" => 100018 , + "sched" => 100019 , + "llockmgr" => 100020 , + "nlockmgr" => 100021 , + "x25_inr" => 100022 , + "statmon" => 100023 , + "status" => 100024 , + "bootparam" => 100026 , + "ypupdated" => 100028 , + "ypupdate" => 100028 , + "keyserv" => 100029 , + "keyserver" => 100029 , + "sunlink_mapper" => 100033 , + "tfsd" => 100037 , + "nsed" => 100038 , + "nsemntd" => 100039 , + "showfhd" => 100043 , + "showfh" => 100043 , + "ioadmd" => 100055 , + "rpc.ioadmd" => 100055 , + "NETlicense" => 100062 , + "sunisamd" => 100065 , + "debug_svc" => 100066 , + "dbsrv" => 100066 , + "ypxfrd" => 100069 , + "rpc.ypxfrd" => 100069 , + "bugtraqd" => 100071 , + "kerbd" => 100078 , + "event" => 100101 , + "na.event" => 100101 , + "logger" => 100102 , + "na.logger" => 100102 , + "sync" => 100104 , + "na.sync" => 100104 , + "hostperf" => 100107 , + "na.hostperf" => 100107 , + "activity" => 100109 , + "na.activity" => 100109 , + "hostmem" => 100112 , + "na.hostmem" => 100112 , + "sample" => 100113 , + "na.sample" => 100113 , + "x25" => 100114 , + "na.x25" => 100114 , + "ping" => 100115 , + "na.ping" => 100115 , + "rpcnfs" => 100116 , + "na.rpcnfs" => 100116 , + "hostif" => 100117 , + "na.hostif" => 100117 , + "etherif" => 100118 , + "na.etherif" => 100118 , + "iproutes" => 100120 , + "na.iproutes" => 100120 , + "layers" => 100121 , + "na.layers" => 100121 , + "snmp" => 100122 , + "na.snmp" => 100122 , + "snmp-cmc" => 100122 , + "snmp-synoptics" => 100122 , + "snmp-unisys" => 100122 , + "snmp-utk" => 100122 , + "traffic" => 100123 , + "na.traffic" => 100123 , + "nfs_acl" => 100227 , + "sadmind" => 100232 , + "nisd" => 100300 , + "rpc.nisd" => 100300 , + "nispasswd" => 100303 , + "rpc.nispasswdd" => 100303 , + "ufsd" => 100233 , + "ufsd" => 100233 , + "pcnfsd" => 150001 , + "pcnfs" => 150001 , + "amd" => 300019 , + "amq" => 300019 , + "bwnfsd" => 545580417 , + "fypxfrd" => 600100069 , + "freebsd-ypxfrd" => 600100069 , +); + +# -v means verbose, -v-v means verbose twice = print above hash +if (defined $verbose && ($verbose > 1) ){ + my $key; + print "Supported programs:\n"; + print " name\t=>\tnumber\n"; + print " ===============================\n"; + foreach $key (sort keys %prognum) { + print " $key \t=>\t$prognum{$key} \n"; + } + print "\n\n"; + print_usage(); + exit $ERRORS{'OK'}; +} + +# -H means host name +unless ($opt_H) { print_usage(); exit $ERRORS{'UNKNOWN'}; } + +if (! utils::is_hostname($opt_H)){ + print "$opt_H is not a valid host name\n"; + print_usage(); + exit $ERRORS{"UNKNOWN"}; +}else{ + $host = $opt_H; +} + +if ($opt_t && $opt_u) { + print "Cannot define tcp AND udp\n"; + print_usage(); + exit $ERRORS{'UNKNOWN'}; +} + + +# -C means command name or number +$opt_C = shift unless ($opt_C); +unless ($opt_C) { print_usage(); exit -1; } +@progkeys = keys %prognum; +if ($opt_C =~ m/^([0-9]+)$/){ +# $response = "RPC ok: program $opt_C (version "; + $prognum = $1; +} elsif ( in( \@progkeys, $opt_C)) { +# $response = "RPC ok: $opt_C (version "; + $prognum = $prognum{$opt_C}; +} else { + print "Program $opt_C is not defined\n"; + exit $ERRORS{'UNKNOWN'}; +} + +# -p means port number +if($opt_p =~ /^([0-9]+)$/){ + $port = "-n $1"; +} else { + $port = ""; +} + +$proto = 'u'; +$proto = $proto[$prognum] if ($proto[$prognum]); +$proto = 't' if ($opt_t); +$proto = 'u' if ($opt_u); + + +# Just in case of problems, let's not hang Nagios +$SIG{'ALRM'} = sub { + print ("ERROR: No response from RPC server (alarm)\n"); + exit $ERRORS{"UNKNOWN"}; +}; +alarm($TIMEOUT); + +# -c is progver - if we need to check multiple specified versions. +if (defined $opt_c ) { + my $vers; + @progvers = split(/,/ ,$opt_c ); + foreach $vers (sort @progvers) { + if($vers =~ /^([0-9]+)$/){ + $progver = "$1"; + print "Checking $opt_C version $progver proto $proto\n" if $verbose; + get_rpcinfo(); + }else{ + print "Version $vers is not an integer\n" if $verbose; + } + + } +}else{ + get_rpcinfo(); +} + + +## translate proto for output +if ($proto eq "u" ){ + $proto = "udp"; +}else{ + $proto = "tcp"; +} + +if ($state eq 'OK') { + print "$state: RPC program $opt_C".$response." $proto running\n"; +}else{ + if($response){ + print "$state: RPC program $opt_C".$response2." $proto is not running,".$response." $proto is running\n"; + }else{ + print "$state: RPC program $opt_C $response2 $proto is not running\n"; + } +} +exit $ERRORS{$state}; + + +######## Subroutines ========================== + +sub get_rpcinfo { + $cmd = "$utils::PATH_TO_RPCINFO $port -" . "$proto $host $prognum $progver 2>&1 |"; + print "$cmd\n" if ($verbose); + open CMD, $cmd or die "Can't fork for rpcinfo: $!\n" ; + + while ( $line = ) { + printf "$line " if $verbose; + chomp $line; + + if ( $line =~ /program $prognum version ([0-9]*) ready and waiting/ ) { + $response .= " version $1"; + $state = 'OK' unless $state ne 'UNKNOWN'; + print "1:$response \n" if $verbose; + } + + if ( $line =~ /program $prognum version ([0-9]*) is not available/ ) { + $response2 .= " version $1"; + $state = 'CRITICAL'; + print "2:$response2 \n" if $verbose; + } + if ( $line =~ /program $prognum is not available/ ) { + $response3 = ""; + $response3 = "tcp" if $opt_t; + $response3 = "udp" if $opt_u; + $state = 'CRITICAL'; + print "3:$response3 \n" if $verbose; + } + } + close CMD; +} + + +sub print_help() { + print_revision($PROGNAME,'$Revision: 1.8 $ '); + print "Copyright (c) 2002 Karl DeBisschop/Truongchinh Nguyen/Subhendu Ghosh\n"; + print "\n"; + print "Check if a rpc service is registered and running using\n"; + print " rpcinfo -H host -C rpc_command \n"; + print "\n"; + print_usage(); + print "\n"; + print " The server providing the rpc service\n"; + print " The program name (or number).\n"; + print " The version you want to check for (one or more)\n"; + print " Should prevent checks of unknown versions being syslogged\n"; + print " e.g. 2,3,6 to check v2, v3, and v6\n"; + print " [-u | -t] Test UDP or TCP\n"; + print " [-v] Verbose \n"; + print " [-v -v] Verbose - will print supported programs and numbers \n"; + print "\n"; + support(); +} + +sub print_usage () { + print "Usage: \n"; + print " $PROGNAME -H host -C rpc_command [-p port] [-c program_version] [-u|-t] [-v]\n"; + print " $PROGNAME [-h | --help]\n"; + print " $PROGNAME [-V | --version]\n"; +} + +sub in ($$) { + $array_ref = shift; + $test = shift; + + while ( $element = shift @{$array_ref} ) { + if ($test eq $element) { + return 1; + } + } + return 0; +} + diff --git a/checkers/check_sensors b/checkers/check_sensors new file mode 100755 index 0000000000..66d264ad9b --- /dev/null +++ b/checkers/check_sensors @@ -0,0 +1,65 @@ +#! /bin/sh + +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin + +PROGNAME=`basename $0` +PROGPATH=`echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,'` +REVISION=`echo '$Revision: 1.2 $' | sed -e 's/[^0-9.]//g'` + +. $PROGPATH/utils.sh + + +print_usage() { + echo "Usage: $PROGNAME" +} + +print_help() { + print_revision $PROGNAME $REVISION + echo "" + print_usage + echo "" + echo "This plugin checks hardware status using the lm_sensors package." + echo "" + support + exit 0 +} + +case "$1" in + --help) + print_help + exit 0 + ;; + -h) + print_help + exit 0 + ;; + --version) + print_revision $PROGNAME $REVISION + exit 0 + ;; + -V) + print_revision $PROGNAME $REVISION + exit 0 + ;; + *) + sensordata=`sensors 2>&1` + status=$? + if test "$1" = "-v" -o "$1" = "--verbose"; then + echo ${sensordata} + fi + if test ${status} -eq 127; then + echo "SENSORS UNKNOWN - command not found (did you install lmsensors?)" + exit -1 + elif test ${status} -ne 0 ; then + echo "WARNING - sensors returned state $status" + exit 1 + fi + if echo ${sensordata} | egrep ALARM > /dev/null; then + echo SENSOR CRITICAL - Sensor alarm detected! + exit 2 + else + echo sensor ok + exit 0 + fi + ;; +esac diff --git a/checkers/check_simap b/checkers/check_simap new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_simap @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_smtp b/checkers/check_smtp new file mode 100755 index 0000000000..3c24434b34 Binary files /dev/null and b/checkers/check_smtp differ diff --git a/checkers/check_snmp b/checkers/check_snmp new file mode 100755 index 0000000000..9d20a25769 Binary files /dev/null and b/checkers/check_snmp differ diff --git a/checkers/check_spop b/checkers/check_spop new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_spop @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_ssh b/checkers/check_ssh new file mode 100755 index 0000000000..dcdc18e3d6 Binary files /dev/null and b/checkers/check_ssh differ diff --git a/checkers/check_ssmtp b/checkers/check_ssmtp new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_ssmtp @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_swap b/checkers/check_swap new file mode 100755 index 0000000000..765e17aac6 Binary files /dev/null and b/checkers/check_swap differ diff --git a/checkers/check_tcp b/checkers/check_tcp new file mode 100755 index 0000000000..c334ed1df3 Binary files /dev/null and b/checkers/check_tcp differ diff --git a/checkers/check_time b/checkers/check_time new file mode 100755 index 0000000000..976f730c23 Binary files /dev/null and b/checkers/check_time differ diff --git a/checkers/check_udp b/checkers/check_udp new file mode 100755 index 0000000000..d9a4d22345 Binary files /dev/null and b/checkers/check_udp differ diff --git a/checkers/check_udp2 b/checkers/check_udp2 new file mode 120000 index 0000000000..e838da97eb --- /dev/null +++ b/checkers/check_udp2 @@ -0,0 +1 @@ +check_tcp \ No newline at end of file diff --git a/checkers/check_ups b/checkers/check_ups new file mode 100755 index 0000000000..4f64f99bed Binary files /dev/null and b/checkers/check_ups differ diff --git a/checkers/check_users b/checkers/check_users new file mode 100755 index 0000000000..7795f20293 Binary files /dev/null and b/checkers/check_users differ diff --git a/checkers/check_wave b/checkers/check_wave new file mode 100755 index 0000000000..0f03c48850 --- /dev/null +++ b/checkers/check_wave @@ -0,0 +1,123 @@ +#! /usr/bin/perl -wT +# +# $Id: check_wave.pl,v 1.4 2002/10/28 13:05:08 kdebisschop Exp $ + + +use strict; +use lib "/usr/lib/nagios/plugins"; +use utils qw($TIMEOUT %ERRORS &print_revision &support); +use vars qw($PROGNAME); +use Getopt::Long; +use vars qw($opt_V $opt_h $verbose $opt_w $opt_c $opt_H); +my (@test, $low1, $med1, $high1, $snr, $low2, $med2, $high2); +my ($low, $med, $high, $lowavg, $medavg, $highavg, $tot, $ss); + +$PROGNAME = "check_wave"; +sub print_help (); +sub print_usage (); + +$ENV{'PATH'}=''; +$ENV{'BASH_ENV'}=''; +$ENV{'ENV'}=''; + +Getopt::Long::Configure('bundling'); +GetOptions + ("V" => \$opt_V, "version" => \$opt_V, + "h" => \$opt_h, "help" => \$opt_h, + "v" => \$verbose, "verbose" => \$verbose, + "w=s" => \$opt_w, "warning=s" => \$opt_w, + "c=s" => \$opt_c, "critical=s" => \$opt_c, + "H=s" => \$opt_H, "hostname=s" => \$opt_H); + +if ($opt_V) { + print_revision($PROGNAME,'$Revision: 1.4 $'); #' + exit $ERRORS{'OK'}; +} + +if ($opt_h) { + print_help(); + exit $ERRORS{'OK'}; +} + +$opt_H = shift unless ($opt_H); +print_usage() unless ($opt_H); +my $host = $1 if ($opt_H =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0]+(\.[a-zA-Z][-a-zA-Z0]+)*)$/); +print_usage() unless ($host); + +($opt_c) || ($opt_c = shift) || ($opt_c = 120); +my $critical = $1 if ($opt_c =~ /([0-9]+)/); + +($opt_w) || ($opt_w = shift) || ($opt_w = 60); +my $warning = $1 if ($opt_w =~ /([0-9]+)/); + +$low1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.8.1`; +@test = split(/ /,$low1); +$low1 = $test[2]; + +$med1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.9.1`; +@test = split(/ /,$med1); +$med1 = $test[2]; + +$high1 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.10.1`; +@test = split(/ /,$high1); +$high1 = $test[2]; + +sleep(2); + +$snr = `snmpget $host public .1.3.6.1.4.1.762.2.5.2.1.17.1`; +@test = split(/ /,$snr); +$snr = $test[2]; +$snr = int($snr*25); + +$low2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.8.1`; +@test = split(/ /,$low2); +$low2 = $test[2]; + +$med2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.9.1`; +@test = split(/ /,$med2); +$med2 = $test[2]; + +$high2 = `snmpget $host public .1.3.6.1.4.1.74.2.21.1.2.1.10.1`; +@test = split(/ /,$high2); +$high2 = $test[2]; + +$low = $low2 - $low1; +$med = $med2 - $med1; +$high = $high2 - $high1; + +$tot = $low + $med + $high; + +if ($tot==0) { + $ss = 0; +} else { + $lowavg = $low / $tot; + $medavg = $med / $tot; + $highavg = $high / $tot; + $ss = ($medavg*50) + ($highavg*100); +} + +printf("Signal Strength at: %3.0f%, SNR at $snr%",$ss); + +if ($ss<$critical) { + exit(2); +} elsif ($ss<$warning) { + exit(1); +} else { + exit(0); +} + + +sub print_usage () { + print "Usage: $PROGNAME -H [-w ] [-c ]\n"; +} + +sub print_help () { + print_revision($PROGNAME,'$Revision: 1.4 $'); + print "Copyright (c) 2000 Jeffery Blank/Karl DeBisschop\n"; + print "\n"; + print_usage(); + print "\n"; + print " = Signal strength at which a warning message will be generated.\n"; + print " = Signal strength at which a critical message will be generated.\n\n"; + support(); +} diff --git a/checkers/negate b/checkers/negate new file mode 100755 index 0000000000..d81c478767 Binary files /dev/null and b/checkers/negate differ diff --git a/checkers/urlize b/checkers/urlize new file mode 100755 index 0000000000..df17d2a526 Binary files /dev/null and b/checkers/urlize differ diff --git a/checkers/utils.pm b/checkers/utils.pm new file mode 100644 index 0000000000..0556ec49bd --- /dev/null +++ b/checkers/utils.pm @@ -0,0 +1,83 @@ +# Utility drawer for Nagios plugins. +# $Id: utils.pm.in,v 1.7 2003/04/13 04:25:36 sghosh Exp $ +# +# $Log: utils.pm.in,v $ +# Revision 1.7 2003/04/13 04:25:36 sghosh +# update for check_mailq - qmail support +# +# Revision 1.6 2003/02/03 20:29:55 sghosh +# change ntpdc to ntpq (Jonathan Rozes,Thomas Schimpke, bug-656237 ) +# +# Revision 1.5 2002/10/30 05:07:29 sghosh +# monitor mailq +# +# Revision 1.4 2002/05/27 02:01:09 sghosh +# new var - smbclient +# +# Revision 1.3 2002/05/10 03:49:22 sghosh +# added programs to autoconf +# +# Revision 1.2 2002/05/08 05:10:35 sghosh +# is_hostname added, update CODES to POSIX +# +# +package utils; + +require Exporter; +@ISA = qw(Exporter); +@EXPORT_OK = qw($TIMEOUT %ERRORS &print_revision &support &usage); + +#use strict; +#use vars($TIMEOUT %ERRORS); +sub print_revision ($$); +sub usage; +sub support(); +sub is_hostname; + +## updated by autoconf +$PATH_TO_RPCINFO = "/usr/bin/rpcinfo"; +$PATH_TO_NTPDATE = "/usr/sbin/ntpdate"; +$PATH_TO_NTPDC = "/usr/bin/ntpdc"; +$PATH_TO_NTPQ = "/usr/bin/ntpq"; +$PATH_TO_LMSTAT = "" ; +$PATH_TO_SMBCLIENT = "/usr/bin/smbclient"; +$PATH_TO_MAILQ = "/usr/bin/mailq"; +$PATH_TO_QMAIL_QSTAT = ""; + +## common variables +$TIMEOUT = 15; +%ERRORS=('OK'=>0,'WARNING'=>1,'CRITICAL'=>2,'UNKNOWN'=>3,'DEPENDENT'=>4); + +## utility subroutines +sub print_revision ($$) { + my $commandName = shift; + my $pluginRevision = shift; + $pluginRevision =~ s/^\$Revision: //; + $pluginRevision =~ s/ \$\s*$//; + print "$commandName (nagios-plugins 1.4.2) $pluginRevision\n"; + print "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n"; +} + +sub support () { + my $support='Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net.\nPlease include version information with all correspondence (when possible,\nuse output from the --version option of the plugin itself).\n'; + $support =~ s/@/\@/g; + $support =~ s/\\n/\n/g; + print $support; +} + +sub usage { + my $format=shift; + printf($format,@_); + exit $ERRORS{'UNKNOWN'}; +} + +sub is_hostname { + my $host1 = shift; + if ($host1 && $host1 =~ m/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|[a-zA-Z][-a-zA-Z0-9]+(\.[a-zA-Z][-a-zA-Z0-9]+)*)$/) { + return 1; + }else{ + return 0; + } +} + +1; diff --git a/checkers/utils.sh b/checkers/utils.sh new file mode 100755 index 0000000000..313b61816c --- /dev/null +++ b/checkers/utils.sh @@ -0,0 +1,23 @@ +#! /bin/sh + +STATE_OK=0 +STATE_WARNING=1 +STATE_CRITICAL=2 +STATE_UNKNOWN=3 +STATE_DEPENDENT=4 + +if test -x /usr/bin/printf; then + ECHO=/usr/bin/printf +else + ECHO=echo +fi + +print_revision() { + echo "$1 (nagios-plugins 1.4.2) $2" + $ECHO "The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n" | /bin/sed -e 's/\n/ /g' +} + +support() { + $ECHO "Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net.\nPlease include version information with all correspondence (when possible,\nuse output from the --version option of the plugin itself).\n" | /bin/sed -e 's/\n/ /g' +} + diff --git a/cleanup.php b/cleanup.php new file mode 100755 index 0000000000..8e045fa6f6 --- /dev/null +++ b/cleanup.php @@ -0,0 +1,78 @@ +#!/usr/bin/php + +### Clean up the database removing old IPs and links + + diff --git a/config.php.default b/config.php.default new file mode 100755 index 0000000000..a45ca82505 --- /dev/null +++ b/config.php.default @@ -0,0 +1,83 @@ +MySQL Error"; + die; +} +mysql_select_db($db_name); + +$now = time(); +$day = time() - (24 * 60 * 60); +$twoday = time() - (2 * 24 * 60 * 60); +$week = time() - (7 * 24 * 60 * 60); +$month = time() - (31 * 24 * 60 * 60); +$year = time() - (365 * 24 * 60 * 60); + +?> diff --git a/cron-hourly.sh b/cron-hourly.sh new file mode 100755 index 0000000000..c21f5f1522 --- /dev/null +++ b/cron-hourly.sh @@ -0,0 +1,11 @@ +#!/bin/bash +./cdp.php +./poll-reachability.php +./poll-os.php +./discover-ifs.php +./discover-nets.php +./ips.php +./discover-storage.php +./cleanup.php +./discover-temperatures.php +./discover-cisco-temp.php diff --git a/cron-minute.sh b/cron-minute.sh new file mode 100755 index 0000000000..ff20a181c8 --- /dev/null +++ b/cron-minute.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +./process-syslog.php +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & +sleep 5 +./process-syslog.php & + diff --git a/cron.sh b/cron.sh new file mode 100755 index 0000000000..495c7e4dbb --- /dev/null +++ b/cron.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +./poll-reachability.php +./poll-device.php & +./poll-interface.php & +./poll-temperatures.php & +./ips.php & +./check-services.php +./alerts.php + +wget -O /var/sites/network.vostron.net/rrd/dill.vostron.net-mail_virus.rrd http://dill.vostron.net/rrd/mailgraph_virus.rrd +wget -O /var/sites/network.vostron.net/rrd/dill.vostron.net-mail.rrd http://dill.vostron.net/rrd/mailgraph.rrd +wget -O /var/sites/network.vostron.net/rrd/dill.vostron.net-courier.rrd http://dill.vostron.net/rrd/couriergraph.rrd + diff --git a/discover-cisco-temp.php b/discover-cisco-temp.php new file mode 100755 index 0000000000..c85315b840 --- /dev/null +++ b/discover-cisco-temp.php @@ -0,0 +1,35 @@ +#!/usr/bin/php + $descr : $temp\n"); + mysql_query($query); + } + } + } +} +?> diff --git a/discover-ifs.php b/discover-ifs.php new file mode 100755 index 0000000000..982174f152 --- /dev/null +++ b/discover-ifs.php @@ -0,0 +1,45 @@ +#!/usr/bin/php + diff --git a/discover-ifs.sh b/discover-ifs.sh new file mode 100755 index 0000000000..89c9fe9ff9 --- /dev/null +++ b/discover-ifs.sh @@ -0,0 +1,11 @@ +./discover-ifs.php 1 & +./discover-ifs.php 2 & +./discover-ifs.php 3 & +./discover-ifs.php 4 & +./discover-ifs.php 5 & +./discover-ifs.php 6 & +./discover-ifs.php 7 & +./discover-ifs.php 8 & +./discover-ifs.php 9 & +./discover-ifs.php 0 & + diff --git a/discover-storage.php b/discover-storage.php new file mode 100755 index 0000000000..b84fbb608c --- /dev/null +++ b/discover-storage.php @@ -0,0 +1,31 @@ +#!/usr/bin/php + '0') { + echo("$oid,$descr,$units,$size\n"); + if(mysql_result(mysql_query("SELECT count(storage_id) FROM `storage` WHERE hrStorageIndex = '$ifIndex' AND host_id = '$id'"),0) == '0') { + $query = "INSERT INTO storage (`host_id`, `hrStorageIndex`, `hrStorageDescr`,`hrStorageSize`,`hrStorageAllocationUnits`) values ('$id', '$ifIndex', '$descr', '$size', '$units')"; + echo("$query \n"); + mysql_query($query); + } + } + } +} +?> diff --git a/discover-temperatures.php b/discover-temperatures.php new file mode 100755 index 0000000000..1d887aefeb --- /dev/null +++ b/discover-temperatures.php @@ -0,0 +1,34 @@ +#!/usr/bin/php + + diff --git a/generate-iplist.php b/generate-iplist.php new file mode 100755 index 0000000000..461fdbb9db --- /dev/null +++ b/generate-iplist.php @@ -0,0 +1,30 @@ +#!/usr/bin/php + '22') { + $broadcast = trim(`$ipcalc $cidr | grep Broadcast | cut -d" " -f 2`); + $ip = ip2long($network) + '1'; + $end = ip2long($broadcast); + while($ip < $end) { + $ipdotted = long2ip($ip); + if(mysql_result(mysql_query("SELECT count(id) FROM ipaddr WHERE addr = '$ipdotted'"),0) == '0' && match_network($nets, $ipdotted)) { + fputs($handle, $ipdotted . "\n"); + } + $ip++; + } + } +} + +`fping -t 100 -f ips.txt > ips-scanned.txt`; + +?> diff --git a/generate-map.sh b/generate-map.sh new file mode 100755 index 0000000000..3bec69ec4f --- /dev/null +++ b/generate-map.sh @@ -0,0 +1,3 @@ +#!/bin/bash +./map.php > map.dot && unflatten -l4 -f map.dot | dot -Tpng -o html/network-big.png && convert -resize 400x300 html/network-big.png html/network.png + diff --git a/get-apache.sh b/get-apache.sh new file mode 100755 index 0000000000..46ef75d58e --- /dev/null +++ b/get-apache.sh @@ -0,0 +1,43 @@ +#!/usr/bin/perl + +# depends on availability of status and extended status info from your +# Apache webserver -- your httpd.conf needs to include something like the +# following: (uncommented) +# +# SetHandler server-status +# Order allow,deny +# Allow from localhost +# +#ExtendedStatus On + +# can return hits or bytes (counters) + +@res = `/usr/bin/lynx -dump http://$ARGV[0]:80/server-status`; + +foreach $res (@res) { + if ($res =~ /Server uptime: (.*)$/) { $up = $1; last } else { next } + if ($res =~ /Server at/) { $server = $res; last } else { next } +} + +@res = `/usr/bin/lynx -dump http://$ARGV[0]:80/server-status?auto`; + +foreach $res (@res) { + if ($res =~ /Total Accesses: (\d+)/) { $d1 = $1; next } + if ($res =~ /Total kBytes: (\d+)/) { $d2 = $1 * 1024; next } +} + +$d1 = int($d1); +$d2 = int($d2); + +#if ($ARGV[1] eq "hits") { + print "$d1\n"; +# print "$d1\n"; +#} elsif ($ARGV[1] eq "bytes") { + print "$d2\n"; +# print "$d2\n"; +#} + +print "$up\n"; +print "$server"; + + diff --git a/host-add.php b/host-add.php new file mode 100755 index 0000000000..3bcb68984f --- /dev/null +++ b/host-add.php @@ -0,0 +1,22 @@ +#!/usr/bin/php + "); } + +?> diff --git a/host-del.php b/host-del.php new file mode 100755 index 0000000000..152a7e8899 --- /dev/null +++ b/host-del.php @@ -0,0 +1,20 @@ +#!/usr/bin/php + diff --git a/html/.htaccess b/html/.htaccess new file mode 100644 index 0000000000..716530c27f --- /dev/null +++ b/html/.htaccess @@ -0,0 +1,11 @@ +Options FollowSymlinks Multiviews + +RewriteBase / +RewriteEngine on +RewriteCond %{REQUEST_URI} !^(.*)\.php$ +RewriteCond %{REQUEST_URI} !^(.*)\.css$ +RewriteCond %{REQUEST_URI} !^(.*)\.jpg$ +RewriteCond %{REQUEST_URI} !^(.*)\.gif$ +RewriteCond %{REQUEST_URI} !^(.*)\.png$ + +RewriteRule ^([a-z]+)$ ?page=$1 diff --git a/html/css/styles.css b/html/css/styles.css new file mode 100644 index 0000000000..f8a46e9c20 --- /dev/null +++ b/html/css/styles.css @@ -0,0 +1,812 @@ +img { border: 0; } + +A { text-decoration: none; } +A:link { color: #0000cc; } +A:visited { color: #0000cc; } +A:hover { color: #990099; } +A:active { color: #00000; } + +A.red:visited, a.red, .red {color: #CC0000;} +A.grey:visited, A.grey, .gray {color: #36393D;} +A.black:visited, A.black, .black {color: #000000;} +A.green:visited, A.green, .green {color: #008C00;} +A.blue:visited, A.blue, .blue {color: #0000ff;} +A.orange:visited, a.orange, .orange {color: #FF7400;} + + +.pinkbg { background-color: #ffbbbb; } +.redbg { background-color: #ff8585; } +.bluebg { background-color: #aaaaff; } +.greenbg { background-color: #aaffaa; } +.greybg { background-color: #dddddd; } + +.page-h2 { + font-size: 14px; + font-weight: bold; + vertical-align: top; +} + +.header-text { + font-family: sans-serif; + font-size: 16px; + font-style: normal; + font-weight: bold; + color: #000000; +} + +.interface-header { + font-family: sans-serif; + font-size: 20px; + font-style: normal; + font-weight: bold; + color: #000000; +} + +.graphhead, .sectionhead { + font-size: 15px; + font-style: normal; + font-weight: bold; + color: #555; +} + +.tablehead { + font-family: Verdana, arial, sans-serif; + font-weight: bold; + font-size: 13px; + font-style: normal; + font-weight: bold; + color: #666; +} + +.box-desc { + font-family: "Verdana", Arial, Helvetica, sans-serif; + font-size: 12px; + font-style: italic; +} + +.interface-desc { + font-family: "Verdana", Arial, Helvetica, sans-serif; + font-size: 11px; + font-style: normal; +} + +.syslog { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; + font-style: normal; + color: #000000; +} + +.page-header, .device-header { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 24px; + font-weight: bold; + color: black; +} + +.top-subtitle { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 22px; + font-weight: bold; + vertical-align: middle; +} + +.device-header { + font-size: 20px; +} + +.device-head { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 16px; + font-weight: bold; +} + +.list-device, .list-device-ignored, .list-device-down, .list-device-ignored-up { +} + +.device-head, .list-device { + color: #000cc; +} + +.list-device-down, a.list-device-down, a.list-device-down:visited { + color: #cc0000; +} + +a.list-device-ignored-up { + color: #009900; +} + +.footer-text { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: bold; + color: #FFFFFF; +} + +.header-text-3 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 13px; + font-style: normal; + font-weight: bold; + color: #ffffff; +} + +.body-1 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 13px; + font-style: normal; + font-weight: normal; + color: #000000; +} + +.body-date-1 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + font-style: normal; + font-weight: normal; + color: #000000; +} + +.copy { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + font-style: italic; + font-weight: normal; + color: #000000; +} + +.body-2 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + color: #000000; +} + +.body-field-1 { + font-family: verdana, font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 13px; + font-style: normal; + font-weight: bold; + color: #000000; +} + +.body-head-1 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 16px; + font-style: normal; + font-weight: bold; + color: #000000; +} + +.body-head { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 32px; + font-style: normal; + font-weight: bold; + color: #000000; +} + +.body-head-2, .table-head-2 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: bold; + color: #000000; +} + +.table-head-2 { + background-color: #cccccc; +} + + +.text-more { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + font-style: normal; + font-weight: bold; + color: #cc0000; +} + +.body-blue { + color: #0000CC; +} + +.top-menu:link { + color: #dddddd; + text-decoration: none; +} +.top-menu:visited { + color: #dddddd; + text-decoration: none; +} +.top-menu:hover { + color: #CC0000; + text-decoration: none; +} +.top-menu:active { + color: #000000; + text-decoration: none; +} + +.menu-box-dash-off { + border: 1px dashed #000000; +} + +.copyright { + bottom: 0px; + margin: 10px auto; + position: relative; + background-color: #eeeeee; + text-align: center; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + font-style: italic; + font-weight: normal; + color: #000000; + width: 360px; + padding: 10px; +} + +body { + margin: 0px; padding: 0px 0px 0px 0px; + background-color: #fff; color: #666; + font: 10pt Verdana; + line-height: 20px; +} + + + + Really Delete? + ';self.close()">Yes! + No! diff --git a/html/graph.php b/html/graph.php new file mode 100644 index 0000000000..f32cdf05b3 --- /dev/null +++ b/html/graph.php @@ -0,0 +1,158 @@ + diff --git a/html/graphs b/html/graphs new file mode 120000 index 0000000000..f37cb17edc --- /dev/null +++ b/html/graphs @@ -0,0 +1 @@ +../graphs/ \ No newline at end of file diff --git a/html/images/16/Thumbs.db b/html/images/16/Thumbs.db new file mode 100755 index 0000000000..e464d402cd Binary files /dev/null and b/html/images/16/Thumbs.db differ diff --git a/html/images/16/accept.png b/html/images/16/accept.png new file mode 100755 index 0000000000..89c8129a49 Binary files /dev/null and b/html/images/16/accept.png differ diff --git a/html/images/16/add.png b/html/images/16/add.png new file mode 100755 index 0000000000..6332fefea4 Binary files /dev/null and b/html/images/16/add.png differ diff --git a/html/images/16/anchor.png b/html/images/16/anchor.png new file mode 100755 index 0000000000..9b3422c61e Binary files /dev/null and b/html/images/16/anchor.png differ diff --git a/html/images/16/application.png b/html/images/16/application.png new file mode 100755 index 0000000000..1dee9e3660 Binary files /dev/null and b/html/images/16/application.png differ diff --git a/html/images/16/application_add.png b/html/images/16/application_add.png new file mode 100755 index 0000000000..2e945076cf Binary files /dev/null and b/html/images/16/application_add.png differ diff --git a/html/images/16/application_cascade.png b/html/images/16/application_cascade.png new file mode 100755 index 0000000000..da5c622eac Binary files /dev/null and b/html/images/16/application_cascade.png differ diff --git a/html/images/16/application_delete.png b/html/images/16/application_delete.png new file mode 100755 index 0000000000..0a335acf67 Binary files /dev/null and b/html/images/16/application_delete.png differ diff --git a/html/images/16/application_double.png b/html/images/16/application_double.png new file mode 100755 index 0000000000..647592f2e9 Binary files /dev/null and b/html/images/16/application_double.png differ diff --git a/html/images/16/application_edit.png b/html/images/16/application_edit.png new file mode 100755 index 0000000000..fb2efb8775 Binary files /dev/null and b/html/images/16/application_edit.png differ diff --git a/html/images/16/application_error.png b/html/images/16/application_error.png new file mode 100755 index 0000000000..b35fa57171 Binary files /dev/null and b/html/images/16/application_error.png differ diff --git a/html/images/16/application_form.png b/html/images/16/application_form.png new file mode 100755 index 0000000000..807b862cfc Binary files /dev/null and b/html/images/16/application_form.png differ diff --git a/html/images/16/application_form_add.png b/html/images/16/application_form_add.png new file mode 100755 index 0000000000..28c2175e69 Binary files /dev/null and b/html/images/16/application_form_add.png differ diff --git a/html/images/16/application_form_delete.png b/html/images/16/application_form_delete.png new file mode 100755 index 0000000000..cd305ec83b Binary files /dev/null and b/html/images/16/application_form_delete.png differ diff --git a/html/images/16/application_form_edit.png b/html/images/16/application_form_edit.png new file mode 100755 index 0000000000..af486c940c Binary files /dev/null and b/html/images/16/application_form_edit.png differ diff --git a/html/images/16/application_form_magnify.png b/html/images/16/application_form_magnify.png new file mode 100755 index 0000000000..7b7fbd17e3 Binary files /dev/null and b/html/images/16/application_form_magnify.png differ diff --git a/html/images/16/application_get.png b/html/images/16/application_get.png new file mode 100755 index 0000000000..28e41ea2bb Binary files /dev/null and b/html/images/16/application_get.png differ diff --git a/html/images/16/application_go.png b/html/images/16/application_go.png new file mode 100755 index 0000000000..5cc2b0dd36 Binary files /dev/null and b/html/images/16/application_go.png differ diff --git a/html/images/16/application_home.png b/html/images/16/application_home.png new file mode 100755 index 0000000000..b60d0c85af Binary files /dev/null and b/html/images/16/application_home.png differ diff --git a/html/images/16/application_key.png b/html/images/16/application_key.png new file mode 100755 index 0000000000..998d65c694 Binary files /dev/null and b/html/images/16/application_key.png differ diff --git a/html/images/16/application_lightning.png b/html/images/16/application_lightning.png new file mode 100755 index 0000000000..7e91545c73 Binary files /dev/null and b/html/images/16/application_lightning.png differ diff --git a/html/images/16/application_link.png b/html/images/16/application_link.png new file mode 100755 index 0000000000..f8fbb3ed94 Binary files /dev/null and b/html/images/16/application_link.png differ diff --git a/html/images/16/application_osx.png b/html/images/16/application_osx.png new file mode 100755 index 0000000000..9f022ece86 Binary files /dev/null and b/html/images/16/application_osx.png differ diff --git a/html/images/16/application_osx_terminal.png b/html/images/16/application_osx_terminal.png new file mode 100755 index 0000000000..b3d8ce01e2 Binary files /dev/null and b/html/images/16/application_osx_terminal.png differ diff --git a/html/images/16/application_put.png b/html/images/16/application_put.png new file mode 100755 index 0000000000..c30cf59894 Binary files /dev/null and b/html/images/16/application_put.png differ diff --git a/html/images/16/application_side_boxes.png b/html/images/16/application_side_boxes.png new file mode 100755 index 0000000000..efbf3c4f8a Binary files /dev/null and b/html/images/16/application_side_boxes.png differ diff --git a/html/images/16/application_side_contract.png b/html/images/16/application_side_contract.png new file mode 100755 index 0000000000..3585f94d61 Binary files /dev/null and b/html/images/16/application_side_contract.png differ diff --git a/html/images/16/application_side_expand.png b/html/images/16/application_side_expand.png new file mode 100755 index 0000000000..030cf7c378 Binary files /dev/null and b/html/images/16/application_side_expand.png differ diff --git a/html/images/16/application_side_list.png b/html/images/16/application_side_list.png new file mode 100755 index 0000000000..248eaf1ac1 Binary files /dev/null and b/html/images/16/application_side_list.png differ diff --git a/html/images/16/application_side_tree.png b/html/images/16/application_side_tree.png new file mode 100755 index 0000000000..f04a52b3df Binary files /dev/null and b/html/images/16/application_side_tree.png differ diff --git a/html/images/16/application_split.png b/html/images/16/application_split.png new file mode 100755 index 0000000000..a91c78a5c4 Binary files /dev/null and b/html/images/16/application_split.png differ diff --git a/html/images/16/application_tile_horizontal.png b/html/images/16/application_tile_horizontal.png new file mode 100755 index 0000000000..8a1191c389 Binary files /dev/null and b/html/images/16/application_tile_horizontal.png differ diff --git a/html/images/16/application_tile_vertical.png b/html/images/16/application_tile_vertical.png new file mode 100755 index 0000000000..1d40383d31 Binary files /dev/null and b/html/images/16/application_tile_vertical.png differ diff --git a/html/images/16/application_view_columns.png b/html/images/16/application_view_columns.png new file mode 100755 index 0000000000..dc2e9d5f5f Binary files /dev/null and b/html/images/16/application_view_columns.png differ diff --git a/html/images/16/application_view_detail.png b/html/images/16/application_view_detail.png new file mode 100755 index 0000000000..aba044bbc9 Binary files /dev/null and b/html/images/16/application_view_detail.png differ diff --git a/html/images/16/application_view_gallery.png b/html/images/16/application_view_gallery.png new file mode 100755 index 0000000000..851950db7c Binary files /dev/null and b/html/images/16/application_view_gallery.png differ diff --git a/html/images/16/application_view_icons.png b/html/images/16/application_view_icons.png new file mode 100755 index 0000000000..6a93cdaa78 Binary files /dev/null and b/html/images/16/application_view_icons.png differ diff --git a/html/images/16/application_view_list.png b/html/images/16/application_view_list.png new file mode 100755 index 0000000000..acc30b853b Binary files /dev/null and b/html/images/16/application_view_list.png differ diff --git a/html/images/16/application_view_tile.png b/html/images/16/application_view_tile.png new file mode 100755 index 0000000000..3bc0bd32fc Binary files /dev/null and b/html/images/16/application_view_tile.png differ diff --git a/html/images/16/application_xp.png b/html/images/16/application_xp.png new file mode 100755 index 0000000000..d22860a316 Binary files /dev/null and b/html/images/16/application_xp.png differ diff --git a/html/images/16/application_xp_terminal.png b/html/images/16/application_xp_terminal.png new file mode 100755 index 0000000000..c28dd63812 Binary files /dev/null and b/html/images/16/application_xp_terminal.png differ diff --git a/html/images/16/arrow_branch.png b/html/images/16/arrow_branch.png new file mode 100755 index 0000000000..7542db1d1a Binary files /dev/null and b/html/images/16/arrow_branch.png differ diff --git a/html/images/16/arrow_divide.png b/html/images/16/arrow_divide.png new file mode 100755 index 0000000000..61a7b1d995 Binary files /dev/null and b/html/images/16/arrow_divide.png differ diff --git a/html/images/16/arrow_down.png b/html/images/16/arrow_down.png new file mode 100755 index 0000000000..2c4e279377 Binary files /dev/null and b/html/images/16/arrow_down.png differ diff --git a/html/images/16/arrow_in.png b/html/images/16/arrow_in.png new file mode 100755 index 0000000000..745c65134d Binary files /dev/null and b/html/images/16/arrow_in.png differ diff --git a/html/images/16/arrow_inout.png b/html/images/16/arrow_inout.png new file mode 100755 index 0000000000..1b763672ab Binary files /dev/null and b/html/images/16/arrow_inout.png differ diff --git a/html/images/16/arrow_join.png b/html/images/16/arrow_join.png new file mode 100755 index 0000000000..a128413d88 Binary files /dev/null and b/html/images/16/arrow_join.png differ diff --git a/html/images/16/arrow_left.png b/html/images/16/arrow_left.png new file mode 100755 index 0000000000..5dc696781e Binary files /dev/null and b/html/images/16/arrow_left.png differ diff --git a/html/images/16/arrow_merge.png b/html/images/16/arrow_merge.png new file mode 100755 index 0000000000..7502dbb332 Binary files /dev/null and b/html/images/16/arrow_merge.png differ diff --git a/html/images/16/arrow_out.png b/html/images/16/arrow_out.png new file mode 100755 index 0000000000..2e9bc42bec Binary files /dev/null and b/html/images/16/arrow_out.png differ diff --git a/html/images/16/arrow_redo.png b/html/images/16/arrow_redo.png new file mode 100755 index 0000000000..fdc394c7c5 Binary files /dev/null and b/html/images/16/arrow_redo.png differ diff --git a/html/images/16/arrow_refresh.png b/html/images/16/arrow_refresh.png new file mode 100755 index 0000000000..0de26566d4 Binary files /dev/null and b/html/images/16/arrow_refresh.png differ diff --git a/html/images/16/arrow_refresh_small.png b/html/images/16/arrow_refresh_small.png new file mode 100755 index 0000000000..d3087dfc92 Binary files /dev/null and b/html/images/16/arrow_refresh_small.png differ diff --git a/html/images/16/arrow_right.png b/html/images/16/arrow_right.png new file mode 100755 index 0000000000..b1a1819238 Binary files /dev/null and b/html/images/16/arrow_right.png differ diff --git a/html/images/16/arrow_rotate_anticlockwise.png b/html/images/16/arrow_rotate_anticlockwise.png new file mode 100755 index 0000000000..46c75aa859 Binary files /dev/null and b/html/images/16/arrow_rotate_anticlockwise.png differ diff --git a/html/images/16/arrow_rotate_clockwise.png b/html/images/16/arrow_rotate_clockwise.png new file mode 100755 index 0000000000..aa65210eb0 Binary files /dev/null and b/html/images/16/arrow_rotate_clockwise.png differ diff --git a/html/images/16/arrow_switch.png b/html/images/16/arrow_switch.png new file mode 100755 index 0000000000..258c16c63a Binary files /dev/null and b/html/images/16/arrow_switch.png differ diff --git a/html/images/16/arrow_turn_left.png b/html/images/16/arrow_turn_left.png new file mode 100755 index 0000000000..a3d6c9e39e Binary files /dev/null and b/html/images/16/arrow_turn_left.png differ diff --git a/html/images/16/arrow_turn_right.png b/html/images/16/arrow_turn_right.png new file mode 100755 index 0000000000..629f20d622 Binary files /dev/null and b/html/images/16/arrow_turn_right.png differ diff --git a/html/images/16/arrow_undo.png b/html/images/16/arrow_undo.png new file mode 100755 index 0000000000..6972c5e594 Binary files /dev/null and b/html/images/16/arrow_undo.png differ diff --git a/html/images/16/arrow_up.png b/html/images/16/arrow_up.png new file mode 100755 index 0000000000..1ebb193243 Binary files /dev/null and b/html/images/16/arrow_up.png differ diff --git a/html/images/16/asterisk_orange.png b/html/images/16/asterisk_orange.png new file mode 100755 index 0000000000..1ebebde546 Binary files /dev/null and b/html/images/16/asterisk_orange.png differ diff --git a/html/images/16/asterisk_yellow.png b/html/images/16/asterisk_yellow.png new file mode 100755 index 0000000000..bab7cc9bcc Binary files /dev/null and b/html/images/16/asterisk_yellow.png differ diff --git a/html/images/16/attach.png b/html/images/16/attach.png new file mode 100755 index 0000000000..ea897cc9f1 Binary files /dev/null and b/html/images/16/attach.png differ diff --git a/html/images/16/award_star_add.png b/html/images/16/award_star_add.png new file mode 100755 index 0000000000..9c4be9be20 Binary files /dev/null and b/html/images/16/award_star_add.png differ diff --git a/html/images/16/award_star_bronze_1.png b/html/images/16/award_star_bronze_1.png new file mode 100755 index 0000000000..658c7117bb Binary files /dev/null and b/html/images/16/award_star_bronze_1.png differ diff --git a/html/images/16/award_star_bronze_2.png b/html/images/16/award_star_bronze_2.png new file mode 100755 index 0000000000..e47babd7ba Binary files /dev/null and b/html/images/16/award_star_bronze_2.png differ diff --git a/html/images/16/award_star_bronze_3.png b/html/images/16/award_star_bronze_3.png new file mode 100755 index 0000000000..396e4b3a25 Binary files /dev/null and b/html/images/16/award_star_bronze_3.png differ diff --git a/html/images/16/award_star_delete.png b/html/images/16/award_star_delete.png new file mode 100755 index 0000000000..4721b152a0 Binary files /dev/null and b/html/images/16/award_star_delete.png differ diff --git a/html/images/16/award_star_gold_1.png b/html/images/16/award_star_gold_1.png new file mode 100755 index 0000000000..97a22b72ee Binary files /dev/null and b/html/images/16/award_star_gold_1.png differ diff --git a/html/images/16/award_star_gold_2.png b/html/images/16/award_star_gold_2.png new file mode 100755 index 0000000000..0eaa571757 Binary files /dev/null and b/html/images/16/award_star_gold_2.png differ diff --git a/html/images/16/award_star_gold_3.png b/html/images/16/award_star_gold_3.png new file mode 100755 index 0000000000..124c9914f3 Binary files /dev/null and b/html/images/16/award_star_gold_3.png differ diff --git a/html/images/16/award_star_silver_1.png b/html/images/16/award_star_silver_1.png new file mode 100755 index 0000000000..028a54626a Binary files /dev/null and b/html/images/16/award_star_silver_1.png differ diff --git a/html/images/16/award_star_silver_2.png b/html/images/16/award_star_silver_2.png new file mode 100755 index 0000000000..e487c3a19e Binary files /dev/null and b/html/images/16/award_star_silver_2.png differ diff --git a/html/images/16/award_star_silver_3.png b/html/images/16/award_star_silver_3.png new file mode 100755 index 0000000000..1d72d47247 Binary files /dev/null and b/html/images/16/award_star_silver_3.png differ diff --git a/html/images/16/basket.png b/html/images/16/basket.png new file mode 100755 index 0000000000..b0686d7871 Binary files /dev/null and b/html/images/16/basket.png differ diff --git a/html/images/16/basket_add.png b/html/images/16/basket_add.png new file mode 100755 index 0000000000..355436823b Binary files /dev/null and b/html/images/16/basket_add.png differ diff --git a/html/images/16/basket_delete.png b/html/images/16/basket_delete.png new file mode 100755 index 0000000000..1349974f60 Binary files /dev/null and b/html/images/16/basket_delete.png differ diff --git a/html/images/16/basket_edit.png b/html/images/16/basket_edit.png new file mode 100755 index 0000000000..8138bbdf05 Binary files /dev/null and b/html/images/16/basket_edit.png differ diff --git a/html/images/16/basket_error.png b/html/images/16/basket_error.png new file mode 100755 index 0000000000..3978b2923a Binary files /dev/null and b/html/images/16/basket_error.png differ diff --git a/html/images/16/basket_go.png b/html/images/16/basket_go.png new file mode 100755 index 0000000000..ed8b9a5769 Binary files /dev/null and b/html/images/16/basket_go.png differ diff --git a/html/images/16/basket_put.png b/html/images/16/basket_put.png new file mode 100755 index 0000000000..be62faaaab Binary files /dev/null and b/html/images/16/basket_put.png differ diff --git a/html/images/16/basket_remove.png b/html/images/16/basket_remove.png new file mode 100755 index 0000000000..04dd7fd3bb Binary files /dev/null and b/html/images/16/basket_remove.png differ diff --git a/html/images/16/bell.png b/html/images/16/bell.png new file mode 100755 index 0000000000..6e0015df4f Binary files /dev/null and b/html/images/16/bell.png differ diff --git a/html/images/16/bell_add.png b/html/images/16/bell_add.png new file mode 100755 index 0000000000..7db01d6279 Binary files /dev/null and b/html/images/16/bell_add.png differ diff --git a/html/images/16/bell_delete.png b/html/images/16/bell_delete.png new file mode 100755 index 0000000000..23907bbba9 Binary files /dev/null and b/html/images/16/bell_delete.png differ diff --git a/html/images/16/bell_error.png b/html/images/16/bell_error.png new file mode 100755 index 0000000000..a0ddc00281 Binary files /dev/null and b/html/images/16/bell_error.png differ diff --git a/html/images/16/bell_go.png b/html/images/16/bell_go.png new file mode 100755 index 0000000000..b89bb34345 Binary files /dev/null and b/html/images/16/bell_go.png differ diff --git a/html/images/16/bell_link.png b/html/images/16/bell_link.png new file mode 100755 index 0000000000..b8c64af1ee Binary files /dev/null and b/html/images/16/bell_link.png differ diff --git a/html/images/16/bin.png b/html/images/16/bin.png new file mode 100755 index 0000000000..ebad933c8b Binary files /dev/null and b/html/images/16/bin.png differ diff --git a/html/images/16/bin_closed.png b/html/images/16/bin_closed.png new file mode 100755 index 0000000000..afe22ba99e Binary files /dev/null and b/html/images/16/bin_closed.png differ diff --git a/html/images/16/bin_empty.png b/html/images/16/bin_empty.png new file mode 100755 index 0000000000..375b8bf6a0 Binary files /dev/null and b/html/images/16/bin_empty.png differ diff --git a/html/images/16/bomb.png b/html/images/16/bomb.png new file mode 100755 index 0000000000..1be37974ad Binary files /dev/null and b/html/images/16/bomb.png differ diff --git a/html/images/16/book.png b/html/images/16/book.png new file mode 100755 index 0000000000..b0f4dd7928 Binary files /dev/null and b/html/images/16/book.png differ diff --git a/html/images/16/book_add.png b/html/images/16/book_add.png new file mode 100755 index 0000000000..e2f0847274 Binary files /dev/null and b/html/images/16/book_add.png differ diff --git a/html/images/16/book_addresses.png b/html/images/16/book_addresses.png new file mode 100755 index 0000000000..b73419ba82 Binary files /dev/null and b/html/images/16/book_addresses.png differ diff --git a/html/images/16/book_delete.png b/html/images/16/book_delete.png new file mode 100755 index 0000000000..d9a6340d72 Binary files /dev/null and b/html/images/16/book_delete.png differ diff --git a/html/images/16/book_edit.png b/html/images/16/book_edit.png new file mode 100755 index 0000000000..6e756cc85a Binary files /dev/null and b/html/images/16/book_edit.png differ diff --git a/html/images/16/book_error.png b/html/images/16/book_error.png new file mode 100755 index 0000000000..f3fbed0dc8 Binary files /dev/null and b/html/images/16/book_error.png differ diff --git a/html/images/16/book_go.png b/html/images/16/book_go.png new file mode 100755 index 0000000000..cd4e1964c4 Binary files /dev/null and b/html/images/16/book_go.png differ diff --git a/html/images/16/book_key.png b/html/images/16/book_key.png new file mode 100755 index 0000000000..d8e23ec932 Binary files /dev/null and b/html/images/16/book_key.png differ diff --git a/html/images/16/book_link.png b/html/images/16/book_link.png new file mode 100755 index 0000000000..dd0820e86d Binary files /dev/null and b/html/images/16/book_link.png differ diff --git a/html/images/16/book_next.png b/html/images/16/book_next.png new file mode 100755 index 0000000000..ff2ea1ab92 Binary files /dev/null and b/html/images/16/book_next.png differ diff --git a/html/images/16/book_open.png b/html/images/16/book_open.png new file mode 100755 index 0000000000..7d863f9497 Binary files /dev/null and b/html/images/16/book_open.png differ diff --git a/html/images/16/book_previous.png b/html/images/16/book_previous.png new file mode 100755 index 0000000000..2e53c6980f Binary files /dev/null and b/html/images/16/book_previous.png differ diff --git a/html/images/16/box.png b/html/images/16/box.png new file mode 100755 index 0000000000..8443c23eb9 Binary files /dev/null and b/html/images/16/box.png differ diff --git a/html/images/16/brick.png b/html/images/16/brick.png new file mode 100755 index 0000000000..7851cf34c9 Binary files /dev/null and b/html/images/16/brick.png differ diff --git a/html/images/16/brick_add.png b/html/images/16/brick_add.png new file mode 100755 index 0000000000..fac186bfb7 Binary files /dev/null and b/html/images/16/brick_add.png differ diff --git a/html/images/16/brick_delete.png b/html/images/16/brick_delete.png new file mode 100755 index 0000000000..3a8c373482 Binary files /dev/null and b/html/images/16/brick_delete.png differ diff --git a/html/images/16/brick_edit.png b/html/images/16/brick_edit.png new file mode 100755 index 0000000000..eb06df3bb3 Binary files /dev/null and b/html/images/16/brick_edit.png differ diff --git a/html/images/16/brick_error.png b/html/images/16/brick_error.png new file mode 100755 index 0000000000..18ab01eb2b Binary files /dev/null and b/html/images/16/brick_error.png differ diff --git a/html/images/16/brick_go.png b/html/images/16/brick_go.png new file mode 100755 index 0000000000..fe0d33567d Binary files /dev/null and b/html/images/16/brick_go.png differ diff --git a/html/images/16/brick_link.png b/html/images/16/brick_link.png new file mode 100755 index 0000000000..9ebf013a23 Binary files /dev/null and b/html/images/16/brick_link.png differ diff --git a/html/images/16/bricks.png b/html/images/16/bricks.png new file mode 100755 index 0000000000..0905f933b8 Binary files /dev/null and b/html/images/16/bricks.png differ diff --git a/html/images/16/briefcase.png b/html/images/16/briefcase.png new file mode 100755 index 0000000000..05c5649129 Binary files /dev/null and b/html/images/16/briefcase.png differ diff --git a/html/images/16/bug.png b/html/images/16/bug.png new file mode 100755 index 0000000000..2d5fb90ec6 Binary files /dev/null and b/html/images/16/bug.png differ diff --git a/html/images/16/bug_add.png b/html/images/16/bug_add.png new file mode 100755 index 0000000000..ced7817474 Binary files /dev/null and b/html/images/16/bug_add.png differ diff --git a/html/images/16/bug_delete.png b/html/images/16/bug_delete.png new file mode 100755 index 0000000000..e81d7571a9 Binary files /dev/null and b/html/images/16/bug_delete.png differ diff --git a/html/images/16/bug_edit.png b/html/images/16/bug_edit.png new file mode 100755 index 0000000000..e5c7dc0572 Binary files /dev/null and b/html/images/16/bug_edit.png differ diff --git a/html/images/16/bug_error.png b/html/images/16/bug_error.png new file mode 100755 index 0000000000..c4e8c28096 Binary files /dev/null and b/html/images/16/bug_error.png differ diff --git a/html/images/16/bug_go.png b/html/images/16/bug_go.png new file mode 100755 index 0000000000..4e4ae99db3 Binary files /dev/null and b/html/images/16/bug_go.png differ diff --git a/html/images/16/bug_link.png b/html/images/16/bug_link.png new file mode 100755 index 0000000000..30e25abac0 Binary files /dev/null and b/html/images/16/bug_link.png differ diff --git a/html/images/16/building.png b/html/images/16/building.png new file mode 100755 index 0000000000..11a017cfaa Binary files /dev/null and b/html/images/16/building.png differ diff --git a/html/images/16/building_add.png b/html/images/16/building_add.png new file mode 100755 index 0000000000..d88e2b9ab7 Binary files /dev/null and b/html/images/16/building_add.png differ diff --git a/html/images/16/building_delete.png b/html/images/16/building_delete.png new file mode 100755 index 0000000000..db6455d2d5 Binary files /dev/null and b/html/images/16/building_delete.png differ diff --git a/html/images/16/building_edit.png b/html/images/16/building_edit.png new file mode 100755 index 0000000000..646db36bf7 Binary files /dev/null and b/html/images/16/building_edit.png differ diff --git a/html/images/16/building_error.png b/html/images/16/building_error.png new file mode 100755 index 0000000000..a342eefc68 Binary files /dev/null and b/html/images/16/building_error.png differ diff --git a/html/images/16/building_go.png b/html/images/16/building_go.png new file mode 100755 index 0000000000..cdcbcb381c Binary files /dev/null and b/html/images/16/building_go.png differ diff --git a/html/images/16/building_key.png b/html/images/16/building_key.png new file mode 100755 index 0000000000..8b79e30ed9 Binary files /dev/null and b/html/images/16/building_key.png differ diff --git a/html/images/16/building_link.png b/html/images/16/building_link.png new file mode 100755 index 0000000000..a340629ac9 Binary files /dev/null and b/html/images/16/building_link.png differ diff --git a/html/images/16/bullet_add.png b/html/images/16/bullet_add.png new file mode 100755 index 0000000000..41ff8335b0 Binary files /dev/null and b/html/images/16/bullet_add.png differ diff --git a/html/images/16/bullet_arrow_bottom.png b/html/images/16/bullet_arrow_bottom.png new file mode 100755 index 0000000000..1a28d82500 Binary files /dev/null and b/html/images/16/bullet_arrow_bottom.png differ diff --git a/html/images/16/bullet_arrow_down.png b/html/images/16/bullet_arrow_down.png new file mode 100755 index 0000000000..9b23c06d7b Binary files /dev/null and b/html/images/16/bullet_arrow_down.png differ diff --git a/html/images/16/bullet_arrow_top.png b/html/images/16/bullet_arrow_top.png new file mode 100755 index 0000000000..0ce86d2b2b Binary files /dev/null and b/html/images/16/bullet_arrow_top.png differ diff --git a/html/images/16/bullet_arrow_up.png b/html/images/16/bullet_arrow_up.png new file mode 100755 index 0000000000..24df0f4212 Binary files /dev/null and b/html/images/16/bullet_arrow_up.png differ diff --git a/html/images/16/bullet_black.png b/html/images/16/bullet_black.png new file mode 100755 index 0000000000..57619706d1 Binary files /dev/null and b/html/images/16/bullet_black.png differ diff --git a/html/images/16/bullet_blue.png b/html/images/16/bullet_blue.png new file mode 100755 index 0000000000..a7651ec8a0 Binary files /dev/null and b/html/images/16/bullet_blue.png differ diff --git a/html/images/16/bullet_delete.png b/html/images/16/bullet_delete.png new file mode 100755 index 0000000000..bd6271b246 Binary files /dev/null and b/html/images/16/bullet_delete.png differ diff --git a/html/images/16/bullet_disk.png b/html/images/16/bullet_disk.png new file mode 100755 index 0000000000..209c6a7862 Binary files /dev/null and b/html/images/16/bullet_disk.png differ diff --git a/html/images/16/bullet_error.png b/html/images/16/bullet_error.png new file mode 100755 index 0000000000..bca2b491fd Binary files /dev/null and b/html/images/16/bullet_error.png differ diff --git a/html/images/16/bullet_feed.png b/html/images/16/bullet_feed.png new file mode 100755 index 0000000000..1a0e0f18f8 Binary files /dev/null and b/html/images/16/bullet_feed.png differ diff --git a/html/images/16/bullet_go.png b/html/images/16/bullet_go.png new file mode 100755 index 0000000000..bc4faa709e Binary files /dev/null and b/html/images/16/bullet_go.png differ diff --git a/html/images/16/bullet_green.png b/html/images/16/bullet_green.png new file mode 100755 index 0000000000..058ad261f5 Binary files /dev/null and b/html/images/16/bullet_green.png differ diff --git a/html/images/16/bullet_key.png b/html/images/16/bullet_key.png new file mode 100755 index 0000000000..3d37f2ea49 Binary files /dev/null and b/html/images/16/bullet_key.png differ diff --git a/html/images/16/bullet_orange.png b/html/images/16/bullet_orange.png new file mode 100755 index 0000000000..fa63024e55 Binary files /dev/null and b/html/images/16/bullet_orange.png differ diff --git a/html/images/16/bullet_picture.png b/html/images/16/bullet_picture.png new file mode 100755 index 0000000000..386cb302f1 Binary files /dev/null and b/html/images/16/bullet_picture.png differ diff --git a/html/images/16/bullet_pink.png b/html/images/16/bullet_pink.png new file mode 100755 index 0000000000..0c9f73e3f5 Binary files /dev/null and b/html/images/16/bullet_pink.png differ diff --git a/html/images/16/bullet_purple.png b/html/images/16/bullet_purple.png new file mode 100755 index 0000000000..52ba5036b9 Binary files /dev/null and b/html/images/16/bullet_purple.png differ diff --git a/html/images/16/bullet_red.png b/html/images/16/bullet_red.png new file mode 100755 index 0000000000..0cd8031158 Binary files /dev/null and b/html/images/16/bullet_red.png differ diff --git a/html/images/16/bullet_star.png b/html/images/16/bullet_star.png new file mode 100755 index 0000000000..fab774a328 Binary files /dev/null and b/html/images/16/bullet_star.png differ diff --git a/html/images/16/bullet_toggle_minus.png b/html/images/16/bullet_toggle_minus.png new file mode 100755 index 0000000000..b47ce55f68 Binary files /dev/null and b/html/images/16/bullet_toggle_minus.png differ diff --git a/html/images/16/bullet_toggle_plus.png b/html/images/16/bullet_toggle_plus.png new file mode 100755 index 0000000000..9ab4a89664 Binary files /dev/null and b/html/images/16/bullet_toggle_plus.png differ diff --git a/html/images/16/bullet_white.png b/html/images/16/bullet_white.png new file mode 100755 index 0000000000..a9af8d44bf Binary files /dev/null and b/html/images/16/bullet_white.png differ diff --git a/html/images/16/bullet_wrench.png b/html/images/16/bullet_wrench.png new file mode 100755 index 0000000000..67817e6e5a Binary files /dev/null and b/html/images/16/bullet_wrench.png differ diff --git a/html/images/16/bullet_yellow.png b/html/images/16/bullet_yellow.png new file mode 100755 index 0000000000..6469cea7e9 Binary files /dev/null and b/html/images/16/bullet_yellow.png differ diff --git a/html/images/16/cake.png b/html/images/16/cake.png new file mode 100755 index 0000000000..4ef151aeef Binary files /dev/null and b/html/images/16/cake.png differ diff --git a/html/images/16/calculator.png b/html/images/16/calculator.png new file mode 100755 index 0000000000..701a60a5a4 Binary files /dev/null and b/html/images/16/calculator.png differ diff --git a/html/images/16/calculator_add.png b/html/images/16/calculator_add.png new file mode 100755 index 0000000000..fd377bde39 Binary files /dev/null and b/html/images/16/calculator_add.png differ diff --git a/html/images/16/calculator_delete.png b/html/images/16/calculator_delete.png new file mode 100755 index 0000000000..ac96170ecd Binary files /dev/null and b/html/images/16/calculator_delete.png differ diff --git a/html/images/16/calculator_edit.png b/html/images/16/calculator_edit.png new file mode 100755 index 0000000000..63b06b9875 Binary files /dev/null and b/html/images/16/calculator_edit.png differ diff --git a/html/images/16/calculator_error.png b/html/images/16/calculator_error.png new file mode 100755 index 0000000000..0bc4288a47 Binary files /dev/null and b/html/images/16/calculator_error.png differ diff --git a/html/images/16/calculator_link.png b/html/images/16/calculator_link.png new file mode 100755 index 0000000000..a2a8fe69f1 Binary files /dev/null and b/html/images/16/calculator_link.png differ diff --git a/html/images/16/calendar.png b/html/images/16/calendar.png new file mode 100755 index 0000000000..658913852d Binary files /dev/null and b/html/images/16/calendar.png differ diff --git a/html/images/16/calendar_add.png b/html/images/16/calendar_add.png new file mode 100755 index 0000000000..17679db6bd Binary files /dev/null and b/html/images/16/calendar_add.png differ diff --git a/html/images/16/calendar_delete.png b/html/images/16/calendar_delete.png new file mode 100755 index 0000000000..69a3b10ad1 Binary files /dev/null and b/html/images/16/calendar_delete.png differ diff --git a/html/images/16/calendar_edit.png b/html/images/16/calendar_edit.png new file mode 100755 index 0000000000..d1d2d6e684 Binary files /dev/null and b/html/images/16/calendar_edit.png differ diff --git a/html/images/16/calendar_link.png b/html/images/16/calendar_link.png new file mode 100755 index 0000000000..6b106b9429 Binary files /dev/null and b/html/images/16/calendar_link.png differ diff --git a/html/images/16/calendar_view_day.png b/html/images/16/calendar_view_day.png new file mode 100755 index 0000000000..9740f76ee6 Binary files /dev/null and b/html/images/16/calendar_view_day.png differ diff --git a/html/images/16/calendar_view_month.png b/html/images/16/calendar_view_month.png new file mode 100755 index 0000000000..6cff76c1db Binary files /dev/null and b/html/images/16/calendar_view_month.png differ diff --git a/html/images/16/calendar_view_week.png b/html/images/16/calendar_view_week.png new file mode 100755 index 0000000000..8fe695f51f Binary files /dev/null and b/html/images/16/calendar_view_week.png differ diff --git a/html/images/16/camera.png b/html/images/16/camera.png new file mode 100755 index 0000000000..8536d1a795 Binary files /dev/null and b/html/images/16/camera.png differ diff --git a/html/images/16/camera_add.png b/html/images/16/camera_add.png new file mode 100755 index 0000000000..08b5da9891 Binary files /dev/null and b/html/images/16/camera_add.png differ diff --git a/html/images/16/camera_delete.png b/html/images/16/camera_delete.png new file mode 100755 index 0000000000..3846d74cd8 Binary files /dev/null and b/html/images/16/camera_delete.png differ diff --git a/html/images/16/camera_edit.png b/html/images/16/camera_edit.png new file mode 100755 index 0000000000..b5015b103a Binary files /dev/null and b/html/images/16/camera_edit.png differ diff --git a/html/images/16/camera_error.png b/html/images/16/camera_error.png new file mode 100755 index 0000000000..3c1bc95c9c Binary files /dev/null and b/html/images/16/camera_error.png differ diff --git a/html/images/16/camera_go.png b/html/images/16/camera_go.png new file mode 100755 index 0000000000..94ce2b255d Binary files /dev/null and b/html/images/16/camera_go.png differ diff --git a/html/images/16/camera_link.png b/html/images/16/camera_link.png new file mode 100755 index 0000000000..d2ac9f9350 Binary files /dev/null and b/html/images/16/camera_link.png differ diff --git a/html/images/16/camera_small.png b/html/images/16/camera_small.png new file mode 100755 index 0000000000..454b0b0199 Binary files /dev/null and b/html/images/16/camera_small.png differ diff --git a/html/images/16/cancel.png b/html/images/16/cancel.png new file mode 100755 index 0000000000..c149c2bc01 Binary files /dev/null and b/html/images/16/cancel.png differ diff --git a/html/images/16/car.png b/html/images/16/car.png new file mode 100755 index 0000000000..4f3a770f04 Binary files /dev/null and b/html/images/16/car.png differ diff --git a/html/images/16/car_add.png b/html/images/16/car_add.png new file mode 100755 index 0000000000..1215a51a4c Binary files /dev/null and b/html/images/16/car_add.png differ diff --git a/html/images/16/car_delete.png b/html/images/16/car_delete.png new file mode 100755 index 0000000000..2803b56784 Binary files /dev/null and b/html/images/16/car_delete.png differ diff --git a/html/images/16/cart.png b/html/images/16/cart.png new file mode 100755 index 0000000000..1baf7b9fde Binary files /dev/null and b/html/images/16/cart.png differ diff --git a/html/images/16/cart_add.png b/html/images/16/cart_add.png new file mode 100755 index 0000000000..45c2900089 Binary files /dev/null and b/html/images/16/cart_add.png differ diff --git a/html/images/16/cart_delete.png b/html/images/16/cart_delete.png new file mode 100755 index 0000000000..ac5bce5c88 Binary files /dev/null and b/html/images/16/cart_delete.png differ diff --git a/html/images/16/cart_edit.png b/html/images/16/cart_edit.png new file mode 100755 index 0000000000..b94ff88e6a Binary files /dev/null and b/html/images/16/cart_edit.png differ diff --git a/html/images/16/cart_error.png b/html/images/16/cart_error.png new file mode 100755 index 0000000000..144c8353aa Binary files /dev/null and b/html/images/16/cart_error.png differ diff --git a/html/images/16/cart_go.png b/html/images/16/cart_go.png new file mode 100755 index 0000000000..20ee0584f6 Binary files /dev/null and b/html/images/16/cart_go.png differ diff --git a/html/images/16/cart_put.png b/html/images/16/cart_put.png new file mode 100755 index 0000000000..3aec353e03 Binary files /dev/null and b/html/images/16/cart_put.png differ diff --git a/html/images/16/cart_remove.png b/html/images/16/cart_remove.png new file mode 100755 index 0000000000..360217b526 Binary files /dev/null and b/html/images/16/cart_remove.png differ diff --git a/html/images/16/cd.png b/html/images/16/cd.png new file mode 100755 index 0000000000..ef4322357c Binary files /dev/null and b/html/images/16/cd.png differ diff --git a/html/images/16/cd_add.png b/html/images/16/cd_add.png new file mode 100755 index 0000000000..b0254effa6 Binary files /dev/null and b/html/images/16/cd_add.png differ diff --git a/html/images/16/cd_burn.png b/html/images/16/cd_burn.png new file mode 100755 index 0000000000..157cb0ba99 Binary files /dev/null and b/html/images/16/cd_burn.png differ diff --git a/html/images/16/cd_delete.png b/html/images/16/cd_delete.png new file mode 100755 index 0000000000..7d7b3d525b Binary files /dev/null and b/html/images/16/cd_delete.png differ diff --git a/html/images/16/cd_edit.png b/html/images/16/cd_edit.png new file mode 100755 index 0000000000..b0dc194b05 Binary files /dev/null and b/html/images/16/cd_edit.png differ diff --git a/html/images/16/cd_eject.png b/html/images/16/cd_eject.png new file mode 100755 index 0000000000..762932f6b1 Binary files /dev/null and b/html/images/16/cd_eject.png differ diff --git a/html/images/16/cd_go.png b/html/images/16/cd_go.png new file mode 100755 index 0000000000..13e04991c5 Binary files /dev/null and b/html/images/16/cd_go.png differ diff --git a/html/images/16/chart_bar.png b/html/images/16/chart_bar.png new file mode 100755 index 0000000000..9051fbc609 Binary files /dev/null and b/html/images/16/chart_bar.png differ diff --git a/html/images/16/chart_bar_add.png b/html/images/16/chart_bar_add.png new file mode 100755 index 0000000000..d283e846a2 Binary files /dev/null and b/html/images/16/chart_bar_add.png differ diff --git a/html/images/16/chart_bar_delete.png b/html/images/16/chart_bar_delete.png new file mode 100755 index 0000000000..259f686873 Binary files /dev/null and b/html/images/16/chart_bar_delete.png differ diff --git a/html/images/16/chart_bar_edit.png b/html/images/16/chart_bar_edit.png new file mode 100755 index 0000000000..df64d97e61 Binary files /dev/null and b/html/images/16/chart_bar_edit.png differ diff --git a/html/images/16/chart_bar_error.png b/html/images/16/chart_bar_error.png new file mode 100755 index 0000000000..bdacea5e5e Binary files /dev/null and b/html/images/16/chart_bar_error.png differ diff --git a/html/images/16/chart_bar_link.png b/html/images/16/chart_bar_link.png new file mode 100755 index 0000000000..bf18aed48b Binary files /dev/null and b/html/images/16/chart_bar_link.png differ diff --git a/html/images/16/chart_curve.png b/html/images/16/chart_curve.png new file mode 100755 index 0000000000..01e933a619 Binary files /dev/null and b/html/images/16/chart_curve.png differ diff --git a/html/images/16/chart_curve_add.png b/html/images/16/chart_curve_add.png new file mode 100755 index 0000000000..f9e2050460 Binary files /dev/null and b/html/images/16/chart_curve_add.png differ diff --git a/html/images/16/chart_curve_delete.png b/html/images/16/chart_curve_delete.png new file mode 100755 index 0000000000..b411391c40 Binary files /dev/null and b/html/images/16/chart_curve_delete.png differ diff --git a/html/images/16/chart_curve_edit.png b/html/images/16/chart_curve_edit.png new file mode 100755 index 0000000000..bd07673b55 Binary files /dev/null and b/html/images/16/chart_curve_edit.png differ diff --git a/html/images/16/chart_curve_error.png b/html/images/16/chart_curve_error.png new file mode 100755 index 0000000000..906dd03836 Binary files /dev/null and b/html/images/16/chart_curve_error.png differ diff --git a/html/images/16/chart_curve_go.png b/html/images/16/chart_curve_go.png new file mode 100755 index 0000000000..ac9eda51a4 Binary files /dev/null and b/html/images/16/chart_curve_go.png differ diff --git a/html/images/16/chart_curve_link.png b/html/images/16/chart_curve_link.png new file mode 100755 index 0000000000..144eafe086 Binary files /dev/null and b/html/images/16/chart_curve_link.png differ diff --git a/html/images/16/chart_line.png b/html/images/16/chart_line.png new file mode 100755 index 0000000000..85020f3205 Binary files /dev/null and b/html/images/16/chart_line.png differ diff --git a/html/images/16/chart_line_add.png b/html/images/16/chart_line_add.png new file mode 100755 index 0000000000..5571a5ebc9 Binary files /dev/null and b/html/images/16/chart_line_add.png differ diff --git a/html/images/16/chart_line_delete.png b/html/images/16/chart_line_delete.png new file mode 100755 index 0000000000..5b0aa90129 Binary files /dev/null and b/html/images/16/chart_line_delete.png differ diff --git a/html/images/16/chart_line_edit.png b/html/images/16/chart_line_edit.png new file mode 100755 index 0000000000..9cf660733d Binary files /dev/null and b/html/images/16/chart_line_edit.png differ diff --git a/html/images/16/chart_line_error.png b/html/images/16/chart_line_error.png new file mode 100755 index 0000000000..ff23c03a8a Binary files /dev/null and b/html/images/16/chart_line_error.png differ diff --git a/html/images/16/chart_line_link.png b/html/images/16/chart_line_link.png new file mode 100755 index 0000000000..f3727d22e7 Binary files /dev/null and b/html/images/16/chart_line_link.png differ diff --git a/html/images/16/chart_organisation.png b/html/images/16/chart_organisation.png new file mode 100755 index 0000000000..c32d25c16f Binary files /dev/null and b/html/images/16/chart_organisation.png differ diff --git a/html/images/16/chart_organisation_add.png b/html/images/16/chart_organisation_add.png new file mode 100755 index 0000000000..f0dba4ac43 Binary files /dev/null and b/html/images/16/chart_organisation_add.png differ diff --git a/html/images/16/chart_organisation_delete.png b/html/images/16/chart_organisation_delete.png new file mode 100755 index 0000000000..7dc8dcac25 Binary files /dev/null and b/html/images/16/chart_organisation_delete.png differ diff --git a/html/images/16/chart_pie.png b/html/images/16/chart_pie.png new file mode 100755 index 0000000000..fe00fa050a Binary files /dev/null and b/html/images/16/chart_pie.png differ diff --git a/html/images/16/chart_pie_add.png b/html/images/16/chart_pie_add.png new file mode 100755 index 0000000000..bf0822ee1c Binary files /dev/null and b/html/images/16/chart_pie_add.png differ diff --git a/html/images/16/chart_pie_delete.png b/html/images/16/chart_pie_delete.png new file mode 100755 index 0000000000..5ab9efd554 Binary files /dev/null and b/html/images/16/chart_pie_delete.png differ diff --git a/html/images/16/chart_pie_edit.png b/html/images/16/chart_pie_edit.png new file mode 100755 index 0000000000..3debc12d5e Binary files /dev/null and b/html/images/16/chart_pie_edit.png differ diff --git a/html/images/16/chart_pie_error.png b/html/images/16/chart_pie_error.png new file mode 100755 index 0000000000..7344174fe9 Binary files /dev/null and b/html/images/16/chart_pie_error.png differ diff --git a/html/images/16/chart_pie_link.png b/html/images/16/chart_pie_link.png new file mode 100755 index 0000000000..c072f8e05a Binary files /dev/null and b/html/images/16/chart_pie_link.png differ diff --git a/html/images/16/clock.png b/html/images/16/clock.png new file mode 100755 index 0000000000..e2672c2067 Binary files /dev/null and b/html/images/16/clock.png differ diff --git a/html/images/16/clock_add.png b/html/images/16/clock_add.png new file mode 100755 index 0000000000..598b839b81 Binary files /dev/null and b/html/images/16/clock_add.png differ diff --git a/html/images/16/clock_delete.png b/html/images/16/clock_delete.png new file mode 100755 index 0000000000..8bf9efe4ba Binary files /dev/null and b/html/images/16/clock_delete.png differ diff --git a/html/images/16/clock_edit.png b/html/images/16/clock_edit.png new file mode 100755 index 0000000000..7d3571887a Binary files /dev/null and b/html/images/16/clock_edit.png differ diff --git a/html/images/16/clock_error.png b/html/images/16/clock_error.png new file mode 100755 index 0000000000..a7c461ba9a Binary files /dev/null and b/html/images/16/clock_error.png differ diff --git a/html/images/16/clock_go.png b/html/images/16/clock_go.png new file mode 100755 index 0000000000..a1a24d3f30 Binary files /dev/null and b/html/images/16/clock_go.png differ diff --git a/html/images/16/clock_link.png b/html/images/16/clock_link.png new file mode 100755 index 0000000000..481cf04c12 Binary files /dev/null and b/html/images/16/clock_link.png differ diff --git a/html/images/16/clock_pause.png b/html/images/16/clock_pause.png new file mode 100755 index 0000000000..ba74725857 Binary files /dev/null and b/html/images/16/clock_pause.png differ diff --git a/html/images/16/clock_play.png b/html/images/16/clock_play.png new file mode 100755 index 0000000000..fb4ebc850a Binary files /dev/null and b/html/images/16/clock_play.png differ diff --git a/html/images/16/clock_red.png b/html/images/16/clock_red.png new file mode 100755 index 0000000000..2842cc3386 Binary files /dev/null and b/html/images/16/clock_red.png differ diff --git a/html/images/16/clock_stop.png b/html/images/16/clock_stop.png new file mode 100755 index 0000000000..6fe8a6f951 Binary files /dev/null and b/html/images/16/clock_stop.png differ diff --git a/html/images/16/cog.png b/html/images/16/cog.png new file mode 100755 index 0000000000..67de2c6ccb Binary files /dev/null and b/html/images/16/cog.png differ diff --git a/html/images/16/cog_add.png b/html/images/16/cog_add.png new file mode 100755 index 0000000000..04f22badca Binary files /dev/null and b/html/images/16/cog_add.png differ diff --git a/html/images/16/cog_delete.png b/html/images/16/cog_delete.png new file mode 100755 index 0000000000..8ce71c475c Binary files /dev/null and b/html/images/16/cog_delete.png differ diff --git a/html/images/16/cog_disable.png b/html/images/16/cog_disable.png new file mode 100644 index 0000000000..30539d97e9 Binary files /dev/null and b/html/images/16/cog_disable.png differ diff --git a/html/images/16/cog_edit.png b/html/images/16/cog_edit.png new file mode 100755 index 0000000000..47b75a456a Binary files /dev/null and b/html/images/16/cog_edit.png differ diff --git a/html/images/16/cog_error.png b/html/images/16/cog_error.png new file mode 100755 index 0000000000..47667430a9 Binary files /dev/null and b/html/images/16/cog_error.png differ diff --git a/html/images/16/cog_go.png b/html/images/16/cog_go.png new file mode 100755 index 0000000000..3262767cda Binary files /dev/null and b/html/images/16/cog_go.png differ diff --git a/html/images/16/coins.png b/html/images/16/coins.png new file mode 100755 index 0000000000..0ca9074d66 Binary files /dev/null and b/html/images/16/coins.png differ diff --git a/html/images/16/coins_add.png b/html/images/16/coins_add.png new file mode 100755 index 0000000000..cdff5d3d4d Binary files /dev/null and b/html/images/16/coins_add.png differ diff --git a/html/images/16/coins_delete.png b/html/images/16/coins_delete.png new file mode 100755 index 0000000000..18e0c0fd94 Binary files /dev/null and b/html/images/16/coins_delete.png differ diff --git a/html/images/16/color_swatch.png b/html/images/16/color_swatch.png new file mode 100755 index 0000000000..6e6e85212b Binary files /dev/null and b/html/images/16/color_swatch.png differ diff --git a/html/images/16/color_wheel.png b/html/images/16/color_wheel.png new file mode 100755 index 0000000000..809fb00e5a Binary files /dev/null and b/html/images/16/color_wheel.png differ diff --git a/html/images/16/comment.png b/html/images/16/comment.png new file mode 100755 index 0000000000..7bc9233ea6 Binary files /dev/null and b/html/images/16/comment.png differ diff --git a/html/images/16/comment_add.png b/html/images/16/comment_add.png new file mode 100755 index 0000000000..75e78dede2 Binary files /dev/null and b/html/images/16/comment_add.png differ diff --git a/html/images/16/comment_delete.png b/html/images/16/comment_delete.png new file mode 100755 index 0000000000..643fdbe8d9 Binary files /dev/null and b/html/images/16/comment_delete.png differ diff --git a/html/images/16/comment_edit.png b/html/images/16/comment_edit.png new file mode 100755 index 0000000000..73db110df5 Binary files /dev/null and b/html/images/16/comment_edit.png differ diff --git a/html/images/16/comments.png b/html/images/16/comments.png new file mode 100755 index 0000000000..39433cf78a Binary files /dev/null and b/html/images/16/comments.png differ diff --git a/html/images/16/comments_add.png b/html/images/16/comments_add.png new file mode 100755 index 0000000000..b32563442d Binary files /dev/null and b/html/images/16/comments_add.png differ diff --git a/html/images/16/comments_delete.png b/html/images/16/comments_delete.png new file mode 100755 index 0000000000..6df7376d05 Binary files /dev/null and b/html/images/16/comments_delete.png differ diff --git a/html/images/16/compress.png b/html/images/16/compress.png new file mode 100755 index 0000000000..8606ff0fd2 Binary files /dev/null and b/html/images/16/compress.png differ diff --git a/html/images/16/computer.png b/html/images/16/computer.png new file mode 100755 index 0000000000..9bc37dce36 Binary files /dev/null and b/html/images/16/computer.png differ diff --git a/html/images/16/computer_add.png b/html/images/16/computer_add.png new file mode 100755 index 0000000000..db604ee3bc Binary files /dev/null and b/html/images/16/computer_add.png differ diff --git a/html/images/16/computer_delete.png b/html/images/16/computer_delete.png new file mode 100755 index 0000000000..5e9b26836c Binary files /dev/null and b/html/images/16/computer_delete.png differ diff --git a/html/images/16/computer_edit.png b/html/images/16/computer_edit.png new file mode 100755 index 0000000000..34c72fe521 Binary files /dev/null and b/html/images/16/computer_edit.png differ diff --git a/html/images/16/computer_error.png b/html/images/16/computer_error.png new file mode 100755 index 0000000000..b2c3ed5780 Binary files /dev/null and b/html/images/16/computer_error.png differ diff --git a/html/images/16/computer_go.png b/html/images/16/computer_go.png new file mode 100755 index 0000000000..0b26144d83 Binary files /dev/null and b/html/images/16/computer_go.png differ diff --git a/html/images/16/computer_key.png b/html/images/16/computer_key.png new file mode 100755 index 0000000000..eca543017d Binary files /dev/null and b/html/images/16/computer_key.png differ diff --git a/html/images/16/computer_link.png b/html/images/16/computer_link.png new file mode 100755 index 0000000000..3859db2147 Binary files /dev/null and b/html/images/16/computer_link.png differ diff --git a/html/images/16/connect.png b/html/images/16/connect.png new file mode 100755 index 0000000000..024138eb33 Binary files /dev/null and b/html/images/16/connect.png differ diff --git a/html/images/16/contrast.png b/html/images/16/contrast.png new file mode 100755 index 0000000000..adcc0046f8 Binary files /dev/null and b/html/images/16/contrast.png differ diff --git a/html/images/16/contrast_decrease.png b/html/images/16/contrast_decrease.png new file mode 100755 index 0000000000..0155bf5c0b Binary files /dev/null and b/html/images/16/contrast_decrease.png differ diff --git a/html/images/16/contrast_high.png b/html/images/16/contrast_high.png new file mode 100755 index 0000000000..d87c8cbb79 Binary files /dev/null and b/html/images/16/contrast_high.png differ diff --git a/html/images/16/contrast_increase.png b/html/images/16/contrast_increase.png new file mode 100755 index 0000000000..a3e7f5200a Binary files /dev/null and b/html/images/16/contrast_increase.png differ diff --git a/html/images/16/contrast_low.png b/html/images/16/contrast_low.png new file mode 100755 index 0000000000..dc9f4b100e Binary files /dev/null and b/html/images/16/contrast_low.png differ diff --git a/html/images/16/control_eject.png b/html/images/16/control_eject.png new file mode 100755 index 0000000000..924d817bb6 Binary files /dev/null and b/html/images/16/control_eject.png differ diff --git a/html/images/16/control_eject_blue.png b/html/images/16/control_eject_blue.png new file mode 100755 index 0000000000..2bd4963834 Binary files /dev/null and b/html/images/16/control_eject_blue.png differ diff --git a/html/images/16/control_end.png b/html/images/16/control_end.png new file mode 100755 index 0000000000..036e04dcd9 Binary files /dev/null and b/html/images/16/control_end.png differ diff --git a/html/images/16/control_end_blue.png b/html/images/16/control_end_blue.png new file mode 100755 index 0000000000..7207935761 Binary files /dev/null and b/html/images/16/control_end_blue.png differ diff --git a/html/images/16/control_equalizer.png b/html/images/16/control_equalizer.png new file mode 100755 index 0000000000..46060872cc Binary files /dev/null and b/html/images/16/control_equalizer.png differ diff --git a/html/images/16/control_equalizer_blue.png b/html/images/16/control_equalizer_blue.png new file mode 100755 index 0000000000..1b2e6a3746 Binary files /dev/null and b/html/images/16/control_equalizer_blue.png differ diff --git a/html/images/16/control_fastforward.png b/html/images/16/control_fastforward.png new file mode 100755 index 0000000000..31f7fd3adf Binary files /dev/null and b/html/images/16/control_fastforward.png differ diff --git a/html/images/16/control_fastforward_blue.png b/html/images/16/control_fastforward_blue.png new file mode 100755 index 0000000000..4a2f9d4e4a Binary files /dev/null and b/html/images/16/control_fastforward_blue.png differ diff --git a/html/images/16/control_pause.png b/html/images/16/control_pause.png new file mode 100755 index 0000000000..2d9ce9c4ec Binary files /dev/null and b/html/images/16/control_pause.png differ diff --git a/html/images/16/control_pause_blue.png b/html/images/16/control_pause_blue.png new file mode 100755 index 0000000000..ec61099b0b Binary files /dev/null and b/html/images/16/control_pause_blue.png differ diff --git a/html/images/16/control_play.png b/html/images/16/control_play.png new file mode 100755 index 0000000000..0846555d0c Binary files /dev/null and b/html/images/16/control_play.png differ diff --git a/html/images/16/control_play_blue.png b/html/images/16/control_play_blue.png new file mode 100755 index 0000000000..f8c8ec683e Binary files /dev/null and b/html/images/16/control_play_blue.png differ diff --git a/html/images/16/control_repeat.png b/html/images/16/control_repeat.png new file mode 100755 index 0000000000..1c4f57a161 Binary files /dev/null and b/html/images/16/control_repeat.png differ diff --git a/html/images/16/control_repeat_blue.png b/html/images/16/control_repeat_blue.png new file mode 100755 index 0000000000..406ec333bc Binary files /dev/null and b/html/images/16/control_repeat_blue.png differ diff --git a/html/images/16/control_rewind.png b/html/images/16/control_rewind.png new file mode 100755 index 0000000000..c029447717 Binary files /dev/null and b/html/images/16/control_rewind.png differ diff --git a/html/images/16/control_rewind_blue.png b/html/images/16/control_rewind_blue.png new file mode 100755 index 0000000000..15d1584bdb Binary files /dev/null and b/html/images/16/control_rewind_blue.png differ diff --git a/html/images/16/control_start.png b/html/images/16/control_start.png new file mode 100755 index 0000000000..7dd1c07fba Binary files /dev/null and b/html/images/16/control_start.png differ diff --git a/html/images/16/control_start_blue.png b/html/images/16/control_start_blue.png new file mode 100755 index 0000000000..6f11fcb086 Binary files /dev/null and b/html/images/16/control_start_blue.png differ diff --git a/html/images/16/control_stop.png b/html/images/16/control_stop.png new file mode 100755 index 0000000000..893bb60e53 Binary files /dev/null and b/html/images/16/control_stop.png differ diff --git a/html/images/16/control_stop_blue.png b/html/images/16/control_stop_blue.png new file mode 100755 index 0000000000..e6f75d232d Binary files /dev/null and b/html/images/16/control_stop_blue.png differ diff --git a/html/images/16/controller.png b/html/images/16/controller.png new file mode 100755 index 0000000000..5cf76ed029 Binary files /dev/null and b/html/images/16/controller.png differ diff --git a/html/images/16/controller_add.png b/html/images/16/controller_add.png new file mode 100755 index 0000000000..efecb3871b Binary files /dev/null and b/html/images/16/controller_add.png differ diff --git a/html/images/16/controller_delete.png b/html/images/16/controller_delete.png new file mode 100755 index 0000000000..3d83bc7b9a Binary files /dev/null and b/html/images/16/controller_delete.png differ diff --git a/html/images/16/controller_error.png b/html/images/16/controller_error.png new file mode 100755 index 0000000000..7f17c0cb7a Binary files /dev/null and b/html/images/16/controller_error.png differ diff --git a/html/images/16/creditcards.png b/html/images/16/creditcards.png new file mode 100755 index 0000000000..4eae583e15 Binary files /dev/null and b/html/images/16/creditcards.png differ diff --git a/html/images/16/cross.png b/html/images/16/cross.png new file mode 100755 index 0000000000..1514d51a3c Binary files /dev/null and b/html/images/16/cross.png differ diff --git a/html/images/16/css.png b/html/images/16/css.png new file mode 100755 index 0000000000..23f3101811 Binary files /dev/null and b/html/images/16/css.png differ diff --git a/html/images/16/css_add.png b/html/images/16/css_add.png new file mode 100755 index 0000000000..e8ea10fcd6 Binary files /dev/null and b/html/images/16/css_add.png differ diff --git a/html/images/16/css_delete.png b/html/images/16/css_delete.png new file mode 100755 index 0000000000..326aba4407 Binary files /dev/null and b/html/images/16/css_delete.png differ diff --git a/html/images/16/css_go.png b/html/images/16/css_go.png new file mode 100755 index 0000000000..6cdf38c366 Binary files /dev/null and b/html/images/16/css_go.png differ diff --git a/html/images/16/css_valid.png b/html/images/16/css_valid.png new file mode 100755 index 0000000000..4c72ca5a40 Binary files /dev/null and b/html/images/16/css_valid.png differ diff --git a/html/images/16/cup.png b/html/images/16/cup.png new file mode 100755 index 0000000000..b7bfcd15fb Binary files /dev/null and b/html/images/16/cup.png differ diff --git a/html/images/16/cup_add.png b/html/images/16/cup_add.png new file mode 100755 index 0000000000..4ecaece296 Binary files /dev/null and b/html/images/16/cup_add.png differ diff --git a/html/images/16/cup_delete.png b/html/images/16/cup_delete.png new file mode 100755 index 0000000000..59a6d9c614 Binary files /dev/null and b/html/images/16/cup_delete.png differ diff --git a/html/images/16/cup_edit.png b/html/images/16/cup_edit.png new file mode 100755 index 0000000000..0b8f1e1ef5 Binary files /dev/null and b/html/images/16/cup_edit.png differ diff --git a/html/images/16/cup_error.png b/html/images/16/cup_error.png new file mode 100755 index 0000000000..68798748d2 Binary files /dev/null and b/html/images/16/cup_error.png differ diff --git a/html/images/16/cup_go.png b/html/images/16/cup_go.png new file mode 100755 index 0000000000..9527efbe40 Binary files /dev/null and b/html/images/16/cup_go.png differ diff --git a/html/images/16/cup_key.png b/html/images/16/cup_key.png new file mode 100755 index 0000000000..7ae160ce25 Binary files /dev/null and b/html/images/16/cup_key.png differ diff --git a/html/images/16/cup_link.png b/html/images/16/cup_link.png new file mode 100755 index 0000000000..41d1ace1af Binary files /dev/null and b/html/images/16/cup_link.png differ diff --git a/html/images/16/cursor.png b/html/images/16/cursor.png new file mode 100755 index 0000000000..532f532d87 Binary files /dev/null and b/html/images/16/cursor.png differ diff --git a/html/images/16/cut.png b/html/images/16/cut.png new file mode 100755 index 0000000000..f215d6f6b7 Binary files /dev/null and b/html/images/16/cut.png differ diff --git a/html/images/16/cut_red.png b/html/images/16/cut_red.png new file mode 100755 index 0000000000..85bb2f0fd7 Binary files /dev/null and b/html/images/16/cut_red.png differ diff --git a/html/images/16/database.png b/html/images/16/database.png new file mode 100755 index 0000000000..3d09261a26 Binary files /dev/null and b/html/images/16/database.png differ diff --git a/html/images/16/database_add.png b/html/images/16/database_add.png new file mode 100755 index 0000000000..802bd6cde0 Binary files /dev/null and b/html/images/16/database_add.png differ diff --git a/html/images/16/database_connect.png b/html/images/16/database_connect.png new file mode 100755 index 0000000000..3a111977cd Binary files /dev/null and b/html/images/16/database_connect.png differ diff --git a/html/images/16/database_delete.png b/html/images/16/database_delete.png new file mode 100755 index 0000000000..cce652e845 Binary files /dev/null and b/html/images/16/database_delete.png differ diff --git a/html/images/16/database_edit.png b/html/images/16/database_edit.png new file mode 100755 index 0000000000..e501b668c7 Binary files /dev/null and b/html/images/16/database_edit.png differ diff --git a/html/images/16/database_error.png b/html/images/16/database_error.png new file mode 100755 index 0000000000..578221aaab Binary files /dev/null and b/html/images/16/database_error.png differ diff --git a/html/images/16/database_gear.png b/html/images/16/database_gear.png new file mode 100755 index 0000000000..7c0ab2b4c6 Binary files /dev/null and b/html/images/16/database_gear.png differ diff --git a/html/images/16/database_go.png b/html/images/16/database_go.png new file mode 100755 index 0000000000..61a8556c40 Binary files /dev/null and b/html/images/16/database_go.png differ diff --git a/html/images/16/database_key.png b/html/images/16/database_key.png new file mode 100755 index 0000000000..3334147679 Binary files /dev/null and b/html/images/16/database_key.png differ diff --git a/html/images/16/database_lightning.png b/html/images/16/database_lightning.png new file mode 100755 index 0000000000..d9eefc2251 Binary files /dev/null and b/html/images/16/database_lightning.png differ diff --git a/html/images/16/database_link.png b/html/images/16/database_link.png new file mode 100755 index 0000000000..4c8204af15 Binary files /dev/null and b/html/images/16/database_link.png differ diff --git a/html/images/16/database_refresh.png b/html/images/16/database_refresh.png new file mode 100755 index 0000000000..ff803be124 Binary files /dev/null and b/html/images/16/database_refresh.png differ diff --git a/html/images/16/database_save.png b/html/images/16/database_save.png new file mode 100755 index 0000000000..44c06dddf1 Binary files /dev/null and b/html/images/16/database_save.png differ diff --git a/html/images/16/database_table.png b/html/images/16/database_table.png new file mode 100755 index 0000000000..693709cbc1 Binary files /dev/null and b/html/images/16/database_table.png differ diff --git a/html/images/16/date.png b/html/images/16/date.png new file mode 100755 index 0000000000..783c83357f Binary files /dev/null and b/html/images/16/date.png differ diff --git a/html/images/16/date_add.png b/html/images/16/date_add.png new file mode 100755 index 0000000000..6a7ae025f3 Binary files /dev/null and b/html/images/16/date_add.png differ diff --git a/html/images/16/date_delete.png b/html/images/16/date_delete.png new file mode 100755 index 0000000000..969a6b7239 Binary files /dev/null and b/html/images/16/date_delete.png differ diff --git a/html/images/16/date_edit.png b/html/images/16/date_edit.png new file mode 100755 index 0000000000..e681065038 Binary files /dev/null and b/html/images/16/date_edit.png differ diff --git a/html/images/16/date_error.png b/html/images/16/date_error.png new file mode 100755 index 0000000000..442cd97d09 Binary files /dev/null and b/html/images/16/date_error.png differ diff --git a/html/images/16/date_go.png b/html/images/16/date_go.png new file mode 100755 index 0000000000..52dd9f3ae3 Binary files /dev/null and b/html/images/16/date_go.png differ diff --git a/html/images/16/date_link.png b/html/images/16/date_link.png new file mode 100755 index 0000000000..9f0aada714 Binary files /dev/null and b/html/images/16/date_link.png differ diff --git a/html/images/16/date_magnify.png b/html/images/16/date_magnify.png new file mode 100755 index 0000000000..cd05f19064 Binary files /dev/null and b/html/images/16/date_magnify.png differ diff --git a/html/images/16/date_next.png b/html/images/16/date_next.png new file mode 100755 index 0000000000..48d740abf7 Binary files /dev/null and b/html/images/16/date_next.png differ diff --git a/html/images/16/date_previous.png b/html/images/16/date_previous.png new file mode 100755 index 0000000000..e117a8374f Binary files /dev/null and b/html/images/16/date_previous.png differ diff --git a/html/images/16/delete.png b/html/images/16/delete.png new file mode 100755 index 0000000000..08f249365a Binary files /dev/null and b/html/images/16/delete.png differ diff --git a/html/images/16/disconnect.png b/html/images/16/disconnect.png new file mode 100755 index 0000000000..b335cb11c4 Binary files /dev/null and b/html/images/16/disconnect.png differ diff --git a/html/images/16/disk.png b/html/images/16/disk.png new file mode 100755 index 0000000000..99d532e8b1 Binary files /dev/null and b/html/images/16/disk.png differ diff --git a/html/images/16/disk_multiple.png b/html/images/16/disk_multiple.png new file mode 100755 index 0000000000..fc5a52f5e4 Binary files /dev/null and b/html/images/16/disk_multiple.png differ diff --git a/html/images/16/door.png b/html/images/16/door.png new file mode 100755 index 0000000000..369fc46ed2 Binary files /dev/null and b/html/images/16/door.png differ diff --git a/html/images/16/door_in.png b/html/images/16/door_in.png new file mode 100755 index 0000000000..41676a0a5b Binary files /dev/null and b/html/images/16/door_in.png differ diff --git a/html/images/16/door_open.png b/html/images/16/door_open.png new file mode 100755 index 0000000000..64bab57ddd Binary files /dev/null and b/html/images/16/door_open.png differ diff --git a/html/images/16/door_out.png b/html/images/16/door_out.png new file mode 100755 index 0000000000..2541d2bcbc Binary files /dev/null and b/html/images/16/door_out.png differ diff --git a/html/images/16/drink.png b/html/images/16/drink.png new file mode 100755 index 0000000000..d98359c2ab Binary files /dev/null and b/html/images/16/drink.png differ diff --git a/html/images/16/drink_empty.png b/html/images/16/drink_empty.png new file mode 100755 index 0000000000..a40211ed41 Binary files /dev/null and b/html/images/16/drink_empty.png differ diff --git a/html/images/16/drive.png b/html/images/16/drive.png new file mode 100755 index 0000000000..37b7c9b27d Binary files /dev/null and b/html/images/16/drive.png differ diff --git a/html/images/16/drive_add.png b/html/images/16/drive_add.png new file mode 100755 index 0000000000..29a35d5aa8 Binary files /dev/null and b/html/images/16/drive_add.png differ diff --git a/html/images/16/drive_burn.png b/html/images/16/drive_burn.png new file mode 100755 index 0000000000..80fd79f982 Binary files /dev/null and b/html/images/16/drive_burn.png differ diff --git a/html/images/16/drive_cd.png b/html/images/16/drive_cd.png new file mode 100755 index 0000000000..1850b701cf Binary files /dev/null and b/html/images/16/drive_cd.png differ diff --git a/html/images/16/drive_cd_empty.png b/html/images/16/drive_cd_empty.png new file mode 100755 index 0000000000..8df38d9e67 Binary files /dev/null and b/html/images/16/drive_cd_empty.png differ diff --git a/html/images/16/drive_delete.png b/html/images/16/drive_delete.png new file mode 100755 index 0000000000..e6eb186651 Binary files /dev/null and b/html/images/16/drive_delete.png differ diff --git a/html/images/16/drive_disk.png b/html/images/16/drive_disk.png new file mode 100755 index 0000000000..5a51e81988 Binary files /dev/null and b/html/images/16/drive_disk.png differ diff --git a/html/images/16/drive_edit.png b/html/images/16/drive_edit.png new file mode 100755 index 0000000000..7923fada4b Binary files /dev/null and b/html/images/16/drive_edit.png differ diff --git a/html/images/16/drive_error.png b/html/images/16/drive_error.png new file mode 100755 index 0000000000..309f63962c Binary files /dev/null and b/html/images/16/drive_error.png differ diff --git a/html/images/16/drive_go.png b/html/images/16/drive_go.png new file mode 100755 index 0000000000..fc53379efc Binary files /dev/null and b/html/images/16/drive_go.png differ diff --git a/html/images/16/drive_key.png b/html/images/16/drive_key.png new file mode 100755 index 0000000000..d0b3c673a6 Binary files /dev/null and b/html/images/16/drive_key.png differ diff --git a/html/images/16/drive_link.png b/html/images/16/drive_link.png new file mode 100755 index 0000000000..8679c4b5c2 Binary files /dev/null and b/html/images/16/drive_link.png differ diff --git a/html/images/16/drive_magnify.png b/html/images/16/drive_magnify.png new file mode 100755 index 0000000000..0f0f4446bb Binary files /dev/null and b/html/images/16/drive_magnify.png differ diff --git a/html/images/16/drive_network.png b/html/images/16/drive_network.png new file mode 100755 index 0000000000..63d2d5d5b1 Binary files /dev/null and b/html/images/16/drive_network.png differ diff --git a/html/images/16/drive_rename.png b/html/images/16/drive_rename.png new file mode 100755 index 0000000000..2a9f38b447 Binary files /dev/null and b/html/images/16/drive_rename.png differ diff --git a/html/images/16/drive_user.png b/html/images/16/drive_user.png new file mode 100755 index 0000000000..0b4751ce42 Binary files /dev/null and b/html/images/16/drive_user.png differ diff --git a/html/images/16/drive_web.png b/html/images/16/drive_web.png new file mode 100755 index 0000000000..8850a83557 Binary files /dev/null and b/html/images/16/drive_web.png differ diff --git a/html/images/16/dvd.png b/html/images/16/dvd.png new file mode 100755 index 0000000000..9d94de5df0 Binary files /dev/null and b/html/images/16/dvd.png differ diff --git a/html/images/16/dvd_add.png b/html/images/16/dvd_add.png new file mode 100755 index 0000000000..517d112156 Binary files /dev/null and b/html/images/16/dvd_add.png differ diff --git a/html/images/16/dvd_delete.png b/html/images/16/dvd_delete.png new file mode 100755 index 0000000000..87bed22197 Binary files /dev/null and b/html/images/16/dvd_delete.png differ diff --git a/html/images/16/dvd_edit.png b/html/images/16/dvd_edit.png new file mode 100755 index 0000000000..d6330aa996 Binary files /dev/null and b/html/images/16/dvd_edit.png differ diff --git a/html/images/16/dvd_error.png b/html/images/16/dvd_error.png new file mode 100755 index 0000000000..8f6d4bee38 Binary files /dev/null and b/html/images/16/dvd_error.png differ diff --git a/html/images/16/dvd_go.png b/html/images/16/dvd_go.png new file mode 100755 index 0000000000..ef6959f7bd Binary files /dev/null and b/html/images/16/dvd_go.png differ diff --git a/html/images/16/dvd_key.png b/html/images/16/dvd_key.png new file mode 100755 index 0000000000..da9307f66d Binary files /dev/null and b/html/images/16/dvd_key.png differ diff --git a/html/images/16/dvd_link.png b/html/images/16/dvd_link.png new file mode 100755 index 0000000000..caad7263ac Binary files /dev/null and b/html/images/16/dvd_link.png differ diff --git a/html/images/16/email.png b/html/images/16/email.png new file mode 100755 index 0000000000..7348aed77f Binary files /dev/null and b/html/images/16/email.png differ diff --git a/html/images/16/email_add.png b/html/images/16/email_add.png new file mode 100755 index 0000000000..6c933681f3 Binary files /dev/null and b/html/images/16/email_add.png differ diff --git a/html/images/16/email_attach.png b/html/images/16/email_attach.png new file mode 100755 index 0000000000..1f994851c6 Binary files /dev/null and b/html/images/16/email_attach.png differ diff --git a/html/images/16/email_delete.png b/html/images/16/email_delete.png new file mode 100755 index 0000000000..a9932b1ad5 Binary files /dev/null and b/html/images/16/email_delete.png differ diff --git a/html/images/16/email_edit.png b/html/images/16/email_edit.png new file mode 100755 index 0000000000..244f04ae15 Binary files /dev/null and b/html/images/16/email_edit.png differ diff --git a/html/images/16/email_error.png b/html/images/16/email_error.png new file mode 100755 index 0000000000..8bdd3304de Binary files /dev/null and b/html/images/16/email_error.png differ diff --git a/html/images/16/email_go.png b/html/images/16/email_go.png new file mode 100755 index 0000000000..4a6c5d396a Binary files /dev/null and b/html/images/16/email_go.png differ diff --git a/html/images/16/email_link.png b/html/images/16/email_link.png new file mode 100755 index 0000000000..2c49f78a65 Binary files /dev/null and b/html/images/16/email_link.png differ diff --git a/html/images/16/email_open.png b/html/images/16/email_open.png new file mode 100755 index 0000000000..7b6f9813d4 Binary files /dev/null and b/html/images/16/email_open.png differ diff --git a/html/images/16/email_open_image.png b/html/images/16/email_open_image.png new file mode 100755 index 0000000000..e588e2fb2d Binary files /dev/null and b/html/images/16/email_open_image.png differ diff --git a/html/images/16/emoticon_evilgrin.png b/html/images/16/emoticon_evilgrin.png new file mode 100755 index 0000000000..817bd509b0 Binary files /dev/null and b/html/images/16/emoticon_evilgrin.png differ diff --git a/html/images/16/emoticon_grin.png b/html/images/16/emoticon_grin.png new file mode 100755 index 0000000000..fc60c5e1cd Binary files /dev/null and b/html/images/16/emoticon_grin.png differ diff --git a/html/images/16/emoticon_happy.png b/html/images/16/emoticon_happy.png new file mode 100755 index 0000000000..6b7336e175 Binary files /dev/null and b/html/images/16/emoticon_happy.png differ diff --git a/html/images/16/emoticon_smile.png b/html/images/16/emoticon_smile.png new file mode 100755 index 0000000000..ade431851b Binary files /dev/null and b/html/images/16/emoticon_smile.png differ diff --git a/html/images/16/emoticon_surprised.png b/html/images/16/emoticon_surprised.png new file mode 100755 index 0000000000..4520cfc552 Binary files /dev/null and b/html/images/16/emoticon_surprised.png differ diff --git a/html/images/16/emoticon_tongue.png b/html/images/16/emoticon_tongue.png new file mode 100755 index 0000000000..ecafd2ffc5 Binary files /dev/null and b/html/images/16/emoticon_tongue.png differ diff --git a/html/images/16/emoticon_unhappy.png b/html/images/16/emoticon_unhappy.png new file mode 100755 index 0000000000..fd5d030ef7 Binary files /dev/null and b/html/images/16/emoticon_unhappy.png differ diff --git a/html/images/16/emoticon_waii.png b/html/images/16/emoticon_waii.png new file mode 100755 index 0000000000..458f936117 Binary files /dev/null and b/html/images/16/emoticon_waii.png differ diff --git a/html/images/16/emoticon_wink.png b/html/images/16/emoticon_wink.png new file mode 100755 index 0000000000..a631949b51 Binary files /dev/null and b/html/images/16/emoticon_wink.png differ diff --git a/html/images/16/error.png b/html/images/16/error.png new file mode 100755 index 0000000000..628cf2dae3 Binary files /dev/null and b/html/images/16/error.png differ diff --git a/html/images/16/error_add.png b/html/images/16/error_add.png new file mode 100755 index 0000000000..4c974840e9 Binary files /dev/null and b/html/images/16/error_add.png differ diff --git a/html/images/16/error_delete.png b/html/images/16/error_delete.png new file mode 100755 index 0000000000..7f78bcc8e1 Binary files /dev/null and b/html/images/16/error_delete.png differ diff --git a/html/images/16/error_go.png b/html/images/16/error_go.png new file mode 100755 index 0000000000..caa1838d7f Binary files /dev/null and b/html/images/16/error_go.png differ diff --git a/html/images/16/exclamation.png b/html/images/16/exclamation.png new file mode 100755 index 0000000000..c37bd062e6 Binary files /dev/null and b/html/images/16/exclamation.png differ diff --git a/html/images/16/eye.png b/html/images/16/eye.png new file mode 100755 index 0000000000..564a1a9714 Binary files /dev/null and b/html/images/16/eye.png differ diff --git a/html/images/16/feed.png b/html/images/16/feed.png new file mode 100755 index 0000000000..315c4f4fa6 Binary files /dev/null and b/html/images/16/feed.png differ diff --git a/html/images/16/feed_add.png b/html/images/16/feed_add.png new file mode 100755 index 0000000000..e77d46e8a2 Binary files /dev/null and b/html/images/16/feed_add.png differ diff --git a/html/images/16/feed_delete.png b/html/images/16/feed_delete.png new file mode 100755 index 0000000000..5e332b4cc4 Binary files /dev/null and b/html/images/16/feed_delete.png differ diff --git a/html/images/16/feed_disk.png b/html/images/16/feed_disk.png new file mode 100755 index 0000000000..a158c998df Binary files /dev/null and b/html/images/16/feed_disk.png differ diff --git a/html/images/16/feed_edit.png b/html/images/16/feed_edit.png new file mode 100755 index 0000000000..f1fde7a9ce Binary files /dev/null and b/html/images/16/feed_edit.png differ diff --git a/html/images/16/feed_error.png b/html/images/16/feed_error.png new file mode 100755 index 0000000000..c0a801c7f7 Binary files /dev/null and b/html/images/16/feed_error.png differ diff --git a/html/images/16/feed_go.png b/html/images/16/feed_go.png new file mode 100755 index 0000000000..f2eed1ecf0 Binary files /dev/null and b/html/images/16/feed_go.png differ diff --git a/html/images/16/feed_key.png b/html/images/16/feed_key.png new file mode 100755 index 0000000000..156bfa9719 Binary files /dev/null and b/html/images/16/feed_key.png differ diff --git a/html/images/16/feed_link.png b/html/images/16/feed_link.png new file mode 100755 index 0000000000..c45a534597 Binary files /dev/null and b/html/images/16/feed_link.png differ diff --git a/html/images/16/feed_magnify.png b/html/images/16/feed_magnify.png new file mode 100755 index 0000000000..3023695d8c Binary files /dev/null and b/html/images/16/feed_magnify.png differ diff --git a/html/images/16/female.png b/html/images/16/female.png new file mode 100755 index 0000000000..f92958e6af Binary files /dev/null and b/html/images/16/female.png differ diff --git a/html/images/16/film.png b/html/images/16/film.png new file mode 100755 index 0000000000..b0ce7bb198 Binary files /dev/null and b/html/images/16/film.png differ diff --git a/html/images/16/film_add.png b/html/images/16/film_add.png new file mode 100755 index 0000000000..40d681feba Binary files /dev/null and b/html/images/16/film_add.png differ diff --git a/html/images/16/film_delete.png b/html/images/16/film_delete.png new file mode 100755 index 0000000000..23a2508c5c Binary files /dev/null and b/html/images/16/film_delete.png differ diff --git a/html/images/16/film_edit.png b/html/images/16/film_edit.png new file mode 100755 index 0000000000..af66b73f20 Binary files /dev/null and b/html/images/16/film_edit.png differ diff --git a/html/images/16/film_error.png b/html/images/16/film_error.png new file mode 100755 index 0000000000..88f3d69bca Binary files /dev/null and b/html/images/16/film_error.png differ diff --git a/html/images/16/film_go.png b/html/images/16/film_go.png new file mode 100755 index 0000000000..dd0168ea92 Binary files /dev/null and b/html/images/16/film_go.png differ diff --git a/html/images/16/film_key.png b/html/images/16/film_key.png new file mode 100755 index 0000000000..58921624ea Binary files /dev/null and b/html/images/16/film_key.png differ diff --git a/html/images/16/film_link.png b/html/images/16/film_link.png new file mode 100755 index 0000000000..0f24e86e40 Binary files /dev/null and b/html/images/16/film_link.png differ diff --git a/html/images/16/film_save.png b/html/images/16/film_save.png new file mode 100755 index 0000000000..bc8c0d3536 Binary files /dev/null and b/html/images/16/film_save.png differ diff --git a/html/images/16/find.png b/html/images/16/find.png new file mode 100755 index 0000000000..1547479646 Binary files /dev/null and b/html/images/16/find.png differ diff --git a/html/images/16/flag_blue.png b/html/images/16/flag_blue.png new file mode 100755 index 0000000000..003924f5ea Binary files /dev/null and b/html/images/16/flag_blue.png differ diff --git a/html/images/16/flag_green.png b/html/images/16/flag_green.png new file mode 100755 index 0000000000..e4bc611f87 Binary files /dev/null and b/html/images/16/flag_green.png differ diff --git a/html/images/16/flag_orange.png b/html/images/16/flag_orange.png new file mode 100755 index 0000000000..e63202420f Binary files /dev/null and b/html/images/16/flag_orange.png differ diff --git a/html/images/16/flag_pink.png b/html/images/16/flag_pink.png new file mode 100755 index 0000000000..5f15e526c0 Binary files /dev/null and b/html/images/16/flag_pink.png differ diff --git a/html/images/16/flag_purple.png b/html/images/16/flag_purple.png new file mode 100755 index 0000000000..d06986644c Binary files /dev/null and b/html/images/16/flag_purple.png differ diff --git a/html/images/16/flag_red.png b/html/images/16/flag_red.png new file mode 100755 index 0000000000..e8a602da7b Binary files /dev/null and b/html/images/16/flag_red.png differ diff --git a/html/images/16/flag_yellow.png b/html/images/16/flag_yellow.png new file mode 100755 index 0000000000..14c89a5430 Binary files /dev/null and b/html/images/16/flag_yellow.png differ diff --git a/html/images/16/folder.png b/html/images/16/folder.png new file mode 100755 index 0000000000..784e8fa482 Binary files /dev/null and b/html/images/16/folder.png differ diff --git a/html/images/16/folder_add.png b/html/images/16/folder_add.png new file mode 100755 index 0000000000..529fe8fe04 Binary files /dev/null and b/html/images/16/folder_add.png differ diff --git a/html/images/16/folder_bell.png b/html/images/16/folder_bell.png new file mode 100755 index 0000000000..d04dd7f513 Binary files /dev/null and b/html/images/16/folder_bell.png differ diff --git a/html/images/16/folder_brick.png b/html/images/16/folder_brick.png new file mode 100755 index 0000000000..5dea9769a2 Binary files /dev/null and b/html/images/16/folder_brick.png differ diff --git a/html/images/16/folder_bug.png b/html/images/16/folder_bug.png new file mode 100755 index 0000000000..4f791b684b Binary files /dev/null and b/html/images/16/folder_bug.png differ diff --git a/html/images/16/folder_camera.png b/html/images/16/folder_camera.png new file mode 100755 index 0000000000..c9519416dd Binary files /dev/null and b/html/images/16/folder_camera.png differ diff --git a/html/images/16/folder_database.png b/html/images/16/folder_database.png new file mode 100755 index 0000000000..5193e2eff3 Binary files /dev/null and b/html/images/16/folder_database.png differ diff --git a/html/images/16/folder_delete.png b/html/images/16/folder_delete.png new file mode 100755 index 0000000000..112b01638e Binary files /dev/null and b/html/images/16/folder_delete.png differ diff --git a/html/images/16/folder_edit.png b/html/images/16/folder_edit.png new file mode 100755 index 0000000000..ad669cc781 Binary files /dev/null and b/html/images/16/folder_edit.png differ diff --git a/html/images/16/folder_error.png b/html/images/16/folder_error.png new file mode 100755 index 0000000000..1af8809513 Binary files /dev/null and b/html/images/16/folder_error.png differ diff --git a/html/images/16/folder_explore.png b/html/images/16/folder_explore.png new file mode 100755 index 0000000000..0ba939184d Binary files /dev/null and b/html/images/16/folder_explore.png differ diff --git a/html/images/16/folder_feed.png b/html/images/16/folder_feed.png new file mode 100755 index 0000000000..d06ee51e41 Binary files /dev/null and b/html/images/16/folder_feed.png differ diff --git a/html/images/16/folder_find.png b/html/images/16/folder_find.png new file mode 100755 index 0000000000..c64e2ee679 Binary files /dev/null and b/html/images/16/folder_find.png differ diff --git a/html/images/16/folder_go.png b/html/images/16/folder_go.png new file mode 100755 index 0000000000..34a736f702 Binary files /dev/null and b/html/images/16/folder_go.png differ diff --git a/html/images/16/folder_heart.png b/html/images/16/folder_heart.png new file mode 100755 index 0000000000..56d7da1d6a Binary files /dev/null and b/html/images/16/folder_heart.png differ diff --git a/html/images/16/folder_image.png b/html/images/16/folder_image.png new file mode 100755 index 0000000000..d5df75bb6e Binary files /dev/null and b/html/images/16/folder_image.png differ diff --git a/html/images/16/folder_key.png b/html/images/16/folder_key.png new file mode 100755 index 0000000000..fb9b4c2bbc Binary files /dev/null and b/html/images/16/folder_key.png differ diff --git a/html/images/16/folder_lightbulb.png b/html/images/16/folder_lightbulb.png new file mode 100755 index 0000000000..f367a51172 Binary files /dev/null and b/html/images/16/folder_lightbulb.png differ diff --git a/html/images/16/folder_link.png b/html/images/16/folder_link.png new file mode 100755 index 0000000000..b9b75f6c39 Binary files /dev/null and b/html/images/16/folder_link.png differ diff --git a/html/images/16/folder_magnify.png b/html/images/16/folder_magnify.png new file mode 100755 index 0000000000..0a3e7985c1 Binary files /dev/null and b/html/images/16/folder_magnify.png differ diff --git a/html/images/16/folder_page.png b/html/images/16/folder_page.png new file mode 100755 index 0000000000..1ef6e11438 Binary files /dev/null and b/html/images/16/folder_page.png differ diff --git a/html/images/16/folder_page_white.png b/html/images/16/folder_page_white.png new file mode 100755 index 0000000000..14d6b6181f Binary files /dev/null and b/html/images/16/folder_page_white.png differ diff --git a/html/images/16/folder_palette.png b/html/images/16/folder_palette.png new file mode 100755 index 0000000000..ba12fe8acc Binary files /dev/null and b/html/images/16/folder_palette.png differ diff --git a/html/images/16/folder_picture.png b/html/images/16/folder_picture.png new file mode 100755 index 0000000000..052b33638e Binary files /dev/null and b/html/images/16/folder_picture.png differ diff --git a/html/images/16/folder_star.png b/html/images/16/folder_star.png new file mode 100755 index 0000000000..448e46fd5a Binary files /dev/null and b/html/images/16/folder_star.png differ diff --git a/html/images/16/folder_table.png b/html/images/16/folder_table.png new file mode 100755 index 0000000000..473cee355d Binary files /dev/null and b/html/images/16/folder_table.png differ diff --git a/html/images/16/folder_user.png b/html/images/16/folder_user.png new file mode 100755 index 0000000000..f021c3e12a Binary files /dev/null and b/html/images/16/folder_user.png differ diff --git a/html/images/16/folder_wrench.png b/html/images/16/folder_wrench.png new file mode 100755 index 0000000000..ea3404e031 Binary files /dev/null and b/html/images/16/folder_wrench.png differ diff --git a/html/images/16/font.png b/html/images/16/font.png new file mode 100755 index 0000000000..b7960db9da Binary files /dev/null and b/html/images/16/font.png differ diff --git a/html/images/16/font_add.png b/html/images/16/font_add.png new file mode 100755 index 0000000000..b709ebaef4 Binary files /dev/null and b/html/images/16/font_add.png differ diff --git a/html/images/16/font_delete.png b/html/images/16/font_delete.png new file mode 100755 index 0000000000..1d6124d6e3 Binary files /dev/null and b/html/images/16/font_delete.png differ diff --git a/html/images/16/font_go.png b/html/images/16/font_go.png new file mode 100755 index 0000000000..75eba80d62 Binary files /dev/null and b/html/images/16/font_go.png differ diff --git a/html/images/16/group.png b/html/images/16/group.png new file mode 100755 index 0000000000..7fb4e1f1e1 Binary files /dev/null and b/html/images/16/group.png differ diff --git a/html/images/16/group_add.png b/html/images/16/group_add.png new file mode 100755 index 0000000000..06c5350cb1 Binary files /dev/null and b/html/images/16/group_add.png differ diff --git a/html/images/16/group_delete.png b/html/images/16/group_delete.png new file mode 100755 index 0000000000..4489ca238a Binary files /dev/null and b/html/images/16/group_delete.png differ diff --git a/html/images/16/group_edit.png b/html/images/16/group_edit.png new file mode 100755 index 0000000000..c88b945b0a Binary files /dev/null and b/html/images/16/group_edit.png differ diff --git a/html/images/16/group_error.png b/html/images/16/group_error.png new file mode 100755 index 0000000000..7364a13cbe Binary files /dev/null and b/html/images/16/group_error.png differ diff --git a/html/images/16/group_gear.png b/html/images/16/group_gear.png new file mode 100755 index 0000000000..2544f2e637 Binary files /dev/null and b/html/images/16/group_gear.png differ diff --git a/html/images/16/group_go.png b/html/images/16/group_go.png new file mode 100755 index 0000000000..1f5233308b Binary files /dev/null and b/html/images/16/group_go.png differ diff --git a/html/images/16/group_key.png b/html/images/16/group_key.png new file mode 100755 index 0000000000..257f111ca8 Binary files /dev/null and b/html/images/16/group_key.png differ diff --git a/html/images/16/group_link.png b/html/images/16/group_link.png new file mode 100755 index 0000000000..c77ed8812e Binary files /dev/null and b/html/images/16/group_link.png differ diff --git a/html/images/16/heart.png b/html/images/16/heart.png new file mode 100755 index 0000000000..d9ee53e590 Binary files /dev/null and b/html/images/16/heart.png differ diff --git a/html/images/16/heart_add.png b/html/images/16/heart_add.png new file mode 100755 index 0000000000..d4195ff802 Binary files /dev/null and b/html/images/16/heart_add.png differ diff --git a/html/images/16/heart_delete.png b/html/images/16/heart_delete.png new file mode 100755 index 0000000000..ce523e3436 Binary files /dev/null and b/html/images/16/heart_delete.png differ diff --git a/html/images/16/help.png b/html/images/16/help.png new file mode 100755 index 0000000000..5c870176d4 Binary files /dev/null and b/html/images/16/help.png differ diff --git a/html/images/16/hourglass.png b/html/images/16/hourglass.png new file mode 100755 index 0000000000..57b03ce7a6 Binary files /dev/null and b/html/images/16/hourglass.png differ diff --git a/html/images/16/hourglass_add.png b/html/images/16/hourglass_add.png new file mode 100755 index 0000000000..170dfff1ec Binary files /dev/null and b/html/images/16/hourglass_add.png differ diff --git a/html/images/16/hourglass_delete.png b/html/images/16/hourglass_delete.png new file mode 100755 index 0000000000..4b1337be8f Binary files /dev/null and b/html/images/16/hourglass_delete.png differ diff --git a/html/images/16/hourglass_go.png b/html/images/16/hourglass_go.png new file mode 100755 index 0000000000..b2d3a98bc4 Binary files /dev/null and b/html/images/16/hourglass_go.png differ diff --git a/html/images/16/hourglass_link.png b/html/images/16/hourglass_link.png new file mode 100755 index 0000000000..ecc59b0abe Binary files /dev/null and b/html/images/16/hourglass_link.png differ diff --git a/html/images/16/house.png b/html/images/16/house.png new file mode 100755 index 0000000000..fed62219f5 Binary files /dev/null and b/html/images/16/house.png differ diff --git a/html/images/16/house_go.png b/html/images/16/house_go.png new file mode 100755 index 0000000000..5457dbd3cd Binary files /dev/null and b/html/images/16/house_go.png differ diff --git a/html/images/16/house_link.png b/html/images/16/house_link.png new file mode 100755 index 0000000000..be2c2719ec Binary files /dev/null and b/html/images/16/house_link.png differ diff --git a/html/images/16/html.png b/html/images/16/html.png new file mode 100755 index 0000000000..55d1072eaf Binary files /dev/null and b/html/images/16/html.png differ diff --git a/html/images/16/html_add.png b/html/images/16/html_add.png new file mode 100755 index 0000000000..f1c08b7d68 Binary files /dev/null and b/html/images/16/html_add.png differ diff --git a/html/images/16/html_delete.png b/html/images/16/html_delete.png new file mode 100755 index 0000000000..1bd28489e5 Binary files /dev/null and b/html/images/16/html_delete.png differ diff --git a/html/images/16/html_go.png b/html/images/16/html_go.png new file mode 100755 index 0000000000..a95cede1e4 Binary files /dev/null and b/html/images/16/html_go.png differ diff --git a/html/images/16/html_valid.png b/html/images/16/html_valid.png new file mode 100755 index 0000000000..71cec9249a Binary files /dev/null and b/html/images/16/html_valid.png differ diff --git a/html/images/16/if-connect.png b/html/images/16/if-connect.png new file mode 100644 index 0000000000..b493035b67 Binary files /dev/null and b/html/images/16/if-connect.png differ diff --git a/html/images/16/if-disable.png b/html/images/16/if-disable.png new file mode 100755 index 0000000000..08645998b5 Binary files /dev/null and b/html/images/16/if-disable.png differ diff --git a/html/images/16/if-disconnect.png b/html/images/16/if-disconnect.png new file mode 100644 index 0000000000..e3a81fe943 Binary files /dev/null and b/html/images/16/if-disconnect.png differ diff --git a/html/images/16/if-enable.png b/html/images/16/if-enable.png new file mode 100644 index 0000000000..b335cb11c4 Binary files /dev/null and b/html/images/16/if-enable.png differ diff --git a/html/images/16/image.png b/html/images/16/image.png new file mode 100755 index 0000000000..fc3c393caa Binary files /dev/null and b/html/images/16/image.png differ diff --git a/html/images/16/image_add.png b/html/images/16/image_add.png new file mode 100755 index 0000000000..fc5d6139e9 Binary files /dev/null and b/html/images/16/image_add.png differ diff --git a/html/images/16/image_delete.png b/html/images/16/image_delete.png new file mode 100755 index 0000000000..c260e1d966 Binary files /dev/null and b/html/images/16/image_delete.png differ diff --git a/html/images/16/image_edit.png b/html/images/16/image_edit.png new file mode 100755 index 0000000000..0aa4cc6512 Binary files /dev/null and b/html/images/16/image_edit.png differ diff --git a/html/images/16/image_link.png b/html/images/16/image_link.png new file mode 100755 index 0000000000..4bdb3541ec Binary files /dev/null and b/html/images/16/image_link.png differ diff --git a/html/images/16/images.png b/html/images/16/images.png new file mode 100755 index 0000000000..184860d1e0 Binary files /dev/null and b/html/images/16/images.png differ diff --git a/html/images/16/information.png b/html/images/16/information.png new file mode 100755 index 0000000000..12cd1aef90 Binary files /dev/null and b/html/images/16/information.png differ diff --git a/html/images/16/ipod.png b/html/images/16/ipod.png new file mode 100755 index 0000000000..3f768da502 Binary files /dev/null and b/html/images/16/ipod.png differ diff --git a/html/images/16/ipod_cast.png b/html/images/16/ipod_cast.png new file mode 100755 index 0000000000..6f6d3406cb Binary files /dev/null and b/html/images/16/ipod_cast.png differ diff --git a/html/images/16/ipod_cast_add.png b/html/images/16/ipod_cast_add.png new file mode 100755 index 0000000000..c3257f5f1e Binary files /dev/null and b/html/images/16/ipod_cast_add.png differ diff --git a/html/images/16/ipod_cast_delete.png b/html/images/16/ipod_cast_delete.png new file mode 100755 index 0000000000..377ab6950b Binary files /dev/null and b/html/images/16/ipod_cast_delete.png differ diff --git a/html/images/16/ipod_sound.png b/html/images/16/ipod_sound.png new file mode 100755 index 0000000000..fef6e8bada Binary files /dev/null and b/html/images/16/ipod_sound.png differ diff --git a/html/images/16/joystick.png b/html/images/16/joystick.png new file mode 100755 index 0000000000..62168f56f2 Binary files /dev/null and b/html/images/16/joystick.png differ diff --git a/html/images/16/joystick_add.png b/html/images/16/joystick_add.png new file mode 100755 index 0000000000..77e710772f Binary files /dev/null and b/html/images/16/joystick_add.png differ diff --git a/html/images/16/joystick_delete.png b/html/images/16/joystick_delete.png new file mode 100755 index 0000000000..5d44b59250 Binary files /dev/null and b/html/images/16/joystick_delete.png differ diff --git a/html/images/16/joystick_error.png b/html/images/16/joystick_error.png new file mode 100755 index 0000000000..b32149e27a Binary files /dev/null and b/html/images/16/joystick_error.png differ diff --git a/html/images/16/key.png b/html/images/16/key.png new file mode 100755 index 0000000000..4ec1a92814 Binary files /dev/null and b/html/images/16/key.png differ diff --git a/html/images/16/key_add.png b/html/images/16/key_add.png new file mode 100755 index 0000000000..d40740396c Binary files /dev/null and b/html/images/16/key_add.png differ diff --git a/html/images/16/key_delete.png b/html/images/16/key_delete.png new file mode 100755 index 0000000000..00dec80d84 Binary files /dev/null and b/html/images/16/key_delete.png differ diff --git a/html/images/16/key_go.png b/html/images/16/key_go.png new file mode 100755 index 0000000000..30b0dc316e Binary files /dev/null and b/html/images/16/key_go.png differ diff --git a/html/images/16/keyboard.png b/html/images/16/keyboard.png new file mode 100755 index 0000000000..898d402d70 Binary files /dev/null and b/html/images/16/keyboard.png differ diff --git a/html/images/16/keyboard_add.png b/html/images/16/keyboard_add.png new file mode 100755 index 0000000000..26938dd0c3 Binary files /dev/null and b/html/images/16/keyboard_add.png differ diff --git a/html/images/16/keyboard_delete.png b/html/images/16/keyboard_delete.png new file mode 100755 index 0000000000..1786ed5bec Binary files /dev/null and b/html/images/16/keyboard_delete.png differ diff --git a/html/images/16/keyboard_magnify.png b/html/images/16/keyboard_magnify.png new file mode 100755 index 0000000000..928fc17b4d Binary files /dev/null and b/html/images/16/keyboard_magnify.png differ diff --git a/html/images/16/layers.png b/html/images/16/layers.png new file mode 100755 index 0000000000..00818f6363 Binary files /dev/null and b/html/images/16/layers.png differ diff --git a/html/images/16/layout.png b/html/images/16/layout.png new file mode 100755 index 0000000000..ea086b0428 Binary files /dev/null and b/html/images/16/layout.png differ diff --git a/html/images/16/layout_add.png b/html/images/16/layout_add.png new file mode 100755 index 0000000000..62037221c0 Binary files /dev/null and b/html/images/16/layout_add.png differ diff --git a/html/images/16/layout_content.png b/html/images/16/layout_content.png new file mode 100755 index 0000000000..b4aaad9a45 Binary files /dev/null and b/html/images/16/layout_content.png differ diff --git a/html/images/16/layout_delete.png b/html/images/16/layout_delete.png new file mode 100755 index 0000000000..4bd45f1316 Binary files /dev/null and b/html/images/16/layout_delete.png differ diff --git a/html/images/16/layout_edit.png b/html/images/16/layout_edit.png new file mode 100755 index 0000000000..ab3100b5c5 Binary files /dev/null and b/html/images/16/layout_edit.png differ diff --git a/html/images/16/layout_error.png b/html/images/16/layout_error.png new file mode 100755 index 0000000000..5b5acea92c Binary files /dev/null and b/html/images/16/layout_error.png differ diff --git a/html/images/16/layout_header.png b/html/images/16/layout_header.png new file mode 100755 index 0000000000..c6ea7f2308 Binary files /dev/null and b/html/images/16/layout_header.png differ diff --git a/html/images/16/layout_link.png b/html/images/16/layout_link.png new file mode 100755 index 0000000000..3445d42063 Binary files /dev/null and b/html/images/16/layout_link.png differ diff --git a/html/images/16/layout_sidebar.png b/html/images/16/layout_sidebar.png new file mode 100755 index 0000000000..3be27bb9bb Binary files /dev/null and b/html/images/16/layout_sidebar.png differ diff --git a/html/images/16/lightbulb.png b/html/images/16/lightbulb.png new file mode 100755 index 0000000000..d22fde8ba4 Binary files /dev/null and b/html/images/16/lightbulb.png differ diff --git a/html/images/16/lightbulb_add.png b/html/images/16/lightbulb_add.png new file mode 100755 index 0000000000..0dd848bd63 Binary files /dev/null and b/html/images/16/lightbulb_add.png differ diff --git a/html/images/16/lightbulb_delete.png b/html/images/16/lightbulb_delete.png new file mode 100755 index 0000000000..f4781daa84 Binary files /dev/null and b/html/images/16/lightbulb_delete.png differ diff --git a/html/images/16/lightbulb_off.png b/html/images/16/lightbulb_off.png new file mode 100755 index 0000000000..e95b8c5b12 Binary files /dev/null and b/html/images/16/lightbulb_off.png differ diff --git a/html/images/16/lightning.png b/html/images/16/lightning.png new file mode 100755 index 0000000000..9680afd12f Binary files /dev/null and b/html/images/16/lightning.png differ diff --git a/html/images/16/lightning_add.png b/html/images/16/lightning_add.png new file mode 100755 index 0000000000..dac3c9050c Binary files /dev/null and b/html/images/16/lightning_add.png differ diff --git a/html/images/16/lightning_delete.png b/html/images/16/lightning_delete.png new file mode 100755 index 0000000000..dfe2770509 Binary files /dev/null and b/html/images/16/lightning_delete.png differ diff --git a/html/images/16/lightning_go.png b/html/images/16/lightning_go.png new file mode 100755 index 0000000000..29039e6a8b Binary files /dev/null and b/html/images/16/lightning_go.png differ diff --git a/html/images/16/link.png b/html/images/16/link.png new file mode 100755 index 0000000000..25eacb7c25 Binary files /dev/null and b/html/images/16/link.png differ diff --git a/html/images/16/link_add.png b/html/images/16/link_add.png new file mode 100755 index 0000000000..00be352c57 Binary files /dev/null and b/html/images/16/link_add.png differ diff --git a/html/images/16/link_break.png b/html/images/16/link_break.png new file mode 100755 index 0000000000..523575306d Binary files /dev/null and b/html/images/16/link_break.png differ diff --git a/html/images/16/link_delete.png b/html/images/16/link_delete.png new file mode 100755 index 0000000000..f66e2974ef Binary files /dev/null and b/html/images/16/link_delete.png differ diff --git a/html/images/16/link_edit.png b/html/images/16/link_edit.png new file mode 100755 index 0000000000..5b3aed090f Binary files /dev/null and b/html/images/16/link_edit.png differ diff --git a/html/images/16/link_error.png b/html/images/16/link_error.png new file mode 100755 index 0000000000..ab694b1ac4 Binary files /dev/null and b/html/images/16/link_error.png differ diff --git a/html/images/16/link_go.png b/html/images/16/link_go.png new file mode 100755 index 0000000000..ae8cae806e Binary files /dev/null and b/html/images/16/link_go.png differ diff --git a/html/images/16/lock.png b/html/images/16/lock.png new file mode 100755 index 0000000000..2ebc4f6f96 Binary files /dev/null and b/html/images/16/lock.png differ diff --git a/html/images/16/lock_add.png b/html/images/16/lock_add.png new file mode 100755 index 0000000000..a7b566b1f9 Binary files /dev/null and b/html/images/16/lock_add.png differ diff --git a/html/images/16/lock_break.png b/html/images/16/lock_break.png new file mode 100755 index 0000000000..13578ab5ad Binary files /dev/null and b/html/images/16/lock_break.png differ diff --git a/html/images/16/lock_delete.png b/html/images/16/lock_delete.png new file mode 100755 index 0000000000..ecb50a93fd Binary files /dev/null and b/html/images/16/lock_delete.png differ diff --git a/html/images/16/lock_edit.png b/html/images/16/lock_edit.png new file mode 100755 index 0000000000..116aa5b7f1 Binary files /dev/null and b/html/images/16/lock_edit.png differ diff --git a/html/images/16/lock_go.png b/html/images/16/lock_go.png new file mode 100755 index 0000000000..8c7c89b26e Binary files /dev/null and b/html/images/16/lock_go.png differ diff --git a/html/images/16/lock_open.png b/html/images/16/lock_open.png new file mode 100755 index 0000000000..a471765ff1 Binary files /dev/null and b/html/images/16/lock_open.png differ diff --git a/html/images/16/lorry.png b/html/images/16/lorry.png new file mode 100755 index 0000000000..8f95f5a5d8 Binary files /dev/null and b/html/images/16/lorry.png differ diff --git a/html/images/16/lorry_add.png b/html/images/16/lorry_add.png new file mode 100755 index 0000000000..a2c512499d Binary files /dev/null and b/html/images/16/lorry_add.png differ diff --git a/html/images/16/lorry_delete.png b/html/images/16/lorry_delete.png new file mode 100755 index 0000000000..66217f5262 Binary files /dev/null and b/html/images/16/lorry_delete.png differ diff --git a/html/images/16/lorry_error.png b/html/images/16/lorry_error.png new file mode 100755 index 0000000000..3619ead96b Binary files /dev/null and b/html/images/16/lorry_error.png differ diff --git a/html/images/16/lorry_flatbed.png b/html/images/16/lorry_flatbed.png new file mode 100755 index 0000000000..8b20f55034 Binary files /dev/null and b/html/images/16/lorry_flatbed.png differ diff --git a/html/images/16/lorry_go.png b/html/images/16/lorry_go.png new file mode 100755 index 0000000000..1c296a6aa0 Binary files /dev/null and b/html/images/16/lorry_go.png differ diff --git a/html/images/16/lorry_link.png b/html/images/16/lorry_link.png new file mode 100755 index 0000000000..5e6663e5c4 Binary files /dev/null and b/html/images/16/lorry_link.png differ diff --git a/html/images/16/magifier_zoom_out.png b/html/images/16/magifier_zoom_out.png new file mode 100755 index 0000000000..81f28199ac Binary files /dev/null and b/html/images/16/magifier_zoom_out.png differ diff --git a/html/images/16/magnifier.png b/html/images/16/magnifier.png new file mode 100755 index 0000000000..cf3d97f75e Binary files /dev/null and b/html/images/16/magnifier.png differ diff --git a/html/images/16/magnifier_zoom_in.png b/html/images/16/magnifier_zoom_in.png new file mode 100755 index 0000000000..af4fe07477 Binary files /dev/null and b/html/images/16/magnifier_zoom_in.png differ diff --git a/html/images/16/male.png b/html/images/16/male.png new file mode 100755 index 0000000000..25d6ea91d1 Binary files /dev/null and b/html/images/16/male.png differ diff --git a/html/images/16/map.png b/html/images/16/map.png new file mode 100755 index 0000000000..f90ef25ec7 Binary files /dev/null and b/html/images/16/map.png differ diff --git a/html/images/16/map_add.png b/html/images/16/map_add.png new file mode 100755 index 0000000000..2b72da06ae Binary files /dev/null and b/html/images/16/map_add.png differ diff --git a/html/images/16/map_delete.png b/html/images/16/map_delete.png new file mode 100755 index 0000000000..e74402f9c4 Binary files /dev/null and b/html/images/16/map_delete.png differ diff --git a/html/images/16/map_edit.png b/html/images/16/map_edit.png new file mode 100755 index 0000000000..93d4d7e5ff Binary files /dev/null and b/html/images/16/map_edit.png differ diff --git a/html/images/16/map_go.png b/html/images/16/map_go.png new file mode 100755 index 0000000000..11eab26db5 Binary files /dev/null and b/html/images/16/map_go.png differ diff --git a/html/images/16/map_magnify.png b/html/images/16/map_magnify.png new file mode 100755 index 0000000000..7184c9ddf0 Binary files /dev/null and b/html/images/16/map_magnify.png differ diff --git a/html/images/16/medal_bronze_1.png b/html/images/16/medal_bronze_1.png new file mode 100755 index 0000000000..5f8a6d65d5 Binary files /dev/null and b/html/images/16/medal_bronze_1.png differ diff --git a/html/images/16/medal_bronze_2.png b/html/images/16/medal_bronze_2.png new file mode 100755 index 0000000000..623d68c5d6 Binary files /dev/null and b/html/images/16/medal_bronze_2.png differ diff --git a/html/images/16/medal_bronze_3.png b/html/images/16/medal_bronze_3.png new file mode 100755 index 0000000000..ed3f43eb02 Binary files /dev/null and b/html/images/16/medal_bronze_3.png differ diff --git a/html/images/16/medal_bronze_add.png b/html/images/16/medal_bronze_add.png new file mode 100755 index 0000000000..8487b2c196 Binary files /dev/null and b/html/images/16/medal_bronze_add.png differ diff --git a/html/images/16/medal_bronze_delete.png b/html/images/16/medal_bronze_delete.png new file mode 100755 index 0000000000..d32aed727a Binary files /dev/null and b/html/images/16/medal_bronze_delete.png differ diff --git a/html/images/16/medal_gold_1.png b/html/images/16/medal_gold_1.png new file mode 100755 index 0000000000..87584dc958 Binary files /dev/null and b/html/images/16/medal_gold_1.png differ diff --git a/html/images/16/medal_gold_2.png b/html/images/16/medal_gold_2.png new file mode 100755 index 0000000000..fa3a15dd67 Binary files /dev/null and b/html/images/16/medal_gold_2.png differ diff --git a/html/images/16/medal_gold_3.png b/html/images/16/medal_gold_3.png new file mode 100755 index 0000000000..ef1b08b920 Binary files /dev/null and b/html/images/16/medal_gold_3.png differ diff --git a/html/images/16/medal_gold_add.png b/html/images/16/medal_gold_add.png new file mode 100755 index 0000000000..dcade0d8db Binary files /dev/null and b/html/images/16/medal_gold_add.png differ diff --git a/html/images/16/medal_gold_delete.png b/html/images/16/medal_gold_delete.png new file mode 100755 index 0000000000..84b06d5bfd Binary files /dev/null and b/html/images/16/medal_gold_delete.png differ diff --git a/html/images/16/medal_silver_1.png b/html/images/16/medal_silver_1.png new file mode 100755 index 0000000000..75a64da325 Binary files /dev/null and b/html/images/16/medal_silver_1.png differ diff --git a/html/images/16/medal_silver_2.png b/html/images/16/medal_silver_2.png new file mode 100755 index 0000000000..2e0fe75c90 Binary files /dev/null and b/html/images/16/medal_silver_2.png differ diff --git a/html/images/16/medal_silver_3.png b/html/images/16/medal_silver_3.png new file mode 100755 index 0000000000..e385b54673 Binary files /dev/null and b/html/images/16/medal_silver_3.png differ diff --git a/html/images/16/medal_silver_add.png b/html/images/16/medal_silver_add.png new file mode 100755 index 0000000000..b0633fa0ef Binary files /dev/null and b/html/images/16/medal_silver_add.png differ diff --git a/html/images/16/medal_silver_delete.png b/html/images/16/medal_silver_delete.png new file mode 100755 index 0000000000..06cab46790 Binary files /dev/null and b/html/images/16/medal_silver_delete.png differ diff --git a/html/images/16/money.png b/html/images/16/money.png new file mode 100755 index 0000000000..42c52d05f6 Binary files /dev/null and b/html/images/16/money.png differ diff --git a/html/images/16/money_add.png b/html/images/16/money_add.png new file mode 100755 index 0000000000..588fa9d078 Binary files /dev/null and b/html/images/16/money_add.png differ diff --git a/html/images/16/money_delete.png b/html/images/16/money_delete.png new file mode 100755 index 0000000000..eae2c524b0 Binary files /dev/null and b/html/images/16/money_delete.png differ diff --git a/html/images/16/money_dollar.png b/html/images/16/money_dollar.png new file mode 100755 index 0000000000..59af163824 Binary files /dev/null and b/html/images/16/money_dollar.png differ diff --git a/html/images/16/money_euro.png b/html/images/16/money_euro.png new file mode 100755 index 0000000000..b322ba9296 Binary files /dev/null and b/html/images/16/money_euro.png differ diff --git a/html/images/16/money_pound.png b/html/images/16/money_pound.png new file mode 100755 index 0000000000..b711364637 Binary files /dev/null and b/html/images/16/money_pound.png differ diff --git a/html/images/16/money_yen.png b/html/images/16/money_yen.png new file mode 100755 index 0000000000..228a6778bc Binary files /dev/null and b/html/images/16/money_yen.png differ diff --git a/html/images/16/monitor.png b/html/images/16/monitor.png new file mode 100755 index 0000000000..d040bd0223 Binary files /dev/null and b/html/images/16/monitor.png differ diff --git a/html/images/16/monitor_add.png b/html/images/16/monitor_add.png new file mode 100755 index 0000000000..a818066400 Binary files /dev/null and b/html/images/16/monitor_add.png differ diff --git a/html/images/16/monitor_delete.png b/html/images/16/monitor_delete.png new file mode 100755 index 0000000000..37332563f2 Binary files /dev/null and b/html/images/16/monitor_delete.png differ diff --git a/html/images/16/monitor_edit.png b/html/images/16/monitor_edit.png new file mode 100755 index 0000000000..f772c562f4 Binary files /dev/null and b/html/images/16/monitor_edit.png differ diff --git a/html/images/16/monitor_error.png b/html/images/16/monitor_error.png new file mode 100755 index 0000000000..270c5018d2 Binary files /dev/null and b/html/images/16/monitor_error.png differ diff --git a/html/images/16/monitor_go.png b/html/images/16/monitor_go.png new file mode 100755 index 0000000000..8af3eda9f2 Binary files /dev/null and b/html/images/16/monitor_go.png differ diff --git a/html/images/16/monitor_lightning.png b/html/images/16/monitor_lightning.png new file mode 100755 index 0000000000..06e53a9d19 Binary files /dev/null and b/html/images/16/monitor_lightning.png differ diff --git a/html/images/16/monitor_link.png b/html/images/16/monitor_link.png new file mode 100755 index 0000000000..a014b025af Binary files /dev/null and b/html/images/16/monitor_link.png differ diff --git a/html/images/16/mouse.png b/html/images/16/mouse.png new file mode 100755 index 0000000000..63a92fa91c Binary files /dev/null and b/html/images/16/mouse.png differ diff --git a/html/images/16/mouse_add.png b/html/images/16/mouse_add.png new file mode 100755 index 0000000000..65bcab5206 Binary files /dev/null and b/html/images/16/mouse_add.png differ diff --git a/html/images/16/mouse_delete.png b/html/images/16/mouse_delete.png new file mode 100755 index 0000000000..72865668cf Binary files /dev/null and b/html/images/16/mouse_delete.png differ diff --git a/html/images/16/mouse_error.png b/html/images/16/mouse_error.png new file mode 100755 index 0000000000..bcc156238b Binary files /dev/null and b/html/images/16/mouse_error.png differ diff --git a/html/images/16/music.png b/html/images/16/music.png new file mode 100755 index 0000000000..a8b3ede3df Binary files /dev/null and b/html/images/16/music.png differ diff --git a/html/images/16/new.png b/html/images/16/new.png new file mode 100755 index 0000000000..6a9bf03707 Binary files /dev/null and b/html/images/16/new.png differ diff --git a/html/images/16/newspaper.png b/html/images/16/newspaper.png new file mode 100755 index 0000000000..6a2ecce1b8 Binary files /dev/null and b/html/images/16/newspaper.png differ diff --git a/html/images/16/newspaper_add.png b/html/images/16/newspaper_add.png new file mode 100755 index 0000000000..8140e8c101 Binary files /dev/null and b/html/images/16/newspaper_add.png differ diff --git a/html/images/16/newspaper_delete.png b/html/images/16/newspaper_delete.png new file mode 100755 index 0000000000..bde96ce19a Binary files /dev/null and b/html/images/16/newspaper_delete.png differ diff --git a/html/images/16/newspaper_go.png b/html/images/16/newspaper_go.png new file mode 100755 index 0000000000..fd6142871d Binary files /dev/null and b/html/images/16/newspaper_go.png differ diff --git a/html/images/16/newspaper_link.png b/html/images/16/newspaper_link.png new file mode 100755 index 0000000000..99e57cba87 Binary files /dev/null and b/html/images/16/newspaper_link.png differ diff --git a/html/images/16/note.png b/html/images/16/note.png new file mode 100755 index 0000000000..244e6ca045 Binary files /dev/null and b/html/images/16/note.png differ diff --git a/html/images/16/note_add.png b/html/images/16/note_add.png new file mode 100755 index 0000000000..abdad91eb2 Binary files /dev/null and b/html/images/16/note_add.png differ diff --git a/html/images/16/note_delete.png b/html/images/16/note_delete.png new file mode 100755 index 0000000000..8a1f0ff56f Binary files /dev/null and b/html/images/16/note_delete.png differ diff --git a/html/images/16/note_edit.png b/html/images/16/note_edit.png new file mode 100755 index 0000000000..291bfc7647 Binary files /dev/null and b/html/images/16/note_edit.png differ diff --git a/html/images/16/note_error.png b/html/images/16/note_error.png new file mode 100755 index 0000000000..896dadfd17 Binary files /dev/null and b/html/images/16/note_error.png differ diff --git a/html/images/16/note_go.png b/html/images/16/note_go.png new file mode 100755 index 0000000000..49e54fd872 Binary files /dev/null and b/html/images/16/note_go.png differ diff --git a/html/images/16/overlays.png b/html/images/16/overlays.png new file mode 100755 index 0000000000..ab3100b5c5 Binary files /dev/null and b/html/images/16/overlays.png differ diff --git a/html/images/16/package.png b/html/images/16/package.png new file mode 100755 index 0000000000..da3c2a2d74 Binary files /dev/null and b/html/images/16/package.png differ diff --git a/html/images/16/package_add.png b/html/images/16/package_add.png new file mode 100755 index 0000000000..9c8a9da4ae Binary files /dev/null and b/html/images/16/package_add.png differ diff --git a/html/images/16/package_delete.png b/html/images/16/package_delete.png new file mode 100755 index 0000000000..86f7fbc299 Binary files /dev/null and b/html/images/16/package_delete.png differ diff --git a/html/images/16/package_go.png b/html/images/16/package_go.png new file mode 100755 index 0000000000..aace63ad6f Binary files /dev/null and b/html/images/16/package_go.png differ diff --git a/html/images/16/package_green.png b/html/images/16/package_green.png new file mode 100755 index 0000000000..25b28bb6aa Binary files /dev/null and b/html/images/16/package_green.png differ diff --git a/html/images/16/package_link.png b/html/images/16/package_link.png new file mode 100755 index 0000000000..48e7ab55f0 Binary files /dev/null and b/html/images/16/package_link.png differ diff --git a/html/images/16/page.png b/html/images/16/page.png new file mode 100755 index 0000000000..03ddd799fa Binary files /dev/null and b/html/images/16/page.png differ diff --git a/html/images/16/page_add.png b/html/images/16/page_add.png new file mode 100755 index 0000000000..d5bfa0719b Binary files /dev/null and b/html/images/16/page_add.png differ diff --git a/html/images/16/page_attach.png b/html/images/16/page_attach.png new file mode 100755 index 0000000000..89ee2da075 Binary files /dev/null and b/html/images/16/page_attach.png differ diff --git a/html/images/16/page_code.png b/html/images/16/page_code.png new file mode 100755 index 0000000000..f7ea90419d Binary files /dev/null and b/html/images/16/page_code.png differ diff --git a/html/images/16/page_copy.png b/html/images/16/page_copy.png new file mode 100755 index 0000000000..195dc6d6c3 Binary files /dev/null and b/html/images/16/page_copy.png differ diff --git a/html/images/16/page_delete.png b/html/images/16/page_delete.png new file mode 100755 index 0000000000..3141467c67 Binary files /dev/null and b/html/images/16/page_delete.png differ diff --git a/html/images/16/page_edit.png b/html/images/16/page_edit.png new file mode 100755 index 0000000000..046811ed7a Binary files /dev/null and b/html/images/16/page_edit.png differ diff --git a/html/images/16/page_error.png b/html/images/16/page_error.png new file mode 100755 index 0000000000..f07f449a44 Binary files /dev/null and b/html/images/16/page_error.png differ diff --git a/html/images/16/page_excel.png b/html/images/16/page_excel.png new file mode 100755 index 0000000000..eb6158eb5c Binary files /dev/null and b/html/images/16/page_excel.png differ diff --git a/html/images/16/page_find.png b/html/images/16/page_find.png new file mode 100755 index 0000000000..2f193889f7 Binary files /dev/null and b/html/images/16/page_find.png differ diff --git a/html/images/16/page_gear.png b/html/images/16/page_gear.png new file mode 100755 index 0000000000..8e83281c5f Binary files /dev/null and b/html/images/16/page_gear.png differ diff --git a/html/images/16/page_go.png b/html/images/16/page_go.png new file mode 100755 index 0000000000..80fe1ed0cc Binary files /dev/null and b/html/images/16/page_go.png differ diff --git a/html/images/16/page_green.png b/html/images/16/page_green.png new file mode 100755 index 0000000000..de8e003f9f Binary files /dev/null and b/html/images/16/page_green.png differ diff --git a/html/images/16/page_key.png b/html/images/16/page_key.png new file mode 100755 index 0000000000..d6626cb09e Binary files /dev/null and b/html/images/16/page_key.png differ diff --git a/html/images/16/page_lightning.png b/html/images/16/page_lightning.png new file mode 100755 index 0000000000..7e568703d6 Binary files /dev/null and b/html/images/16/page_lightning.png differ diff --git a/html/images/16/page_link.png b/html/images/16/page_link.png new file mode 100755 index 0000000000..312eab0914 Binary files /dev/null and b/html/images/16/page_link.png differ diff --git a/html/images/16/page_paintbrush.png b/html/images/16/page_paintbrush.png new file mode 100755 index 0000000000..246a2f0b42 Binary files /dev/null and b/html/images/16/page_paintbrush.png differ diff --git a/html/images/16/page_paste.png b/html/images/16/page_paste.png new file mode 100755 index 0000000000..968f073fdd Binary files /dev/null and b/html/images/16/page_paste.png differ diff --git a/html/images/16/page_red.png b/html/images/16/page_red.png new file mode 100755 index 0000000000..0b18247da5 Binary files /dev/null and b/html/images/16/page_red.png differ diff --git a/html/images/16/page_refresh.png b/html/images/16/page_refresh.png new file mode 100755 index 0000000000..cf347c7d46 Binary files /dev/null and b/html/images/16/page_refresh.png differ diff --git a/html/images/16/page_save.png b/html/images/16/page_save.png new file mode 100755 index 0000000000..caea546af5 Binary files /dev/null and b/html/images/16/page_save.png differ diff --git a/html/images/16/page_white.png b/html/images/16/page_white.png new file mode 100755 index 0000000000..8b8b1ca000 Binary files /dev/null and b/html/images/16/page_white.png differ diff --git a/html/images/16/page_white_acrobat.png b/html/images/16/page_white_acrobat.png new file mode 100755 index 0000000000..8f8095e46f Binary files /dev/null and b/html/images/16/page_white_acrobat.png differ diff --git a/html/images/16/page_white_actionscript.png b/html/images/16/page_white_actionscript.png new file mode 100755 index 0000000000..159b240751 Binary files /dev/null and b/html/images/16/page_white_actionscript.png differ diff --git a/html/images/16/page_white_add.png b/html/images/16/page_white_add.png new file mode 100755 index 0000000000..aa23dde374 Binary files /dev/null and b/html/images/16/page_white_add.png differ diff --git a/html/images/16/page_white_c.png b/html/images/16/page_white_c.png new file mode 100755 index 0000000000..34a05cccf0 Binary files /dev/null and b/html/images/16/page_white_c.png differ diff --git a/html/images/16/page_white_camera.png b/html/images/16/page_white_camera.png new file mode 100755 index 0000000000..f501a593a4 Binary files /dev/null and b/html/images/16/page_white_camera.png differ diff --git a/html/images/16/page_white_cd.png b/html/images/16/page_white_cd.png new file mode 100755 index 0000000000..848bdaf3f1 Binary files /dev/null and b/html/images/16/page_white_cd.png differ diff --git a/html/images/16/page_white_code.png b/html/images/16/page_white_code.png new file mode 100755 index 0000000000..0c76bd1297 Binary files /dev/null and b/html/images/16/page_white_code.png differ diff --git a/html/images/16/page_white_code_red.png b/html/images/16/page_white_code_red.png new file mode 100755 index 0000000000..87a6914507 Binary files /dev/null and b/html/images/16/page_white_code_red.png differ diff --git a/html/images/16/page_white_coldfusion.png b/html/images/16/page_white_coldfusion.png new file mode 100755 index 0000000000..c66011fb0f Binary files /dev/null and b/html/images/16/page_white_coldfusion.png differ diff --git a/html/images/16/page_white_compressed.png b/html/images/16/page_white_compressed.png new file mode 100755 index 0000000000..2b6b1007f3 Binary files /dev/null and b/html/images/16/page_white_compressed.png differ diff --git a/html/images/16/page_white_copy.png b/html/images/16/page_white_copy.png new file mode 100755 index 0000000000..a9f31a278e Binary files /dev/null and b/html/images/16/page_white_copy.png differ diff --git a/html/images/16/page_white_cplusplus.png b/html/images/16/page_white_cplusplus.png new file mode 100755 index 0000000000..a87cf847cb Binary files /dev/null and b/html/images/16/page_white_cplusplus.png differ diff --git a/html/images/16/page_white_csharp.png b/html/images/16/page_white_csharp.png new file mode 100755 index 0000000000..ffb8fc932f Binary files /dev/null and b/html/images/16/page_white_csharp.png differ diff --git a/html/images/16/page_white_cup.png b/html/images/16/page_white_cup.png new file mode 100755 index 0000000000..0a7d6f4a6f Binary files /dev/null and b/html/images/16/page_white_cup.png differ diff --git a/html/images/16/page_white_database.png b/html/images/16/page_white_database.png new file mode 100755 index 0000000000..bddba1f98c Binary files /dev/null and b/html/images/16/page_white_database.png differ diff --git a/html/images/16/page_white_delete.png b/html/images/16/page_white_delete.png new file mode 100755 index 0000000000..af1ecaf298 Binary files /dev/null and b/html/images/16/page_white_delete.png differ diff --git a/html/images/16/page_white_dvd.png b/html/images/16/page_white_dvd.png new file mode 100755 index 0000000000..4cc537af0b Binary files /dev/null and b/html/images/16/page_white_dvd.png differ diff --git a/html/images/16/page_white_edit.png b/html/images/16/page_white_edit.png new file mode 100755 index 0000000000..b93e77600d Binary files /dev/null and b/html/images/16/page_white_edit.png differ diff --git a/html/images/16/page_white_error.png b/html/images/16/page_white_error.png new file mode 100755 index 0000000000..9fc5a0a103 Binary files /dev/null and b/html/images/16/page_white_error.png differ diff --git a/html/images/16/page_white_excel.png b/html/images/16/page_white_excel.png new file mode 100755 index 0000000000..b977d7e52e Binary files /dev/null and b/html/images/16/page_white_excel.png differ diff --git a/html/images/16/page_white_find.png b/html/images/16/page_white_find.png new file mode 100755 index 0000000000..5818436370 Binary files /dev/null and b/html/images/16/page_white_find.png differ diff --git a/html/images/16/page_white_flash.png b/html/images/16/page_white_flash.png new file mode 100755 index 0000000000..5769120b1b Binary files /dev/null and b/html/images/16/page_white_flash.png differ diff --git a/html/images/16/page_white_freehand.png b/html/images/16/page_white_freehand.png new file mode 100755 index 0000000000..8d719df520 Binary files /dev/null and b/html/images/16/page_white_freehand.png differ diff --git a/html/images/16/page_white_gear.png b/html/images/16/page_white_gear.png new file mode 100755 index 0000000000..106f5aa361 Binary files /dev/null and b/html/images/16/page_white_gear.png differ diff --git a/html/images/16/page_white_get.png b/html/images/16/page_white_get.png new file mode 100755 index 0000000000..e4a1ecba1b Binary files /dev/null and b/html/images/16/page_white_get.png differ diff --git a/html/images/16/page_white_go.png b/html/images/16/page_white_go.png new file mode 100755 index 0000000000..7e62a924bc Binary files /dev/null and b/html/images/16/page_white_go.png differ diff --git a/html/images/16/page_white_h.png b/html/images/16/page_white_h.png new file mode 100755 index 0000000000..e902abb076 Binary files /dev/null and b/html/images/16/page_white_h.png differ diff --git a/html/images/16/page_white_horizontal.png b/html/images/16/page_white_horizontal.png new file mode 100755 index 0000000000..1d2d0a4987 Binary files /dev/null and b/html/images/16/page_white_horizontal.png differ diff --git a/html/images/16/page_white_key.png b/html/images/16/page_white_key.png new file mode 100755 index 0000000000..d616484522 Binary files /dev/null and b/html/images/16/page_white_key.png differ diff --git a/html/images/16/page_white_lightning.png b/html/images/16/page_white_lightning.png new file mode 100755 index 0000000000..7215d1e8b0 Binary files /dev/null and b/html/images/16/page_white_lightning.png differ diff --git a/html/images/16/page_white_link.png b/html/images/16/page_white_link.png new file mode 100755 index 0000000000..bf7bd1c9bf Binary files /dev/null and b/html/images/16/page_white_link.png differ diff --git a/html/images/16/page_white_magnify.png b/html/images/16/page_white_magnify.png new file mode 100755 index 0000000000..f6b74cc40f Binary files /dev/null and b/html/images/16/page_white_magnify.png differ diff --git a/html/images/16/page_white_medal.png b/html/images/16/page_white_medal.png new file mode 100755 index 0000000000..d3fffb6d98 Binary files /dev/null and b/html/images/16/page_white_medal.png differ diff --git a/html/images/16/page_white_office.png b/html/images/16/page_white_office.png new file mode 100755 index 0000000000..a65bcb3e1e Binary files /dev/null and b/html/images/16/page_white_office.png differ diff --git a/html/images/16/page_white_paint.png b/html/images/16/page_white_paint.png new file mode 100755 index 0000000000..23a37b891c Binary files /dev/null and b/html/images/16/page_white_paint.png differ diff --git a/html/images/16/page_white_paintbrush.png b/html/images/16/page_white_paintbrush.png new file mode 100755 index 0000000000..f907e44b33 Binary files /dev/null and b/html/images/16/page_white_paintbrush.png differ diff --git a/html/images/16/page_white_paste.png b/html/images/16/page_white_paste.png new file mode 100755 index 0000000000..5b2cbb3fd0 Binary files /dev/null and b/html/images/16/page_white_paste.png differ diff --git a/html/images/16/page_white_php.png b/html/images/16/page_white_php.png new file mode 100755 index 0000000000..7868a25945 Binary files /dev/null and b/html/images/16/page_white_php.png differ diff --git a/html/images/16/page_white_picture.png b/html/images/16/page_white_picture.png new file mode 100755 index 0000000000..134b669368 Binary files /dev/null and b/html/images/16/page_white_picture.png differ diff --git a/html/images/16/page_white_powerpoint.png b/html/images/16/page_white_powerpoint.png new file mode 100755 index 0000000000..c4eff0387d Binary files /dev/null and b/html/images/16/page_white_powerpoint.png differ diff --git a/html/images/16/page_white_put.png b/html/images/16/page_white_put.png new file mode 100755 index 0000000000..884ffd6f0a Binary files /dev/null and b/html/images/16/page_white_put.png differ diff --git a/html/images/16/page_white_ruby.png b/html/images/16/page_white_ruby.png new file mode 100755 index 0000000000..f59b7c4365 Binary files /dev/null and b/html/images/16/page_white_ruby.png differ diff --git a/html/images/16/page_white_stack.png b/html/images/16/page_white_stack.png new file mode 100755 index 0000000000..44084add79 Binary files /dev/null and b/html/images/16/page_white_stack.png differ diff --git a/html/images/16/page_white_star.png b/html/images/16/page_white_star.png new file mode 100755 index 0000000000..3a1441c9a1 Binary files /dev/null and b/html/images/16/page_white_star.png differ diff --git a/html/images/16/page_white_swoosh.png b/html/images/16/page_white_swoosh.png new file mode 100755 index 0000000000..e7708292ad Binary files /dev/null and b/html/images/16/page_white_swoosh.png differ diff --git a/html/images/16/page_white_text.png b/html/images/16/page_white_text.png new file mode 100755 index 0000000000..813f712f72 Binary files /dev/null and b/html/images/16/page_white_text.png differ diff --git a/html/images/16/page_white_text_width.png b/html/images/16/page_white_text_width.png new file mode 100755 index 0000000000..d9cf13256f Binary files /dev/null and b/html/images/16/page_white_text_width.png differ diff --git a/html/images/16/page_white_tux.png b/html/images/16/page_white_tux.png new file mode 100755 index 0000000000..52699bfee0 Binary files /dev/null and b/html/images/16/page_white_tux.png differ diff --git a/html/images/16/page_white_vector.png b/html/images/16/page_white_vector.png new file mode 100755 index 0000000000..4a05955b33 Binary files /dev/null and b/html/images/16/page_white_vector.png differ diff --git a/html/images/16/page_white_visualstudio.png b/html/images/16/page_white_visualstudio.png new file mode 100755 index 0000000000..a0a433dfbb Binary files /dev/null and b/html/images/16/page_white_visualstudio.png differ diff --git a/html/images/16/page_white_width.png b/html/images/16/page_white_width.png new file mode 100755 index 0000000000..1eb880947d Binary files /dev/null and b/html/images/16/page_white_width.png differ diff --git a/html/images/16/page_white_word.png b/html/images/16/page_white_word.png new file mode 100755 index 0000000000..ae8ecbf476 Binary files /dev/null and b/html/images/16/page_white_word.png differ diff --git a/html/images/16/page_white_world.png b/html/images/16/page_white_world.png new file mode 100755 index 0000000000..6ed2490ed1 Binary files /dev/null and b/html/images/16/page_white_world.png differ diff --git a/html/images/16/page_white_wrench.png b/html/images/16/page_white_wrench.png new file mode 100755 index 0000000000..fecadd08af Binary files /dev/null and b/html/images/16/page_white_wrench.png differ diff --git a/html/images/16/page_white_zip.png b/html/images/16/page_white_zip.png new file mode 100755 index 0000000000..fd4bbccdf1 Binary files /dev/null and b/html/images/16/page_white_zip.png differ diff --git a/html/images/16/page_word.png b/html/images/16/page_word.png new file mode 100755 index 0000000000..834cdfaf48 Binary files /dev/null and b/html/images/16/page_word.png differ diff --git a/html/images/16/page_world.png b/html/images/16/page_world.png new file mode 100755 index 0000000000..b8895ddecf Binary files /dev/null and b/html/images/16/page_world.png differ diff --git a/html/images/16/paintbrush.png b/html/images/16/paintbrush.png new file mode 100755 index 0000000000..a3ecf87784 Binary files /dev/null and b/html/images/16/paintbrush.png differ diff --git a/html/images/16/paintcan.png b/html/images/16/paintcan.png new file mode 100755 index 0000000000..f82a8865a7 Binary files /dev/null and b/html/images/16/paintcan.png differ diff --git a/html/images/16/palette.png b/html/images/16/palette.png new file mode 100755 index 0000000000..73c5b3f243 Binary files /dev/null and b/html/images/16/palette.png differ diff --git a/html/images/16/paste_plain.png b/html/images/16/paste_plain.png new file mode 100755 index 0000000000..c0490eb797 Binary files /dev/null and b/html/images/16/paste_plain.png differ diff --git a/html/images/16/paste_word.png b/html/images/16/paste_word.png new file mode 100755 index 0000000000..f6b87f82cb Binary files /dev/null and b/html/images/16/paste_word.png differ diff --git a/html/images/16/pencil.png b/html/images/16/pencil.png new file mode 100755 index 0000000000..0bfecd50ee Binary files /dev/null and b/html/images/16/pencil.png differ diff --git a/html/images/16/pencil_add.png b/html/images/16/pencil_add.png new file mode 100755 index 0000000000..902bbe61b3 Binary files /dev/null and b/html/images/16/pencil_add.png differ diff --git a/html/images/16/pencil_delete.png b/html/images/16/pencil_delete.png new file mode 100755 index 0000000000..d8944e6ead Binary files /dev/null and b/html/images/16/pencil_delete.png differ diff --git a/html/images/16/pencil_go.png b/html/images/16/pencil_go.png new file mode 100755 index 0000000000..937bded9d8 Binary files /dev/null and b/html/images/16/pencil_go.png differ diff --git a/html/images/16/phone.png b/html/images/16/phone.png new file mode 100755 index 0000000000..c39f162f85 Binary files /dev/null and b/html/images/16/phone.png differ diff --git a/html/images/16/phone_add.png b/html/images/16/phone_add.png new file mode 100755 index 0000000000..d3555e024e Binary files /dev/null and b/html/images/16/phone_add.png differ diff --git a/html/images/16/phone_delete.png b/html/images/16/phone_delete.png new file mode 100755 index 0000000000..bbe4f8aba2 Binary files /dev/null and b/html/images/16/phone_delete.png differ diff --git a/html/images/16/phone_sound.png b/html/images/16/phone_sound.png new file mode 100755 index 0000000000..7fdf1c58c0 Binary files /dev/null and b/html/images/16/phone_sound.png differ diff --git a/html/images/16/photo.png b/html/images/16/photo.png new file mode 100755 index 0000000000..6c2aaaaaf3 Binary files /dev/null and b/html/images/16/photo.png differ diff --git a/html/images/16/photo_add.png b/html/images/16/photo_add.png new file mode 100755 index 0000000000..63cc355cbb Binary files /dev/null and b/html/images/16/photo_add.png differ diff --git a/html/images/16/photo_delete.png b/html/images/16/photo_delete.png new file mode 100755 index 0000000000..18b67df43a Binary files /dev/null and b/html/images/16/photo_delete.png differ diff --git a/html/images/16/photo_link.png b/html/images/16/photo_link.png new file mode 100755 index 0000000000..e6bb35fbf8 Binary files /dev/null and b/html/images/16/photo_link.png differ diff --git a/html/images/16/photos.png b/html/images/16/photos.png new file mode 100755 index 0000000000..8836fe6c07 Binary files /dev/null and b/html/images/16/photos.png differ diff --git a/html/images/16/picture.png b/html/images/16/picture.png new file mode 100755 index 0000000000..4a158fef7e Binary files /dev/null and b/html/images/16/picture.png differ diff --git a/html/images/16/picture_add.png b/html/images/16/picture_add.png new file mode 100755 index 0000000000..d6d3f85644 Binary files /dev/null and b/html/images/16/picture_add.png differ diff --git a/html/images/16/picture_delete.png b/html/images/16/picture_delete.png new file mode 100755 index 0000000000..cca9f535d9 Binary files /dev/null and b/html/images/16/picture_delete.png differ diff --git a/html/images/16/picture_edit.png b/html/images/16/picture_edit.png new file mode 100755 index 0000000000..9a70c34998 Binary files /dev/null and b/html/images/16/picture_edit.png differ diff --git a/html/images/16/picture_empty.png b/html/images/16/picture_empty.png new file mode 100755 index 0000000000..abd2b9bb48 Binary files /dev/null and b/html/images/16/picture_empty.png differ diff --git a/html/images/16/picture_error.png b/html/images/16/picture_error.png new file mode 100755 index 0000000000..d41d90d64f Binary files /dev/null and b/html/images/16/picture_error.png differ diff --git a/html/images/16/picture_go.png b/html/images/16/picture_go.png new file mode 100755 index 0000000000..27c63c5afe Binary files /dev/null and b/html/images/16/picture_go.png differ diff --git a/html/images/16/picture_key.png b/html/images/16/picture_key.png new file mode 100755 index 0000000000..667086c0da Binary files /dev/null and b/html/images/16/picture_key.png differ diff --git a/html/images/16/picture_link.png b/html/images/16/picture_link.png new file mode 100755 index 0000000000..42dca7440b Binary files /dev/null and b/html/images/16/picture_link.png differ diff --git a/html/images/16/picture_save.png b/html/images/16/picture_save.png new file mode 100755 index 0000000000..777fb5d2e6 Binary files /dev/null and b/html/images/16/picture_save.png differ diff --git a/html/images/16/pictures.png b/html/images/16/pictures.png new file mode 100755 index 0000000000..d9591c13f6 Binary files /dev/null and b/html/images/16/pictures.png differ diff --git a/html/images/16/pilcrow.png b/html/images/16/pilcrow.png new file mode 100755 index 0000000000..95704fbab3 Binary files /dev/null and b/html/images/16/pilcrow.png differ diff --git a/html/images/16/pill.png b/html/images/16/pill.png new file mode 100755 index 0000000000..f2bdef6be8 Binary files /dev/null and b/html/images/16/pill.png differ diff --git a/html/images/16/pill_add.png b/html/images/16/pill_add.png new file mode 100755 index 0000000000..ac9c2df6a4 Binary files /dev/null and b/html/images/16/pill_add.png differ diff --git a/html/images/16/pill_delete.png b/html/images/16/pill_delete.png new file mode 100755 index 0000000000..c61592e8d8 Binary files /dev/null and b/html/images/16/pill_delete.png differ diff --git a/html/images/16/pill_go.png b/html/images/16/pill_go.png new file mode 100755 index 0000000000..e5c07d415d Binary files /dev/null and b/html/images/16/pill_go.png differ diff --git a/html/images/16/plugin.png b/html/images/16/plugin.png new file mode 100755 index 0000000000..6187b15aec Binary files /dev/null and b/html/images/16/plugin.png differ diff --git a/html/images/16/plugin_add.png b/html/images/16/plugin_add.png new file mode 100755 index 0000000000..ae43690ece Binary files /dev/null and b/html/images/16/plugin_add.png differ diff --git a/html/images/16/plugin_delete.png b/html/images/16/plugin_delete.png new file mode 100755 index 0000000000..d9c3376d45 Binary files /dev/null and b/html/images/16/plugin_delete.png differ diff --git a/html/images/16/plugin_disabled.png b/html/images/16/plugin_disabled.png new file mode 100755 index 0000000000..f4f6be59cb Binary files /dev/null and b/html/images/16/plugin_disabled.png differ diff --git a/html/images/16/plugin_edit.png b/html/images/16/plugin_edit.png new file mode 100755 index 0000000000..b6cb0ecf7e Binary files /dev/null and b/html/images/16/plugin_edit.png differ diff --git a/html/images/16/plugin_error.png b/html/images/16/plugin_error.png new file mode 100755 index 0000000000..cff65d7fec Binary files /dev/null and b/html/images/16/plugin_error.png differ diff --git a/html/images/16/plugin_go.png b/html/images/16/plugin_go.png new file mode 100755 index 0000000000..41da9913dc Binary files /dev/null and b/html/images/16/plugin_go.png differ diff --git a/html/images/16/plugin_link.png b/html/images/16/plugin_link.png new file mode 100755 index 0000000000..445c18868e Binary files /dev/null and b/html/images/16/plugin_link.png differ diff --git a/html/images/16/printer.png b/html/images/16/printer.png new file mode 100755 index 0000000000..a350d18715 Binary files /dev/null and b/html/images/16/printer.png differ diff --git a/html/images/16/printer_add.png b/html/images/16/printer_add.png new file mode 100755 index 0000000000..d228d0580d Binary files /dev/null and b/html/images/16/printer_add.png differ diff --git a/html/images/16/printer_delete.png b/html/images/16/printer_delete.png new file mode 100755 index 0000000000..1d8605f2f7 Binary files /dev/null and b/html/images/16/printer_delete.png differ diff --git a/html/images/16/printer_empty.png b/html/images/16/printer_empty.png new file mode 100755 index 0000000000..94e8c1618c Binary files /dev/null and b/html/images/16/printer_empty.png differ diff --git a/html/images/16/printer_error.png b/html/images/16/printer_error.png new file mode 100755 index 0000000000..279ebb0e53 Binary files /dev/null and b/html/images/16/printer_error.png differ diff --git a/html/images/16/rainbow.png b/html/images/16/rainbow.png new file mode 100755 index 0000000000..5ede989a4b Binary files /dev/null and b/html/images/16/rainbow.png differ diff --git a/html/images/16/report.png b/html/images/16/report.png new file mode 100755 index 0000000000..779ad58efc Binary files /dev/null and b/html/images/16/report.png differ diff --git a/html/images/16/report_add.png b/html/images/16/report_add.png new file mode 100755 index 0000000000..d5eac9bccd Binary files /dev/null and b/html/images/16/report_add.png differ diff --git a/html/images/16/report_delete.png b/html/images/16/report_delete.png new file mode 100755 index 0000000000..dcce0b64da Binary files /dev/null and b/html/images/16/report_delete.png differ diff --git a/html/images/16/report_disk.png b/html/images/16/report_disk.png new file mode 100755 index 0000000000..1c856cd615 Binary files /dev/null and b/html/images/16/report_disk.png differ diff --git a/html/images/16/report_edit.png b/html/images/16/report_edit.png new file mode 100755 index 0000000000..c61a6d8477 Binary files /dev/null and b/html/images/16/report_edit.png differ diff --git a/html/images/16/report_go.png b/html/images/16/report_go.png new file mode 100755 index 0000000000..f35a97938c Binary files /dev/null and b/html/images/16/report_go.png differ diff --git a/html/images/16/report_key.png b/html/images/16/report_key.png new file mode 100755 index 0000000000..90b758e8fa Binary files /dev/null and b/html/images/16/report_key.png differ diff --git a/html/images/16/report_link.png b/html/images/16/report_link.png new file mode 100755 index 0000000000..23f2611e99 Binary files /dev/null and b/html/images/16/report_link.png differ diff --git a/html/images/16/report_magnify.png b/html/images/16/report_magnify.png new file mode 100755 index 0000000000..aeaa889534 Binary files /dev/null and b/html/images/16/report_magnify.png differ diff --git a/html/images/16/report_picture.png b/html/images/16/report_picture.png new file mode 100755 index 0000000000..3a9a7e5eb9 Binary files /dev/null and b/html/images/16/report_picture.png differ diff --git a/html/images/16/report_user.png b/html/images/16/report_user.png new file mode 100755 index 0000000000..7766edd745 Binary files /dev/null and b/html/images/16/report_user.png differ diff --git a/html/images/16/report_word.png b/html/images/16/report_word.png new file mode 100755 index 0000000000..9951342485 Binary files /dev/null and b/html/images/16/report_word.png differ diff --git a/html/images/16/resultset_first.png b/html/images/16/resultset_first.png new file mode 100755 index 0000000000..b03eaf8b54 Binary files /dev/null and b/html/images/16/resultset_first.png differ diff --git a/html/images/16/resultset_last.png b/html/images/16/resultset_last.png new file mode 100755 index 0000000000..8ec8947847 Binary files /dev/null and b/html/images/16/resultset_last.png differ diff --git a/html/images/16/resultset_next.png b/html/images/16/resultset_next.png new file mode 100755 index 0000000000..e252606d3e Binary files /dev/null and b/html/images/16/resultset_next.png differ diff --git a/html/images/16/resultset_previous.png b/html/images/16/resultset_previous.png new file mode 100755 index 0000000000..18f9cc1094 Binary files /dev/null and b/html/images/16/resultset_previous.png differ diff --git a/html/images/16/rosette.png b/html/images/16/rosette.png new file mode 100755 index 0000000000..f233bc7705 Binary files /dev/null and b/html/images/16/rosette.png differ diff --git a/html/images/16/rss.png b/html/images/16/rss.png new file mode 100755 index 0000000000..1dc6ff30ba Binary files /dev/null and b/html/images/16/rss.png differ diff --git a/html/images/16/rss_add.png b/html/images/16/rss_add.png new file mode 100755 index 0000000000..b590beb738 Binary files /dev/null and b/html/images/16/rss_add.png differ diff --git a/html/images/16/rss_delete.png b/html/images/16/rss_delete.png new file mode 100755 index 0000000000..9deb738ded Binary files /dev/null and b/html/images/16/rss_delete.png differ diff --git a/html/images/16/rss_go.png b/html/images/16/rss_go.png new file mode 100755 index 0000000000..43a86bff65 Binary files /dev/null and b/html/images/16/rss_go.png differ diff --git a/html/images/16/rss_valid.png b/html/images/16/rss_valid.png new file mode 100755 index 0000000000..a6d0b0e872 Binary files /dev/null and b/html/images/16/rss_valid.png differ diff --git a/html/images/16/ruby.png b/html/images/16/ruby.png new file mode 100755 index 0000000000..f763a16880 Binary files /dev/null and b/html/images/16/ruby.png differ diff --git a/html/images/16/ruby_add.png b/html/images/16/ruby_add.png new file mode 100755 index 0000000000..a2cd648f67 Binary files /dev/null and b/html/images/16/ruby_add.png differ diff --git a/html/images/16/ruby_delete.png b/html/images/16/ruby_delete.png new file mode 100755 index 0000000000..30022630d8 Binary files /dev/null and b/html/images/16/ruby_delete.png differ diff --git a/html/images/16/ruby_gear.png b/html/images/16/ruby_gear.png new file mode 100755 index 0000000000..4a10590b4c Binary files /dev/null and b/html/images/16/ruby_gear.png differ diff --git a/html/images/16/ruby_get.png b/html/images/16/ruby_get.png new file mode 100755 index 0000000000..f5203c7e94 Binary files /dev/null and b/html/images/16/ruby_get.png differ diff --git a/html/images/16/ruby_go.png b/html/images/16/ruby_go.png new file mode 100755 index 0000000000..d8d276e3cd Binary files /dev/null and b/html/images/16/ruby_go.png differ diff --git a/html/images/16/ruby_key.png b/html/images/16/ruby_key.png new file mode 100755 index 0000000000..451cfebe27 Binary files /dev/null and b/html/images/16/ruby_key.png differ diff --git a/html/images/16/ruby_link.png b/html/images/16/ruby_link.png new file mode 100755 index 0000000000..bf4be526fb Binary files /dev/null and b/html/images/16/ruby_link.png differ diff --git a/html/images/16/ruby_put.png b/html/images/16/ruby_put.png new file mode 100755 index 0000000000..e026323c25 Binary files /dev/null and b/html/images/16/ruby_put.png differ diff --git a/html/images/16/script.png b/html/images/16/script.png new file mode 100755 index 0000000000..0f9ed4d483 Binary files /dev/null and b/html/images/16/script.png differ diff --git a/html/images/16/script_add.png b/html/images/16/script_add.png new file mode 100755 index 0000000000..d650552d96 Binary files /dev/null and b/html/images/16/script_add.png differ diff --git a/html/images/16/script_code.png b/html/images/16/script_code.png new file mode 100755 index 0000000000..63fe6ceff5 Binary files /dev/null and b/html/images/16/script_code.png differ diff --git a/html/images/16/script_code_red.png b/html/images/16/script_code_red.png new file mode 100755 index 0000000000..8fcf0f09ae Binary files /dev/null and b/html/images/16/script_code_red.png differ diff --git a/html/images/16/script_delete.png b/html/images/16/script_delete.png new file mode 100755 index 0000000000..e6500ced7b Binary files /dev/null and b/html/images/16/script_delete.png differ diff --git a/html/images/16/script_edit.png b/html/images/16/script_edit.png new file mode 100755 index 0000000000..b4d31ce282 Binary files /dev/null and b/html/images/16/script_edit.png differ diff --git a/html/images/16/script_error.png b/html/images/16/script_error.png new file mode 100755 index 0000000000..04919548e6 Binary files /dev/null and b/html/images/16/script_error.png differ diff --git a/html/images/16/script_gear.png b/html/images/16/script_gear.png new file mode 100755 index 0000000000..56fcf84a85 Binary files /dev/null and b/html/images/16/script_gear.png differ diff --git a/html/images/16/script_go.png b/html/images/16/script_go.png new file mode 100755 index 0000000000..8e154e2313 Binary files /dev/null and b/html/images/16/script_go.png differ diff --git a/html/images/16/script_key.png b/html/images/16/script_key.png new file mode 100755 index 0000000000..49bb24d71d Binary files /dev/null and b/html/images/16/script_key.png differ diff --git a/html/images/16/script_lightning.png b/html/images/16/script_lightning.png new file mode 100755 index 0000000000..b3fa18ce29 Binary files /dev/null and b/html/images/16/script_lightning.png differ diff --git a/html/images/16/script_link.png b/html/images/16/script_link.png new file mode 100755 index 0000000000..bdeb9852b2 Binary files /dev/null and b/html/images/16/script_link.png differ diff --git a/html/images/16/script_palette.png b/html/images/16/script_palette.png new file mode 100755 index 0000000000..6d46962dcf Binary files /dev/null and b/html/images/16/script_palette.png differ diff --git a/html/images/16/script_save.png b/html/images/16/script_save.png new file mode 100755 index 0000000000..36216d8276 Binary files /dev/null and b/html/images/16/script_save.png differ diff --git a/html/images/16/server.png b/html/images/16/server.png new file mode 100755 index 0000000000..720a237c73 Binary files /dev/null and b/html/images/16/server.png differ diff --git a/html/images/16/server_add.png b/html/images/16/server_add.png new file mode 100755 index 0000000000..3f10a3a9f4 Binary files /dev/null and b/html/images/16/server_add.png differ diff --git a/html/images/16/server_chart.png b/html/images/16/server_chart.png new file mode 100755 index 0000000000..1128d3f338 Binary files /dev/null and b/html/images/16/server_chart.png differ diff --git a/html/images/16/server_compressed.png b/html/images/16/server_compressed.png new file mode 100755 index 0000000000..bf49fad9de Binary files /dev/null and b/html/images/16/server_compressed.png differ diff --git a/html/images/16/server_connect.png b/html/images/16/server_connect.png new file mode 100755 index 0000000000..49b269145a Binary files /dev/null and b/html/images/16/server_connect.png differ diff --git a/html/images/16/server_database.png b/html/images/16/server_database.png new file mode 100755 index 0000000000..b24e826c70 Binary files /dev/null and b/html/images/16/server_database.png differ diff --git a/html/images/16/server_delete.png b/html/images/16/server_delete.png new file mode 100755 index 0000000000..61e740fe18 Binary files /dev/null and b/html/images/16/server_delete.png differ diff --git a/html/images/16/server_edit.png b/html/images/16/server_edit.png new file mode 100755 index 0000000000..dc76253713 Binary files /dev/null and b/html/images/16/server_edit.png differ diff --git a/html/images/16/server_error.png b/html/images/16/server_error.png new file mode 100755 index 0000000000..f640256399 Binary files /dev/null and b/html/images/16/server_error.png differ diff --git a/html/images/16/server_go.png b/html/images/16/server_go.png new file mode 100755 index 0000000000..540c8e2689 Binary files /dev/null and b/html/images/16/server_go.png differ diff --git a/html/images/16/server_key.png b/html/images/16/server_key.png new file mode 100755 index 0000000000..ecd517425f Binary files /dev/null and b/html/images/16/server_key.png differ diff --git a/html/images/16/server_lightning.png b/html/images/16/server_lightning.png new file mode 100755 index 0000000000..b0f4e46cdf Binary files /dev/null and b/html/images/16/server_lightning.png differ diff --git a/html/images/16/server_link.png b/html/images/16/server_link.png new file mode 100755 index 0000000000..e8821dfd88 Binary files /dev/null and b/html/images/16/server_link.png differ diff --git a/html/images/16/server_uncompressed.png b/html/images/16/server_uncompressed.png new file mode 100755 index 0000000000..86e8325b9c Binary files /dev/null and b/html/images/16/server_uncompressed.png differ diff --git a/html/images/16/shading.png b/html/images/16/shading.png new file mode 100755 index 0000000000..09275f9c09 Binary files /dev/null and b/html/images/16/shading.png differ diff --git a/html/images/16/shape_align_bottom.png b/html/images/16/shape_align_bottom.png new file mode 100755 index 0000000000..55d2694008 Binary files /dev/null and b/html/images/16/shape_align_bottom.png differ diff --git a/html/images/16/shape_align_center.png b/html/images/16/shape_align_center.png new file mode 100755 index 0000000000..efe9a98e5f Binary files /dev/null and b/html/images/16/shape_align_center.png differ diff --git a/html/images/16/shape_align_left.png b/html/images/16/shape_align_left.png new file mode 100755 index 0000000000..aaedc41b5f Binary files /dev/null and b/html/images/16/shape_align_left.png differ diff --git a/html/images/16/shape_align_middle.png b/html/images/16/shape_align_middle.png new file mode 100755 index 0000000000..d350dd88fb Binary files /dev/null and b/html/images/16/shape_align_middle.png differ diff --git a/html/images/16/shape_align_right.png b/html/images/16/shape_align_right.png new file mode 100755 index 0000000000..ff556b6a91 Binary files /dev/null and b/html/images/16/shape_align_right.png differ diff --git a/html/images/16/shape_align_top.png b/html/images/16/shape_align_top.png new file mode 100755 index 0000000000..1181b43fb2 Binary files /dev/null and b/html/images/16/shape_align_top.png differ diff --git a/html/images/16/shape_flip_horizontal.png b/html/images/16/shape_flip_horizontal.png new file mode 100755 index 0000000000..8667c81f8b Binary files /dev/null and b/html/images/16/shape_flip_horizontal.png differ diff --git a/html/images/16/shape_flip_vertical.png b/html/images/16/shape_flip_vertical.png new file mode 100755 index 0000000000..0bd66d19ba Binary files /dev/null and b/html/images/16/shape_flip_vertical.png differ diff --git a/html/images/16/shape_group.png b/html/images/16/shape_group.png new file mode 100755 index 0000000000..bb2ff516d3 Binary files /dev/null and b/html/images/16/shape_group.png differ diff --git a/html/images/16/shape_handles.png b/html/images/16/shape_handles.png new file mode 100755 index 0000000000..ce27fe3a03 Binary files /dev/null and b/html/images/16/shape_handles.png differ diff --git a/html/images/16/shape_move_back.png b/html/images/16/shape_move_back.png new file mode 100755 index 0000000000..a216ffd36c Binary files /dev/null and b/html/images/16/shape_move_back.png differ diff --git a/html/images/16/shape_move_backwards.png b/html/images/16/shape_move_backwards.png new file mode 100755 index 0000000000..ee3f9b27ac Binary files /dev/null and b/html/images/16/shape_move_backwards.png differ diff --git a/html/images/16/shape_move_forwards.png b/html/images/16/shape_move_forwards.png new file mode 100755 index 0000000000..cfe44932c3 Binary files /dev/null and b/html/images/16/shape_move_forwards.png differ diff --git a/html/images/16/shape_move_front.png b/html/images/16/shape_move_front.png new file mode 100755 index 0000000000..b4a4e3b785 Binary files /dev/null and b/html/images/16/shape_move_front.png differ diff --git a/html/images/16/shape_rotate_anticlockwise.png b/html/images/16/shape_rotate_anticlockwise.png new file mode 100755 index 0000000000..07a30206c2 Binary files /dev/null and b/html/images/16/shape_rotate_anticlockwise.png differ diff --git a/html/images/16/shape_rotate_clockwise.png b/html/images/16/shape_rotate_clockwise.png new file mode 100755 index 0000000000..b99db7d701 Binary files /dev/null and b/html/images/16/shape_rotate_clockwise.png differ diff --git a/html/images/16/shape_square.png b/html/images/16/shape_square.png new file mode 100755 index 0000000000..33af046098 Binary files /dev/null and b/html/images/16/shape_square.png differ diff --git a/html/images/16/shape_square_add.png b/html/images/16/shape_square_add.png new file mode 100755 index 0000000000..31edfce597 Binary files /dev/null and b/html/images/16/shape_square_add.png differ diff --git a/html/images/16/shape_square_delete.png b/html/images/16/shape_square_delete.png new file mode 100755 index 0000000000..ede912de03 Binary files /dev/null and b/html/images/16/shape_square_delete.png differ diff --git a/html/images/16/shape_square_edit.png b/html/images/16/shape_square_edit.png new file mode 100755 index 0000000000..d28dc6b1a4 Binary files /dev/null and b/html/images/16/shape_square_edit.png differ diff --git a/html/images/16/shape_square_error.png b/html/images/16/shape_square_error.png new file mode 100755 index 0000000000..0d0dcfa9a6 Binary files /dev/null and b/html/images/16/shape_square_error.png differ diff --git a/html/images/16/shape_square_go.png b/html/images/16/shape_square_go.png new file mode 100755 index 0000000000..5a2ad90191 Binary files /dev/null and b/html/images/16/shape_square_go.png differ diff --git a/html/images/16/shape_square_key.png b/html/images/16/shape_square_key.png new file mode 100755 index 0000000000..c34b982a07 Binary files /dev/null and b/html/images/16/shape_square_key.png differ diff --git a/html/images/16/shape_square_link.png b/html/images/16/shape_square_link.png new file mode 100755 index 0000000000..b885fcc606 Binary files /dev/null and b/html/images/16/shape_square_link.png differ diff --git a/html/images/16/shape_ungroup.png b/html/images/16/shape_ungroup.png new file mode 100755 index 0000000000..3a6f369a50 Binary files /dev/null and b/html/images/16/shape_ungroup.png differ diff --git a/html/images/16/shield.png b/html/images/16/shield.png new file mode 100755 index 0000000000..3cb4e25789 Binary files /dev/null and b/html/images/16/shield.png differ diff --git a/html/images/16/shield_add.png b/html/images/16/shield_add.png new file mode 100755 index 0000000000..e20a1b4ab6 Binary files /dev/null and b/html/images/16/shield_add.png differ diff --git a/html/images/16/shield_delete.png b/html/images/16/shield_delete.png new file mode 100755 index 0000000000..22823a70d9 Binary files /dev/null and b/html/images/16/shield_delete.png differ diff --git a/html/images/16/shield_go.png b/html/images/16/shield_go.png new file mode 100755 index 0000000000..e9bd852247 Binary files /dev/null and b/html/images/16/shield_go.png differ diff --git a/html/images/16/sitemap.png b/html/images/16/sitemap.png new file mode 100755 index 0000000000..ca779f3237 Binary files /dev/null and b/html/images/16/sitemap.png differ diff --git a/html/images/16/sitemap_color.png b/html/images/16/sitemap_color.png new file mode 100755 index 0000000000..c64582bcd4 Binary files /dev/null and b/html/images/16/sitemap_color.png differ diff --git a/html/images/16/sound.png b/html/images/16/sound.png new file mode 100755 index 0000000000..6056d234a9 Binary files /dev/null and b/html/images/16/sound.png differ diff --git a/html/images/16/sound_add.png b/html/images/16/sound_add.png new file mode 100755 index 0000000000..965c503c60 Binary files /dev/null and b/html/images/16/sound_add.png differ diff --git a/html/images/16/sound_delete.png b/html/images/16/sound_delete.png new file mode 100755 index 0000000000..ab9577aa13 Binary files /dev/null and b/html/images/16/sound_delete.png differ diff --git a/html/images/16/sound_low.png b/html/images/16/sound_low.png new file mode 100755 index 0000000000..4d918633fb Binary files /dev/null and b/html/images/16/sound_low.png differ diff --git a/html/images/16/sound_mute.png b/html/images/16/sound_mute.png new file mode 100755 index 0000000000..b652d2a71f Binary files /dev/null and b/html/images/16/sound_mute.png differ diff --git a/html/images/16/sound_none.png b/html/images/16/sound_none.png new file mode 100755 index 0000000000..b497ebd54a Binary files /dev/null and b/html/images/16/sound_none.png differ diff --git a/html/images/16/spellcheck.png b/html/images/16/spellcheck.png new file mode 100755 index 0000000000..ebc632d9bc Binary files /dev/null and b/html/images/16/spellcheck.png differ diff --git a/html/images/16/sport_8ball.png b/html/images/16/sport_8ball.png new file mode 100755 index 0000000000..4f627b7689 Binary files /dev/null and b/html/images/16/sport_8ball.png differ diff --git a/html/images/16/sport_basketball.png b/html/images/16/sport_basketball.png new file mode 100755 index 0000000000..f7a000b9ae Binary files /dev/null and b/html/images/16/sport_basketball.png differ diff --git a/html/images/16/sport_football.png b/html/images/16/sport_football.png new file mode 100755 index 0000000000..199f0f7f1c Binary files /dev/null and b/html/images/16/sport_football.png differ diff --git a/html/images/16/sport_golf.png b/html/images/16/sport_golf.png new file mode 100755 index 0000000000..e21fa44c5d Binary files /dev/null and b/html/images/16/sport_golf.png differ diff --git a/html/images/16/sport_raquet.png b/html/images/16/sport_raquet.png new file mode 100755 index 0000000000..f5e0f0c2ce Binary files /dev/null and b/html/images/16/sport_raquet.png differ diff --git a/html/images/16/sport_shuttlecock.png b/html/images/16/sport_shuttlecock.png new file mode 100755 index 0000000000..917287fa0b Binary files /dev/null and b/html/images/16/sport_shuttlecock.png differ diff --git a/html/images/16/sport_soccer.png b/html/images/16/sport_soccer.png new file mode 100755 index 0000000000..3eb1828b16 Binary files /dev/null and b/html/images/16/sport_soccer.png differ diff --git a/html/images/16/sport_tennis.png b/html/images/16/sport_tennis.png new file mode 100755 index 0000000000..e88a6efa1d Binary files /dev/null and b/html/images/16/sport_tennis.png differ diff --git a/html/images/16/star.png b/html/images/16/star.png new file mode 100755 index 0000000000..b88c857895 Binary files /dev/null and b/html/images/16/star.png differ diff --git a/html/images/16/status_away.png b/html/images/16/status_away.png new file mode 100755 index 0000000000..70bcbccaae Binary files /dev/null and b/html/images/16/status_away.png differ diff --git a/html/images/16/status_busy.png b/html/images/16/status_busy.png new file mode 100755 index 0000000000..987c806fff Binary files /dev/null and b/html/images/16/status_busy.png differ diff --git a/html/images/16/status_offline.png b/html/images/16/status_offline.png new file mode 100755 index 0000000000..a88261a65e Binary files /dev/null and b/html/images/16/status_offline.png differ diff --git a/html/images/16/status_online.png b/html/images/16/status_online.png new file mode 100755 index 0000000000..947bd4b62c Binary files /dev/null and b/html/images/16/status_online.png differ diff --git a/html/images/16/stop.png b/html/images/16/stop.png new file mode 100755 index 0000000000..0cfd585963 Binary files /dev/null and b/html/images/16/stop.png differ diff --git a/html/images/16/style.png b/html/images/16/style.png new file mode 100755 index 0000000000..81e41de7d3 Binary files /dev/null and b/html/images/16/style.png differ diff --git a/html/images/16/style_add.png b/html/images/16/style_add.png new file mode 100755 index 0000000000..e0369c6be9 Binary files /dev/null and b/html/images/16/style_add.png differ diff --git a/html/images/16/style_delete.png b/html/images/16/style_delete.png new file mode 100755 index 0000000000..640f187ece Binary files /dev/null and b/html/images/16/style_delete.png differ diff --git a/html/images/16/style_edit.png b/html/images/16/style_edit.png new file mode 100755 index 0000000000..25bb5b677f Binary files /dev/null and b/html/images/16/style_edit.png differ diff --git a/html/images/16/style_go.png b/html/images/16/style_go.png new file mode 100755 index 0000000000..25d6181ac9 Binary files /dev/null and b/html/images/16/style_go.png differ diff --git a/html/images/16/sum.png b/html/images/16/sum.png new file mode 100755 index 0000000000..fd7b32e43b Binary files /dev/null and b/html/images/16/sum.png differ diff --git a/html/images/16/tab.png b/html/images/16/tab.png new file mode 100755 index 0000000000..3d8207fd74 Binary files /dev/null and b/html/images/16/tab.png differ diff --git a/html/images/16/tab_add.png b/html/images/16/tab_add.png new file mode 100755 index 0000000000..d3b99364a0 Binary files /dev/null and b/html/images/16/tab_add.png differ diff --git a/html/images/16/tab_delete.png b/html/images/16/tab_delete.png new file mode 100755 index 0000000000..100da2f1ad Binary files /dev/null and b/html/images/16/tab_delete.png differ diff --git a/html/images/16/tab_edit.png b/html/images/16/tab_edit.png new file mode 100755 index 0000000000..4c09c0fd70 Binary files /dev/null and b/html/images/16/tab_edit.png differ diff --git a/html/images/16/tab_go.png b/html/images/16/tab_go.png new file mode 100755 index 0000000000..844ce04bd6 Binary files /dev/null and b/html/images/16/tab_go.png differ diff --git a/html/images/16/table.png b/html/images/16/table.png new file mode 100755 index 0000000000..abcd93689a Binary files /dev/null and b/html/images/16/table.png differ diff --git a/html/images/16/table_add.png b/html/images/16/table_add.png new file mode 100755 index 0000000000..2a3e5c4df1 Binary files /dev/null and b/html/images/16/table_add.png differ diff --git a/html/images/16/table_delete.png b/html/images/16/table_delete.png new file mode 100755 index 0000000000..b85916d921 Binary files /dev/null and b/html/images/16/table_delete.png differ diff --git a/html/images/16/table_edit.png b/html/images/16/table_edit.png new file mode 100755 index 0000000000..bfcb0249af Binary files /dev/null and b/html/images/16/table_edit.png differ diff --git a/html/images/16/table_error.png b/html/images/16/table_error.png new file mode 100755 index 0000000000..589e92b554 Binary files /dev/null and b/html/images/16/table_error.png differ diff --git a/html/images/16/table_gear.png b/html/images/16/table_gear.png new file mode 100755 index 0000000000..cfc2702acd Binary files /dev/null and b/html/images/16/table_gear.png differ diff --git a/html/images/16/table_go.png b/html/images/16/table_go.png new file mode 100755 index 0000000000..0528dfa24e Binary files /dev/null and b/html/images/16/table_go.png differ diff --git a/html/images/16/table_key.png b/html/images/16/table_key.png new file mode 100755 index 0000000000..34e23e24e8 Binary files /dev/null and b/html/images/16/table_key.png differ diff --git a/html/images/16/table_lightning.png b/html/images/16/table_lightning.png new file mode 100755 index 0000000000..612612b5e4 Binary files /dev/null and b/html/images/16/table_lightning.png differ diff --git a/html/images/16/table_link.png b/html/images/16/table_link.png new file mode 100755 index 0000000000..decac8a62e Binary files /dev/null and b/html/images/16/table_link.png differ diff --git a/html/images/16/table_multiple.png b/html/images/16/table_multiple.png new file mode 100755 index 0000000000..d76448e34a Binary files /dev/null and b/html/images/16/table_multiple.png differ diff --git a/html/images/16/table_refresh.png b/html/images/16/table_refresh.png new file mode 100755 index 0000000000..ab92010c2c Binary files /dev/null and b/html/images/16/table_refresh.png differ diff --git a/html/images/16/table_relationship.png b/html/images/16/table_relationship.png new file mode 100755 index 0000000000..28b8505c0e Binary files /dev/null and b/html/images/16/table_relationship.png differ diff --git a/html/images/16/table_row_delete.png b/html/images/16/table_row_delete.png new file mode 100755 index 0000000000..54c69691ed Binary files /dev/null and b/html/images/16/table_row_delete.png differ diff --git a/html/images/16/table_row_insert.png b/html/images/16/table_row_insert.png new file mode 100755 index 0000000000..ff5925efd4 Binary files /dev/null and b/html/images/16/table_row_insert.png differ diff --git a/html/images/16/table_save.png b/html/images/16/table_save.png new file mode 100755 index 0000000000..25b74d18f7 Binary files /dev/null and b/html/images/16/table_save.png differ diff --git a/html/images/16/table_sort.png b/html/images/16/table_sort.png new file mode 100755 index 0000000000..ed6785a6a3 Binary files /dev/null and b/html/images/16/table_sort.png differ diff --git a/html/images/16/tag.png b/html/images/16/tag.png new file mode 100755 index 0000000000..e093032a77 Binary files /dev/null and b/html/images/16/tag.png differ diff --git a/html/images/16/tag_blue.png b/html/images/16/tag_blue.png new file mode 100755 index 0000000000..9757fc6ed6 Binary files /dev/null and b/html/images/16/tag_blue.png differ diff --git a/html/images/16/tag_blue_add.png b/html/images/16/tag_blue_add.png new file mode 100755 index 0000000000..f135248f82 Binary files /dev/null and b/html/images/16/tag_blue_add.png differ diff --git a/html/images/16/tag_blue_delete.png b/html/images/16/tag_blue_delete.png new file mode 100755 index 0000000000..9fbae67250 Binary files /dev/null and b/html/images/16/tag_blue_delete.png differ diff --git a/html/images/16/tag_blue_edit.png b/html/images/16/tag_blue_edit.png new file mode 100755 index 0000000000..2a9f6266eb Binary files /dev/null and b/html/images/16/tag_blue_edit.png differ diff --git a/html/images/16/tag_green.png b/html/images/16/tag_green.png new file mode 100755 index 0000000000..83ec984bd7 Binary files /dev/null and b/html/images/16/tag_green.png differ diff --git a/html/images/16/tag_orange.png b/html/images/16/tag_orange.png new file mode 100755 index 0000000000..454a59f30c Binary files /dev/null and b/html/images/16/tag_orange.png differ diff --git a/html/images/16/tag_pink.png b/html/images/16/tag_pink.png new file mode 100755 index 0000000000..76e2296cc1 Binary files /dev/null and b/html/images/16/tag_pink.png differ diff --git a/html/images/16/tag_purple.png b/html/images/16/tag_purple.png new file mode 100755 index 0000000000..ebaf0e8743 Binary files /dev/null and b/html/images/16/tag_purple.png differ diff --git a/html/images/16/tag_red.png b/html/images/16/tag_red.png new file mode 100755 index 0000000000..6ebb37d25f Binary files /dev/null and b/html/images/16/tag_red.png differ diff --git a/html/images/16/tag_yellow.png b/html/images/16/tag_yellow.png new file mode 100755 index 0000000000..83d12924ff Binary files /dev/null and b/html/images/16/tag_yellow.png differ diff --git a/html/images/16/telephone.png b/html/images/16/telephone.png new file mode 100755 index 0000000000..cecc436fbd Binary files /dev/null and b/html/images/16/telephone.png differ diff --git a/html/images/16/telephone_add.png b/html/images/16/telephone_add.png new file mode 100755 index 0000000000..5591cfc4ac Binary files /dev/null and b/html/images/16/telephone_add.png differ diff --git a/html/images/16/telephone_delete.png b/html/images/16/telephone_delete.png new file mode 100755 index 0000000000..0013268e93 Binary files /dev/null and b/html/images/16/telephone_delete.png differ diff --git a/html/images/16/telephone_edit.png b/html/images/16/telephone_edit.png new file mode 100755 index 0000000000..bcf6d7ec1d Binary files /dev/null and b/html/images/16/telephone_edit.png differ diff --git a/html/images/16/telephone_error.png b/html/images/16/telephone_error.png new file mode 100755 index 0000000000..d3ec3a110d Binary files /dev/null and b/html/images/16/telephone_error.png differ diff --git a/html/images/16/telephone_go.png b/html/images/16/telephone_go.png new file mode 100755 index 0000000000..395c8fbf59 Binary files /dev/null and b/html/images/16/telephone_go.png differ diff --git a/html/images/16/telephone_key.png b/html/images/16/telephone_key.png new file mode 100755 index 0000000000..cef5dec4e7 Binary files /dev/null and b/html/images/16/telephone_key.png differ diff --git a/html/images/16/telephone_link.png b/html/images/16/telephone_link.png new file mode 100755 index 0000000000..ef1ee5dd74 Binary files /dev/null and b/html/images/16/telephone_link.png differ diff --git a/html/images/16/television.png b/html/images/16/television.png new file mode 100755 index 0000000000..1738a4f106 Binary files /dev/null and b/html/images/16/television.png differ diff --git a/html/images/16/television_add.png b/html/images/16/television_add.png new file mode 100755 index 0000000000..2baaad99e5 Binary files /dev/null and b/html/images/16/television_add.png differ diff --git a/html/images/16/television_delete.png b/html/images/16/television_delete.png new file mode 100755 index 0000000000..b9a5860251 Binary files /dev/null and b/html/images/16/television_delete.png differ diff --git a/html/images/16/text_align_center.png b/html/images/16/text_align_center.png new file mode 100755 index 0000000000..57beb38139 Binary files /dev/null and b/html/images/16/text_align_center.png differ diff --git a/html/images/16/text_align_justify.png b/html/images/16/text_align_justify.png new file mode 100755 index 0000000000..2fbdd6920a Binary files /dev/null and b/html/images/16/text_align_justify.png differ diff --git a/html/images/16/text_align_left.png b/html/images/16/text_align_left.png new file mode 100755 index 0000000000..6c8fcc1165 Binary files /dev/null and b/html/images/16/text_align_left.png differ diff --git a/html/images/16/text_align_right.png b/html/images/16/text_align_right.png new file mode 100755 index 0000000000..a1502571c9 Binary files /dev/null and b/html/images/16/text_align_right.png differ diff --git a/html/images/16/text_allcaps.png b/html/images/16/text_allcaps.png new file mode 100755 index 0000000000..280fd442b3 Binary files /dev/null and b/html/images/16/text_allcaps.png differ diff --git a/html/images/16/text_bold.png b/html/images/16/text_bold.png new file mode 100755 index 0000000000..889ae80e37 Binary files /dev/null and b/html/images/16/text_bold.png differ diff --git a/html/images/16/text_columns.png b/html/images/16/text_columns.png new file mode 100755 index 0000000000..97b2e03534 Binary files /dev/null and b/html/images/16/text_columns.png differ diff --git a/html/images/16/text_dropcaps.png b/html/images/16/text_dropcaps.png new file mode 100755 index 0000000000..dd65786a7b Binary files /dev/null and b/html/images/16/text_dropcaps.png differ diff --git a/html/images/16/text_heading_1.png b/html/images/16/text_heading_1.png new file mode 100755 index 0000000000..9c122e91e3 Binary files /dev/null and b/html/images/16/text_heading_1.png differ diff --git a/html/images/16/text_heading_2.png b/html/images/16/text_heading_2.png new file mode 100755 index 0000000000..fbd87657fb Binary files /dev/null and b/html/images/16/text_heading_2.png differ diff --git a/html/images/16/text_heading_3.png b/html/images/16/text_heading_3.png new file mode 100755 index 0000000000..c7836cf09e Binary files /dev/null and b/html/images/16/text_heading_3.png differ diff --git a/html/images/16/text_heading_4.png b/html/images/16/text_heading_4.png new file mode 100755 index 0000000000..4e929eaf58 Binary files /dev/null and b/html/images/16/text_heading_4.png differ diff --git a/html/images/16/text_heading_5.png b/html/images/16/text_heading_5.png new file mode 100755 index 0000000000..30cabebf74 Binary files /dev/null and b/html/images/16/text_heading_5.png differ diff --git a/html/images/16/text_heading_6.png b/html/images/16/text_heading_6.png new file mode 100755 index 0000000000..058170a20c Binary files /dev/null and b/html/images/16/text_heading_6.png differ diff --git a/html/images/16/text_horizontalrule.png b/html/images/16/text_horizontalrule.png new file mode 100755 index 0000000000..8dd1da1c1b Binary files /dev/null and b/html/images/16/text_horizontalrule.png differ diff --git a/html/images/16/text_indent.png b/html/images/16/text_indent.png new file mode 100755 index 0000000000..9364532344 Binary files /dev/null and b/html/images/16/text_indent.png differ diff --git a/html/images/16/text_indent_remove.png b/html/images/16/text_indent_remove.png new file mode 100755 index 0000000000..1651b074eb Binary files /dev/null and b/html/images/16/text_indent_remove.png differ diff --git a/html/images/16/text_italic.png b/html/images/16/text_italic.png new file mode 100755 index 0000000000..8482ac8cb1 Binary files /dev/null and b/html/images/16/text_italic.png differ diff --git a/html/images/16/text_kerning.png b/html/images/16/text_kerning.png new file mode 100755 index 0000000000..377def6459 Binary files /dev/null and b/html/images/16/text_kerning.png differ diff --git a/html/images/16/text_letter_omega.png b/html/images/16/text_letter_omega.png new file mode 100755 index 0000000000..5075ec6b85 Binary files /dev/null and b/html/images/16/text_letter_omega.png differ diff --git a/html/images/16/text_letterspacing.png b/html/images/16/text_letterspacing.png new file mode 100755 index 0000000000..41390f5490 Binary files /dev/null and b/html/images/16/text_letterspacing.png differ diff --git a/html/images/16/text_linespacing.png b/html/images/16/text_linespacing.png new file mode 100755 index 0000000000..1a91cbdd5f Binary files /dev/null and b/html/images/16/text_linespacing.png differ diff --git a/html/images/16/text_list_bullets.png b/html/images/16/text_list_bullets.png new file mode 100755 index 0000000000..4a8672bde4 Binary files /dev/null and b/html/images/16/text_list_bullets.png differ diff --git a/html/images/16/text_list_numbers.png b/html/images/16/text_list_numbers.png new file mode 100755 index 0000000000..33b0b8df39 Binary files /dev/null and b/html/images/16/text_list_numbers.png differ diff --git a/html/images/16/text_lowercase.png b/html/images/16/text_lowercase.png new file mode 100755 index 0000000000..382a102e3d Binary files /dev/null and b/html/images/16/text_lowercase.png differ diff --git a/html/images/16/text_padding_bottom.png b/html/images/16/text_padding_bottom.png new file mode 100755 index 0000000000..4880c43a14 Binary files /dev/null and b/html/images/16/text_padding_bottom.png differ diff --git a/html/images/16/text_padding_left.png b/html/images/16/text_padding_left.png new file mode 100755 index 0000000000..b55482eee4 Binary files /dev/null and b/html/images/16/text_padding_left.png differ diff --git a/html/images/16/text_padding_right.png b/html/images/16/text_padding_right.png new file mode 100755 index 0000000000..106edae52d Binary files /dev/null and b/html/images/16/text_padding_right.png differ diff --git a/html/images/16/text_padding_top.png b/html/images/16/text_padding_top.png new file mode 100755 index 0000000000..c5c45b2d6e Binary files /dev/null and b/html/images/16/text_padding_top.png differ diff --git a/html/images/16/text_replace.png b/html/images/16/text_replace.png new file mode 100755 index 0000000000..877f82feae Binary files /dev/null and b/html/images/16/text_replace.png differ diff --git a/html/images/16/text_signature.png b/html/images/16/text_signature.png new file mode 100755 index 0000000000..c72fd80882 Binary files /dev/null and b/html/images/16/text_signature.png differ diff --git a/html/images/16/text_smallcaps.png b/html/images/16/text_smallcaps.png new file mode 100755 index 0000000000..5b98a6e133 Binary files /dev/null and b/html/images/16/text_smallcaps.png differ diff --git a/html/images/16/text_strikethrough.png b/html/images/16/text_strikethrough.png new file mode 100755 index 0000000000..612058a78e Binary files /dev/null and b/html/images/16/text_strikethrough.png differ diff --git a/html/images/16/text_subscript.png b/html/images/16/text_subscript.png new file mode 100755 index 0000000000..1a2b01017d Binary files /dev/null and b/html/images/16/text_subscript.png differ diff --git a/html/images/16/text_superscript.png b/html/images/16/text_superscript.png new file mode 100755 index 0000000000..2fb2a7c748 Binary files /dev/null and b/html/images/16/text_superscript.png differ diff --git a/html/images/16/text_underline.png b/html/images/16/text_underline.png new file mode 100755 index 0000000000..90d0df2868 Binary files /dev/null and b/html/images/16/text_underline.png differ diff --git a/html/images/16/text_uppercase.png b/html/images/16/text_uppercase.png new file mode 100755 index 0000000000..8dcc2dbbb2 Binary files /dev/null and b/html/images/16/text_uppercase.png differ diff --git a/html/images/16/textfield.png b/html/images/16/textfield.png new file mode 100755 index 0000000000..d37e7304e2 Binary files /dev/null and b/html/images/16/textfield.png differ diff --git a/html/images/16/textfield_add.png b/html/images/16/textfield_add.png new file mode 100755 index 0000000000..204de72316 Binary files /dev/null and b/html/images/16/textfield_add.png differ diff --git a/html/images/16/textfield_delete.png b/html/images/16/textfield_delete.png new file mode 100755 index 0000000000..c7bd58b217 Binary files /dev/null and b/html/images/16/textfield_delete.png differ diff --git a/html/images/16/textfield_key.png b/html/images/16/textfield_key.png new file mode 100755 index 0000000000..a9d5e4f8cc Binary files /dev/null and b/html/images/16/textfield_key.png differ diff --git a/html/images/16/textfield_rename.png b/html/images/16/textfield_rename.png new file mode 100755 index 0000000000..4e3688edc8 Binary files /dev/null and b/html/images/16/textfield_rename.png differ diff --git a/html/images/16/thumb_down.png b/html/images/16/thumb_down.png new file mode 100755 index 0000000000..3c832d4c83 Binary files /dev/null and b/html/images/16/thumb_down.png differ diff --git a/html/images/16/thumb_up.png b/html/images/16/thumb_up.png new file mode 100755 index 0000000000..2bd16ccf29 Binary files /dev/null and b/html/images/16/thumb_up.png differ diff --git a/html/images/16/tick.png b/html/images/16/tick.png new file mode 100755 index 0000000000..a9925a06ab Binary files /dev/null and b/html/images/16/tick.png differ diff --git a/html/images/16/time.png b/html/images/16/time.png new file mode 100755 index 0000000000..911da3f1d3 Binary files /dev/null and b/html/images/16/time.png differ diff --git a/html/images/16/time_add.png b/html/images/16/time_add.png new file mode 100755 index 0000000000..dcc45cb22d Binary files /dev/null and b/html/images/16/time_add.png differ diff --git a/html/images/16/time_delete.png b/html/images/16/time_delete.png new file mode 100755 index 0000000000..5bf8313c6f Binary files /dev/null and b/html/images/16/time_delete.png differ diff --git a/html/images/16/time_go.png b/html/images/16/time_go.png new file mode 100755 index 0000000000..d451ee0611 Binary files /dev/null and b/html/images/16/time_go.png differ diff --git a/html/images/16/timeline_marker.png b/html/images/16/timeline_marker.png new file mode 100755 index 0000000000..a3fbddf88b Binary files /dev/null and b/html/images/16/timeline_marker.png differ diff --git a/html/images/16/transmit.png b/html/images/16/transmit.png new file mode 100755 index 0000000000..f54bf736cd Binary files /dev/null and b/html/images/16/transmit.png differ diff --git a/html/images/16/transmit_add.png b/html/images/16/transmit_add.png new file mode 100755 index 0000000000..b7fd4e685f Binary files /dev/null and b/html/images/16/transmit_add.png differ diff --git a/html/images/16/transmit_blue.png b/html/images/16/transmit_blue.png new file mode 100755 index 0000000000..7b1142fc70 Binary files /dev/null and b/html/images/16/transmit_blue.png differ diff --git a/html/images/16/transmit_delete.png b/html/images/16/transmit_delete.png new file mode 100755 index 0000000000..3d72be2a38 Binary files /dev/null and b/html/images/16/transmit_delete.png differ diff --git a/html/images/16/transmit_edit.png b/html/images/16/transmit_edit.png new file mode 100755 index 0000000000..eb9a3dd593 Binary files /dev/null and b/html/images/16/transmit_edit.png differ diff --git a/html/images/16/transmit_error.png b/html/images/16/transmit_error.png new file mode 100755 index 0000000000..fd1d4499ab Binary files /dev/null and b/html/images/16/transmit_error.png differ diff --git a/html/images/16/transmit_go.png b/html/images/16/transmit_go.png new file mode 100755 index 0000000000..10137e55ca Binary files /dev/null and b/html/images/16/transmit_go.png differ diff --git a/html/images/16/tux.png b/html/images/16/tux.png new file mode 100755 index 0000000000..bbefe2ec45 Binary files /dev/null and b/html/images/16/tux.png differ diff --git a/html/images/16/user.png b/html/images/16/user.png new file mode 100755 index 0000000000..79f35ccbda Binary files /dev/null and b/html/images/16/user.png differ diff --git a/html/images/16/user_add.png b/html/images/16/user_add.png new file mode 100755 index 0000000000..deae99bcff Binary files /dev/null and b/html/images/16/user_add.png differ diff --git a/html/images/16/user_comment.png b/html/images/16/user_comment.png new file mode 100755 index 0000000000..e54ebebafb Binary files /dev/null and b/html/images/16/user_comment.png differ diff --git a/html/images/16/user_delete.png b/html/images/16/user_delete.png new file mode 100755 index 0000000000..acbb5630e5 Binary files /dev/null and b/html/images/16/user_delete.png differ diff --git a/html/images/16/user_edit.png b/html/images/16/user_edit.png new file mode 100755 index 0000000000..c1974cda74 Binary files /dev/null and b/html/images/16/user_edit.png differ diff --git a/html/images/16/user_female.png b/html/images/16/user_female.png new file mode 100755 index 0000000000..7c71de03b2 Binary files /dev/null and b/html/images/16/user_female.png differ diff --git a/html/images/16/user_go.png b/html/images/16/user_go.png new file mode 100755 index 0000000000..0468cf08f3 Binary files /dev/null and b/html/images/16/user_go.png differ diff --git a/html/images/16/user_gray.png b/html/images/16/user_gray.png new file mode 100755 index 0000000000..8fd539e9cb Binary files /dev/null and b/html/images/16/user_gray.png differ diff --git a/html/images/16/user_green.png b/html/images/16/user_green.png new file mode 100755 index 0000000000..30383c2de5 Binary files /dev/null and b/html/images/16/user_green.png differ diff --git a/html/images/16/user_orange.png b/html/images/16/user_orange.png new file mode 100755 index 0000000000..b818127df6 Binary files /dev/null and b/html/images/16/user_orange.png differ diff --git a/html/images/16/user_red.png b/html/images/16/user_red.png new file mode 100755 index 0000000000..c6f66e8b30 Binary files /dev/null and b/html/images/16/user_red.png differ diff --git a/html/images/16/user_suit.png b/html/images/16/user_suit.png new file mode 100755 index 0000000000..b3454e15fb Binary files /dev/null and b/html/images/16/user_suit.png differ diff --git a/html/images/16/vcard.png b/html/images/16/vcard.png new file mode 100755 index 0000000000..c02f315d20 Binary files /dev/null and b/html/images/16/vcard.png differ diff --git a/html/images/16/vcard_add.png b/html/images/16/vcard_add.png new file mode 100755 index 0000000000..2a68453811 Binary files /dev/null and b/html/images/16/vcard_add.png differ diff --git a/html/images/16/vcard_delete.png b/html/images/16/vcard_delete.png new file mode 100755 index 0000000000..b194b971b3 Binary files /dev/null and b/html/images/16/vcard_delete.png differ diff --git a/html/images/16/vcard_edit.png b/html/images/16/vcard_edit.png new file mode 100755 index 0000000000..ab0f6e73d6 Binary files /dev/null and b/html/images/16/vcard_edit.png differ diff --git a/html/images/16/vector.png b/html/images/16/vector.png new file mode 100755 index 0000000000..a1291c2dfa Binary files /dev/null and b/html/images/16/vector.png differ diff --git a/html/images/16/vector_add.png b/html/images/16/vector_add.png new file mode 100755 index 0000000000..988770f408 Binary files /dev/null and b/html/images/16/vector_add.png differ diff --git a/html/images/16/vector_delete.png b/html/images/16/vector_delete.png new file mode 100755 index 0000000000..ca139e0f33 Binary files /dev/null and b/html/images/16/vector_delete.png differ diff --git a/html/images/16/wand.png b/html/images/16/wand.png new file mode 100755 index 0000000000..44ccbf8128 Binary files /dev/null and b/html/images/16/wand.png differ diff --git a/html/images/16/weather_clouds.png b/html/images/16/weather_clouds.png new file mode 100755 index 0000000000..3f73eaa144 Binary files /dev/null and b/html/images/16/weather_clouds.png differ diff --git a/html/images/16/weather_cloudy.png b/html/images/16/weather_cloudy.png new file mode 100755 index 0000000000..5856e1d054 Binary files /dev/null and b/html/images/16/weather_cloudy.png differ diff --git a/html/images/16/weather_lightning.png b/html/images/16/weather_lightning.png new file mode 100755 index 0000000000..1d42b3673f Binary files /dev/null and b/html/images/16/weather_lightning.png differ diff --git a/html/images/16/weather_rain.png b/html/images/16/weather_rain.png new file mode 100755 index 0000000000..cb3d54d064 Binary files /dev/null and b/html/images/16/weather_rain.png differ diff --git a/html/images/16/weather_snow.png b/html/images/16/weather_snow.png new file mode 100755 index 0000000000..45bbdf19c6 Binary files /dev/null and b/html/images/16/weather_snow.png differ diff --git a/html/images/16/weather_sun.png b/html/images/16/weather_sun.png new file mode 100755 index 0000000000..0156c266e4 Binary files /dev/null and b/html/images/16/weather_sun.png differ diff --git a/html/images/16/webcam.png b/html/images/16/webcam.png new file mode 100755 index 0000000000..af71c30610 Binary files /dev/null and b/html/images/16/webcam.png differ diff --git a/html/images/16/webcam_add.png b/html/images/16/webcam_add.png new file mode 100755 index 0000000000..f02fcfa99c Binary files /dev/null and b/html/images/16/webcam_add.png differ diff --git a/html/images/16/webcam_delete.png b/html/images/16/webcam_delete.png new file mode 100755 index 0000000000..bd6277f516 Binary files /dev/null and b/html/images/16/webcam_delete.png differ diff --git a/html/images/16/webcam_error.png b/html/images/16/webcam_error.png new file mode 100755 index 0000000000..2faa70679b Binary files /dev/null and b/html/images/16/webcam_error.png differ diff --git a/html/images/16/world.png b/html/images/16/world.png new file mode 100755 index 0000000000..68f21d3011 Binary files /dev/null and b/html/images/16/world.png differ diff --git a/html/images/16/world_add.png b/html/images/16/world_add.png new file mode 100755 index 0000000000..6d0d7f74c0 Binary files /dev/null and b/html/images/16/world_add.png differ diff --git a/html/images/16/world_delete.png b/html/images/16/world_delete.png new file mode 100755 index 0000000000..ffcd1156f2 Binary files /dev/null and b/html/images/16/world_delete.png differ diff --git a/html/images/16/world_edit.png b/html/images/16/world_edit.png new file mode 100755 index 0000000000..00794d4088 Binary files /dev/null and b/html/images/16/world_edit.png differ diff --git a/html/images/16/world_go.png b/html/images/16/world_go.png new file mode 100755 index 0000000000..aee9c97f82 Binary files /dev/null and b/html/images/16/world_go.png differ diff --git a/html/images/16/world_link.png b/html/images/16/world_link.png new file mode 100755 index 0000000000..b8edc1265d Binary files /dev/null and b/html/images/16/world_link.png differ diff --git a/html/images/16/wrench.png b/html/images/16/wrench.png new file mode 100755 index 0000000000..5c8213fef5 Binary files /dev/null and b/html/images/16/wrench.png differ diff --git a/html/images/16/wrench_orange.png b/html/images/16/wrench_orange.png new file mode 100755 index 0000000000..565a9330e0 Binary files /dev/null and b/html/images/16/wrench_orange.png differ diff --git a/html/images/16/xhtml.png b/html/images/16/xhtml.png new file mode 100755 index 0000000000..da5dbf200d Binary files /dev/null and b/html/images/16/xhtml.png differ diff --git a/html/images/16/xhtml_add.png b/html/images/16/xhtml_add.png new file mode 100755 index 0000000000..bbaf784f21 Binary files /dev/null and b/html/images/16/xhtml_add.png differ diff --git a/html/images/16/xhtml_delete.png b/html/images/16/xhtml_delete.png new file mode 100755 index 0000000000..157b5201d0 Binary files /dev/null and b/html/images/16/xhtml_delete.png differ diff --git a/html/images/16/xhtml_go.png b/html/images/16/xhtml_go.png new file mode 100755 index 0000000000..43cf81448f Binary files /dev/null and b/html/images/16/xhtml_go.png differ diff --git a/html/images/16/xhtml_valid.png b/html/images/16/xhtml_valid.png new file mode 100755 index 0000000000..d2e1cfbe3c Binary files /dev/null and b/html/images/16/xhtml_valid.png differ diff --git a/html/images/16/zoom.png b/html/images/16/zoom.png new file mode 100755 index 0000000000..908612e394 Binary files /dev/null and b/html/images/16/zoom.png differ diff --git a/html/images/16/zoom_in.png b/html/images/16/zoom_in.png new file mode 100755 index 0000000000..cdf0a52fe0 Binary files /dev/null and b/html/images/16/zoom_in.png differ diff --git a/html/images/16/zoom_out.png b/html/images/16/zoom_out.png new file mode 100755 index 0000000000..07bf98a79c Binary files /dev/null and b/html/images/16/zoom_out.png differ diff --git a/html/images/arrow.gif b/html/images/arrow.gif new file mode 100755 index 0000000000..ac790e0bcb Binary files /dev/null and b/html/images/arrow.gif differ diff --git a/html/images/arrows.gif b/html/images/arrows.gif new file mode 100755 index 0000000000..f315cb68b5 Binary files /dev/null and b/html/images/arrows.gif differ diff --git a/html/images/customers.png b/html/images/customers.png new file mode 100755 index 0000000000..0e0e064a5d Binary files /dev/null and b/html/images/customers.png differ diff --git a/html/images/delete.gif b/html/images/delete.gif new file mode 100755 index 0000000000..5f1597dafc Binary files /dev/null and b/html/images/delete.gif differ diff --git a/html/images/devices.png b/html/images/devices.png new file mode 100755 index 0000000000..cd8f063faf Binary files /dev/null and b/html/images/devices.png differ diff --git a/html/images/eventlog.png b/html/images/eventlog.png new file mode 100755 index 0000000000..bdf25cc016 Binary files /dev/null and b/html/images/eventlog.png differ diff --git a/html/images/header_bg.gif b/html/images/header_bg.gif new file mode 100644 index 0000000000..590578280c Binary files /dev/null and b/html/images/header_bg.gif differ diff --git a/html/images/icon.png b/html/images/icon.png new file mode 100755 index 0000000000..eeca93544d Binary files /dev/null and b/html/images/icon.png differ diff --git a/html/images/lang/Thumbs.db b/html/images/lang/Thumbs.db new file mode 100755 index 0000000000..b8768a26c3 Binary files /dev/null and b/html/images/lang/Thumbs.db differ diff --git a/html/images/lang/en.gif b/html/images/lang/en.gif new file mode 100755 index 0000000000..00c9d57ba4 Binary files /dev/null and b/html/images/lang/en.gif differ diff --git a/html/images/lang/es.gif b/html/images/lang/es.gif new file mode 100755 index 0000000000..86e38ee57b Binary files /dev/null and b/html/images/lang/es.gif differ diff --git a/html/images/lang/fr.gif b/html/images/lang/fr.gif new file mode 100755 index 0000000000..7168eb2e0d Binary files /dev/null and b/html/images/lang/fr.gif differ diff --git a/html/images/lang/gm.gif b/html/images/lang/gm.gif new file mode 100755 index 0000000000..18c70f9dd0 Binary files /dev/null and b/html/images/lang/gm.gif differ diff --git a/html/images/lang/no.gif b/html/images/lang/no.gif new file mode 100755 index 0000000000..eddabd71c3 Binary files /dev/null and b/html/images/lang/no.gif differ diff --git a/html/images/lang/sw.gif b/html/images/lang/sw.gif new file mode 100755 index 0000000000..6cf01365e5 Binary files /dev/null and b/html/images/lang/sw.gif differ diff --git a/html/images/logo.gif b/html/images/logo.gif new file mode 100755 index 0000000000..ef5b336b21 Binary files /dev/null and b/html/images/logo.gif differ diff --git a/html/images/logo.jpg b/html/images/logo.jpg new file mode 100755 index 0000000000..1bec2e4879 Binary files /dev/null and b/html/images/logo.jpg differ diff --git a/html/images/logo.png b/html/images/logo.png new file mode 100755 index 0000000000..2e0479eb31 Binary files /dev/null and b/html/images/logo.png differ diff --git a/html/images/mail-reply.gif b/html/images/mail-reply.gif new file mode 100755 index 0000000000..e993f584f6 Binary files /dev/null and b/html/images/mail-reply.gif differ diff --git a/html/images/mail.gif b/html/images/mail.gif new file mode 100755 index 0000000000..c823df186d Binary files /dev/null and b/html/images/mail.gif differ diff --git a/html/images/menu2.gif b/html/images/menu2.gif new file mode 100755 index 0000000000..a738b7f9bf Binary files /dev/null and b/html/images/menu2.gif differ diff --git a/html/images/neu/add.png b/html/images/neu/add.png new file mode 100755 index 0000000000..6b636fe2a1 Binary files /dev/null and b/html/images/neu/add.png differ diff --git a/html/images/neu/battery.png b/html/images/neu/battery.png new file mode 100755 index 0000000000..4c85a940d4 Binary files /dev/null and b/html/images/neu/battery.png differ diff --git a/html/images/neu/cancel.png b/html/images/neu/cancel.png new file mode 100755 index 0000000000..5cb3841484 Binary files /dev/null and b/html/images/neu/cancel.png differ diff --git a/html/images/neu/computer.png b/html/images/neu/computer.png new file mode 100755 index 0000000000..51a68d58be Binary files /dev/null and b/html/images/neu/computer.png differ diff --git a/html/images/neu/connected.png b/html/images/neu/connected.png new file mode 100755 index 0000000000..72103e6dc5 Binary files /dev/null and b/html/images/neu/connected.png differ diff --git a/html/images/neu/customers.png b/html/images/neu/customers.png new file mode 100755 index 0000000000..2c1fa65ed2 Binary files /dev/null and b/html/images/neu/customers.png differ diff --git a/html/images/neu/display.png b/html/images/neu/display.png new file mode 100755 index 0000000000..d01edb2a44 Binary files /dev/null and b/html/images/neu/display.png differ diff --git a/html/images/neu/dns.png b/html/images/neu/dns.png new file mode 100755 index 0000000000..b2c29fa792 Binary files /dev/null and b/html/images/neu/dns.png differ diff --git a/html/images/neu/edit.png b/html/images/neu/edit.png new file mode 100755 index 0000000000..a653bfec70 Binary files /dev/null and b/html/images/neu/edit.png differ diff --git a/html/images/neu/error.png b/html/images/neu/error.png new file mode 100755 index 0000000000..4564a31bdf Binary files /dev/null and b/html/images/neu/error.png differ diff --git a/html/images/neu/exit.png b/html/images/neu/exit.png new file mode 100755 index 0000000000..bdea2cd36e Binary files /dev/null and b/html/images/neu/exit.png differ diff --git a/html/images/neu/find.png b/html/images/neu/find.png new file mode 100755 index 0000000000..b98e348708 Binary files /dev/null and b/html/images/neu/find.png differ diff --git a/html/images/neu/folder_home.png b/html/images/neu/folder_home.png new file mode 100755 index 0000000000..a3c4765466 Binary files /dev/null and b/html/images/neu/folder_home.png differ diff --git a/html/images/neu/help.png b/html/images/neu/help.png new file mode 100755 index 0000000000..6de563b16b Binary files /dev/null and b/html/images/neu/help.png differ diff --git a/html/images/neu/hide-graphs.png b/html/images/neu/hide-graphs.png new file mode 100755 index 0000000000..621fe3cd1f Binary files /dev/null and b/html/images/neu/hide-graphs.png differ diff --git a/html/images/neu/info.png b/html/images/neu/info.png new file mode 100755 index 0000000000..99ab40a678 Binary files /dev/null and b/html/images/neu/info.png differ diff --git a/html/images/neu/internet.png b/html/images/neu/internet.png new file mode 100755 index 0000000000..e440a5a1c7 Binary files /dev/null and b/html/images/neu/internet.png differ diff --git a/html/images/neu/locked.png b/html/images/neu/locked.png new file mode 100755 index 0000000000..292f7017cd Binary files /dev/null and b/html/images/neu/locked.png differ diff --git a/html/images/neu/mail.png b/html/images/neu/mail.png new file mode 100755 index 0000000000..ef882022ab Binary files /dev/null and b/html/images/neu/mail.png differ diff --git a/html/images/neu/monitor.png b/html/images/neu/monitor.png new file mode 100755 index 0000000000..b62cb68eba Binary files /dev/null and b/html/images/neu/monitor.png differ diff --git a/html/images/neu/network.png b/html/images/neu/network.png new file mode 100755 index 0000000000..3cf136184e Binary files /dev/null and b/html/images/neu/network.png differ diff --git a/html/images/neu/ok.png b/html/images/neu/ok.png new file mode 100755 index 0000000000..450a80cb3f Binary files /dev/null and b/html/images/neu/ok.png differ diff --git a/html/images/neu/prefs.png b/html/images/neu/prefs.png new file mode 100755 index 0000000000..256ce9a81f Binary files /dev/null and b/html/images/neu/prefs.png differ diff --git a/html/images/neu/question.png b/html/images/neu/question.png new file mode 100755 index 0000000000..f30e54810e Binary files /dev/null and b/html/images/neu/question.png differ diff --git a/html/images/neu/remove.png b/html/images/neu/remove.png new file mode 100755 index 0000000000..0815d3f3a0 Binary files /dev/null and b/html/images/neu/remove.png differ diff --git a/html/images/neu/screens.png b/html/images/neu/screens.png new file mode 100755 index 0000000000..d74aec27e5 Binary files /dev/null and b/html/images/neu/screens.png differ diff --git a/html/images/neu/server.png b/html/images/neu/server.png new file mode 100755 index 0000000000..bd5aebeabd Binary files /dev/null and b/html/images/neu/server.png differ diff --git a/html/images/neu/settings.png b/html/images/neu/settings.png new file mode 100755 index 0000000000..79f7b90dff Binary files /dev/null and b/html/images/neu/settings.png differ diff --git a/html/images/neu/show-graphs.png b/html/images/neu/show-graphs.png new file mode 100755 index 0000000000..e795ffc7d2 Binary files /dev/null and b/html/images/neu/show-graphs.png differ diff --git a/html/images/neu/system.png b/html/images/neu/system.png new file mode 100755 index 0000000000..426460b1a8 Binary files /dev/null and b/html/images/neu/system.png differ diff --git a/html/images/neu/system2.png b/html/images/neu/system2.png new file mode 100755 index 0000000000..73b6920317 Binary files /dev/null and b/html/images/neu/system2.png differ diff --git a/html/images/neu/terminal.png b/html/images/neu/terminal.png new file mode 100755 index 0000000000..cfa6d279b8 Binary files /dev/null and b/html/images/neu/terminal.png differ diff --git a/html/images/neu/warning.png b/html/images/neu/warning.png new file mode 100755 index 0000000000..35f61aebac Binary files /dev/null and b/html/images/neu/warning.png differ diff --git a/html/images/neu/web.png b/html/images/neu/web.png new file mode 100755 index 0000000000..49f7290ff9 Binary files /dev/null and b/html/images/neu/web.png differ diff --git a/html/images/neu/web2.png b/html/images/neu/web2.png new file mode 100755 index 0000000000..91906b6848 Binary files /dev/null and b/html/images/neu/web2.png differ diff --git a/html/images/no-graph.png b/html/images/no-graph.png new file mode 100755 index 0000000000..f68082158b Binary files /dev/null and b/html/images/no-graph.png differ diff --git a/html/images/observe-100.png b/html/images/observe-100.png new file mode 100755 index 0000000000..27f22aea1e Binary files /dev/null and b/html/images/observe-100.png differ diff --git a/html/images/os/apple.gif b/html/images/os/apple.gif new file mode 100755 index 0000000000..2bdf6e5b5e Binary files /dev/null and b/html/images/os/apple.gif differ diff --git a/html/images/os/centos.png b/html/images/os/centos.png new file mode 100755 index 0000000000..0d5c19e999 Binary files /dev/null and b/html/images/os/centos.png differ diff --git a/html/images/os/debian.png b/html/images/os/debian.png new file mode 100755 index 0000000000..00519ad37c Binary files /dev/null and b/html/images/os/debian.png differ diff --git a/html/images/os/dragonfly.png b/html/images/os/dragonfly.png new file mode 100755 index 0000000000..68387b4d6a Binary files /dev/null and b/html/images/os/dragonfly.png differ diff --git a/html/images/os/fedora.png b/html/images/os/fedora.png new file mode 100755 index 0000000000..bb0920f31f Binary files /dev/null and b/html/images/os/fedora.png differ diff --git a/html/images/os/freebsd.png b/html/images/os/freebsd.png new file mode 100755 index 0000000000..c8e48f0534 Binary files /dev/null and b/html/images/os/freebsd.png differ diff --git a/html/images/os/ios.gif b/html/images/os/ios.gif new file mode 100755 index 0000000000..5af6d830c7 Binary files /dev/null and b/html/images/os/ios.gif differ diff --git a/html/images/os/linux.png b/html/images/os/linux.png new file mode 100755 index 0000000000..b545571a9f Binary files /dev/null and b/html/images/os/linux.png differ diff --git a/html/images/os/m0n0wall.png b/html/images/os/m0n0wall.png new file mode 100755 index 0000000000..228abbf98a Binary files /dev/null and b/html/images/os/m0n0wall.png differ diff --git a/html/images/os/mandrake.png b/html/images/os/mandrake.png new file mode 100755 index 0000000000..98ec329bf0 Binary files /dev/null and b/html/images/os/mandrake.png differ diff --git a/html/images/os/netbsd.png b/html/images/os/netbsd.png new file mode 100755 index 0000000000..cf9f46f063 Binary files /dev/null and b/html/images/os/netbsd.png differ diff --git a/html/images/os/openbsd.png b/html/images/os/openbsd.png new file mode 100755 index 0000000000..4f50fbbf61 Binary files /dev/null and b/html/images/os/openbsd.png differ diff --git a/html/images/os/pfsense.png b/html/images/os/pfsense.png new file mode 100755 index 0000000000..f9e223c4a3 Binary files /dev/null and b/html/images/os/pfsense.png differ diff --git a/html/images/os/procurve.png b/html/images/os/procurve.png new file mode 100755 index 0000000000..600dc4e55e Binary files /dev/null and b/html/images/os/procurve.png differ diff --git a/html/images/os/ram.gif b/html/images/os/ram.gif new file mode 100755 index 0000000000..c2ab19a194 Binary files /dev/null and b/html/images/os/ram.gif differ diff --git a/html/images/os/redhat.png b/html/images/os/redhat.png new file mode 100755 index 0000000000..82822d10f8 Binary files /dev/null and b/html/images/os/redhat.png differ diff --git a/html/images/os/sgi.gif b/html/images/os/sgi.gif new file mode 100755 index 0000000000..2945f1c85a Binary files /dev/null and b/html/images/os/sgi.gif differ diff --git a/html/images/os/slackware.png b/html/images/os/slackware.png new file mode 100755 index 0000000000..6bb89bc80f Binary files /dev/null and b/html/images/os/slackware.png differ diff --git a/html/images/os/snom.png b/html/images/os/snom.png new file mode 100755 index 0000000000..1cc4919d8a Binary files /dev/null and b/html/images/os/snom.png differ diff --git a/html/images/os/solaris.gif b/html/images/os/solaris.gif new file mode 100755 index 0000000000..690534f83e Binary files /dev/null and b/html/images/os/solaris.gif differ diff --git a/html/images/os/sun.gif b/html/images/os/sun.gif new file mode 100755 index 0000000000..e0ed0be04c Binary files /dev/null and b/html/images/os/sun.gif differ diff --git a/html/images/os/suse.png b/html/images/os/suse.png new file mode 100755 index 0000000000..917bab466b Binary files /dev/null and b/html/images/os/suse.png differ diff --git a/html/images/os/ubuntu.png b/html/images/os/ubuntu.png new file mode 100755 index 0000000000..2b1a99b188 Binary files /dev/null and b/html/images/os/ubuntu.png differ diff --git a/html/images/os/voswall.png b/html/images/os/voswall.png new file mode 100755 index 0000000000..25b352b6b6 Binary files /dev/null and b/html/images/os/voswall.png differ diff --git a/html/images/os/windows.gif b/html/images/os/windows.gif new file mode 100755 index 0000000000..65b48309ae Binary files /dev/null and b/html/images/os/windows.gif differ diff --git a/html/images/password-blue.png b/html/images/password-blue.png new file mode 100755 index 0000000000..8bda6f1c67 Binary files /dev/null and b/html/images/password-blue.png differ diff --git a/html/images/password.png b/html/images/password.png new file mode 100755 index 0000000000..5e17dfcfcc Binary files /dev/null and b/html/images/password.png differ diff --git a/html/images/peering.png b/html/images/peering.png new file mode 100755 index 0000000000..5b39b7167a Binary files /dev/null and b/html/images/peering.png differ diff --git a/html/images/phone.gif b/html/images/phone.gif new file mode 100755 index 0000000000..3885c869f0 Binary files /dev/null and b/html/images/phone.gif differ diff --git a/html/images/readme.html b/html/images/readme.html new file mode 100755 index 0000000000..3852c6dd5a --- /dev/null +++ b/html/images/readme.html @@ -0,0 +1,1495 @@ + + + + + + + famfamfam.com: Silk Icons + + + + + + + + + + + + + + + + + +
+
+
+ +

Silk Icons

+

http://www.famfamfam.com/lab/icons/silk/

+

+ “Silk” is a smooth icon set, containing 1000 16-by-16 pixel icons in + strokably-soft PNG format. Containing a large variety of icons, you're sure to find something + that tickles your fancy. And all for a low low price of $0.00. You can't say fairer than that. + +
+
+ + + + Current version: 1.3

+ +

License

+

+ + I also love to hear of my work being used, feel encouraged to send an email + with a link or screenshot of the icons in their new home to + mjames  gmail  com. + This work is licensed under a Creative Commons Attribution 2.5 License. + This means you may use it for any purpose, and make any changes you like. + All I ask is that you include a link back to http://www.famfamfam.com/lab/icons/silk/ in your credits (contact me to discuss licencing further). + + + + +

+ +

Sightings

+ +

+ Do you use this set? Contact me!. +

+ + +

Icons

+ + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
accept accept.pngadd add.pnganchor anchor.pngapplication application.pngapplication add application_add.pngapplication cascade application_cascade.pngapplication delete application_delete.pngapplication double application_double.pngapplication edit application_edit.pngapplication error application_error.pngapplication form application_form.pngapplication form add application_form_add.png
application form delete application_form_delete.pngapplication form edit application_form_edit.pngapplication form magnify application_form_magnify.pngapplication get application_get.pngapplication go application_go.pngapplication home application_home.pngapplication key application_key.pngapplication lightning application_lightning.pngapplication link application_link.pngapplication osx application_osx.pngapplication osx terminal application_osx_terminal.pngapplication put application_put.png
application side boxes application_side_boxes.pngapplication side contract application_side_contract.pngapplication side expand application_side_expand.pngapplication side list application_side_list.pngapplication side tree application_side_tree.pngapplication split application_split.pngapplication tile horizontal application_tile_horizontal.pngapplication tile vertical application_tile_vertical.pngapplication view columns application_view_columns.pngapplication view detail application_view_detail.pngapplication view gallery application_view_gallery.pngapplication view icons application_view_icons.png
application view list application_view_list.pngapplication view tile application_view_tile.pngapplication xp application_xp.pngapplication xp terminal application_xp_terminal.pngarrow branch arrow_branch.pngarrow divide arrow_divide.pngarrow down arrow_down.pngarrow in arrow_in.pngarrow inout arrow_inout.pngarrow join arrow_join.pngarrow left arrow_left.pngarrow merge arrow_merge.png
arrow out arrow_out.pngarrow redo arrow_redo.pngarrow refresh arrow_refresh.pngarrow refresh small arrow_refresh_small.pngarrow right arrow_right.pngarrow rotate anticlockwise arrow_rotate_anticlockwise.pngarrow rotate clockwise arrow_rotate_clockwise.pngarrow switch arrow_switch.pngarrow turn left arrow_turn_left.pngarrow turn right arrow_turn_right.pngarrow undo arrow_undo.pngarrow up arrow_up.png
asterisk orange asterisk_orange.pngasterisk yellow asterisk_yellow.pngattach attach.pngaward star add award_star_add.pngaward star bronze 1 award_star_bronze_1.pngaward star bronze 2 award_star_bronze_2.pngaward star bronze 3 award_star_bronze_3.pngaward star delete award_star_delete.pngaward star gold 1 award_star_gold_1.pngaward star gold 2 award_star_gold_2.pngaward star gold 3 award_star_gold_3.pngaward star silver 1 award_star_silver_1.png
award star silver 2 award_star_silver_2.pngaward star silver 3 award_star_silver_3.pngbasket basket.pngbasket add basket_add.pngbasket delete basket_delete.pngbasket edit basket_edit.pngbasket error basket_error.pngbasket go basket_go.pngbasket put basket_put.pngbasket remove basket_remove.pngbell bell.pngbell add bell_add.png
bell delete bell_delete.pngbell error bell_error.pngbell go bell_go.pngbell link bell_link.pngbin bin.pngbin closed bin_closed.pngbin empty bin_empty.pngbomb bomb.pngbook book.pngbook add book_add.pngbook addresses book_addresses.pngbook delete book_delete.png
book edit book_edit.pngbook error book_error.pngbook go book_go.pngbook key book_key.pngbook link book_link.pngbook next book_next.pngbook open book_open.pngbook previous book_previous.pngbox box.pngbrick brick.pngbrick add brick_add.pngbrick delete brick_delete.png
brick edit brick_edit.pngbrick error brick_error.pngbrick go brick_go.pngbrick link brick_link.pngbricks bricks.pngbriefcase briefcase.pngbug bug.pngbug add bug_add.pngbug delete bug_delete.pngbug edit bug_edit.pngbug error bug_error.pngbug go bug_go.png
bug link bug_link.pngbuilding building.pngbuilding add building_add.pngbuilding delete building_delete.pngbuilding edit building_edit.pngbuilding error building_error.pngbuilding go building_go.pngbuilding key building_key.pngbuilding link building_link.pngbullet add bullet_add.pngbullet arrow bottom bullet_arrow_bottom.pngbullet arrow down bullet_arrow_down.png
bullet arrow top bullet_arrow_top.pngbullet arrow up bullet_arrow_up.pngbullet black bullet_black.pngbullet blue bullet_blue.pngbullet delete bullet_delete.pngbullet disk bullet_disk.pngbullet error bullet_error.pngbullet feed bullet_feed.pngbullet go bullet_go.pngbullet green bullet_green.pngbullet key bullet_key.pngbullet orange bullet_orange.png
bullet picture bullet_picture.pngbullet pink bullet_pink.pngbullet purple bullet_purple.pngbullet red bullet_red.pngbullet star bullet_star.pngbullet toggle minus bullet_toggle_minus.pngbullet toggle plus bullet_toggle_plus.pngbullet white bullet_white.pngbullet wrench bullet_wrench.pngbullet yellow bullet_yellow.pngcake cake.pngcalculator calculator.png
calculator add calculator_add.pngcalculator delete calculator_delete.pngcalculator edit calculator_edit.pngcalculator error calculator_error.pngcalculator link calculator_link.pngcalendar calendar.pngcalendar add calendar_add.pngcalendar delete calendar_delete.pngcalendar edit calendar_edit.pngcalendar link calendar_link.pngcalendar view day calendar_view_day.pngcalendar view month calendar_view_month.png
calendar view week calendar_view_week.pngcamera camera.pngcamera add camera_add.pngcamera delete camera_delete.pngcamera edit camera_edit.pngcamera error camera_error.pngcamera go camera_go.pngcamera link camera_link.pngcamera small camera_small.pngcancel cancel.pngcar car.pngcar add car_add.png
car delete car_delete.pngcart cart.pngcart add cart_add.pngcart delete cart_delete.pngcart edit cart_edit.pngcart error cart_error.pngcart go cart_go.pngcart put cart_put.pngcart remove cart_remove.pngcd cd.pngcd add cd_add.pngcd burn cd_burn.png
cd delete cd_delete.pngcd edit cd_edit.pngcd eject cd_eject.pngcd go cd_go.pngchart bar chart_bar.pngchart bar add chart_bar_add.pngchart bar delete chart_bar_delete.pngchart bar edit chart_bar_edit.pngchart bar error chart_bar_error.pngchart bar link chart_bar_link.pngchart curve chart_curve.pngchart curve add chart_curve_add.png
chart curve delete chart_curve_delete.pngchart curve edit chart_curve_edit.pngchart curve error chart_curve_error.pngchart curve go chart_curve_go.pngchart curve link chart_curve_link.pngchart line chart_line.pngchart line add chart_line_add.pngchart line delete chart_line_delete.pngchart line edit chart_line_edit.pngchart line error chart_line_error.pngchart line link chart_line_link.pngchart organisation chart_organisation.png
chart organisation add chart_organisation_add.pngchart organisation delete chart_organisation_delete.pngchart pie chart_pie.pngchart pie add chart_pie_add.pngchart pie delete chart_pie_delete.pngchart pie edit chart_pie_edit.pngchart pie error chart_pie_error.pngchart pie link chart_pie_link.pngclock clock.pngclock add clock_add.pngclock delete clock_delete.pngclock edit clock_edit.png
clock error clock_error.pngclock go clock_go.pngclock link clock_link.pngclock pause clock_pause.pngclock play clock_play.pngclock red clock_red.pngclock stop clock_stop.pngcog cog.pngcog add cog_add.pngcog delete cog_delete.pngcog edit cog_edit.pngcog error cog_error.png
cog go cog_go.pngcoins coins.pngcoins add coins_add.pngcoins delete coins_delete.pngcolor swatch color_swatch.pngcolor wheel color_wheel.pngcomment comment.pngcomment add comment_add.pngcomment delete comment_delete.pngcomment edit comment_edit.pngcomments comments.pngcomments add comments_add.png
comments delete comments_delete.pngcompress compress.pngcomputer computer.pngcomputer add computer_add.pngcomputer delete computer_delete.pngcomputer edit computer_edit.pngcomputer error computer_error.pngcomputer go computer_go.pngcomputer key computer_key.pngcomputer link computer_link.pngconnect connect.pngcontrast contrast.png
contrast decrease contrast_decrease.pngcontrast high contrast_high.pngcontrast increase contrast_increase.pngcontrast low contrast_low.pngcontrol eject control_eject.pngcontrol eject blue control_eject_blue.pngcontrol end control_end.pngcontrol end blue control_end_blue.pngcontrol equalizer control_equalizer.pngcontrol equalizer blue control_equalizer_blue.pngcontrol fastforward control_fastforward.pngcontrol fastforward blue control_fastforward_blue.png
control pause control_pause.pngcontrol pause blue control_pause_blue.pngcontrol play control_play.pngcontrol play blue control_play_blue.pngcontrol repeat control_repeat.pngcontrol repeat blue control_repeat_blue.pngcontrol rewind control_rewind.pngcontrol rewind blue control_rewind_blue.pngcontrol start control_start.pngcontrol start blue control_start_blue.pngcontrol stop control_stop.pngcontrol stop blue control_stop_blue.png
controller controller.pngcontroller add controller_add.pngcontroller delete controller_delete.pngcontroller error controller_error.pngcreditcards creditcards.pngcross cross.pngcss css.pngcss add css_add.pngcss delete css_delete.pngcss go css_go.pngcss valid css_valid.pngcup cup.png
cup add cup_add.pngcup delete cup_delete.pngcup edit cup_edit.pngcup error cup_error.pngcup go cup_go.pngcup key cup_key.pngcup link cup_link.pngcursor cursor.pngcut cut.pngcut red cut_red.pngdatabase database.pngdatabase add database_add.png
database connect database_connect.pngdatabase delete database_delete.pngdatabase edit database_edit.pngdatabase error database_error.pngdatabase gear database_gear.pngdatabase go database_go.pngdatabase key database_key.pngdatabase lightning database_lightning.pngdatabase link database_link.pngdatabase refresh database_refresh.pngdatabase save database_save.pngdatabase table database_table.png
date date.pngdate add date_add.pngdate delete date_delete.pngdate edit date_edit.pngdate error date_error.pngdate go date_go.pngdate link date_link.pngdate magnify date_magnify.pngdate next date_next.pngdate previous date_previous.pngdelete delete.pngdisconnect disconnect.png
disk disk.pngdisk multiple disk_multiple.pngdoor door.pngdoor in door_in.pngdoor open door_open.pngdoor out door_out.pngdrink drink.pngdrink empty drink_empty.pngdrive drive.pngdrive add drive_add.pngdrive burn drive_burn.pngdrive cd drive_cd.png
drive cd empty drive_cd_empty.pngdrive delete drive_delete.pngdrive disk drive_disk.pngdrive edit drive_edit.pngdrive error drive_error.pngdrive go drive_go.pngdrive key drive_key.pngdrive link drive_link.pngdrive magnify drive_magnify.pngdrive network drive_network.pngdrive rename drive_rename.pngdrive user drive_user.png
drive web drive_web.pngdvd dvd.pngdvd add dvd_add.pngdvd delete dvd_delete.pngdvd edit dvd_edit.pngdvd error dvd_error.pngdvd go dvd_go.pngdvd key dvd_key.pngdvd link dvd_link.pngemail email.pngemail add email_add.pngemail attach email_attach.png
email delete email_delete.pngemail edit email_edit.pngemail error email_error.pngemail go email_go.pngemail link email_link.pngemail open email_open.pngemail open image email_open_image.pngemoticon evilgrin emoticon_evilgrin.pngemoticon grin emoticon_grin.pngemoticon happy emoticon_happy.pngemoticon smile emoticon_smile.pngemoticon surprised emoticon_surprised.png
emoticon tongue emoticon_tongue.pngemoticon unhappy emoticon_unhappy.pngemoticon waii emoticon_waii.pngemoticon wink emoticon_wink.pngerror error.pngerror add error_add.pngerror delete error_delete.pngerror go error_go.pngexclamation exclamation.pngeye eye.pngfeed feed.pngfeed add feed_add.png
feed delete feed_delete.pngfeed disk feed_disk.pngfeed edit feed_edit.pngfeed error feed_error.pngfeed go feed_go.pngfeed key feed_key.pngfeed link feed_link.pngfeed magnify feed_magnify.pngfemale female.pngfilm film.pngfilm add film_add.pngfilm delete film_delete.png
film edit film_edit.pngfilm error film_error.pngfilm go film_go.pngfilm key film_key.pngfilm link film_link.pngfilm save film_save.pngfind find.pngflag blue flag_blue.pngflag green flag_green.pngflag orange flag_orange.pngflag pink flag_pink.pngflag purple flag_purple.png
flag red flag_red.pngflag yellow flag_yellow.pngfolder folder.pngfolder add folder_add.pngfolder bell folder_bell.pngfolder brick folder_brick.pngfolder bug folder_bug.pngfolder camera folder_camera.pngfolder database folder_database.pngfolder delete folder_delete.pngfolder edit folder_edit.pngfolder error folder_error.png
folder explore folder_explore.pngfolder feed folder_feed.pngfolder find folder_find.pngfolder go folder_go.pngfolder heart folder_heart.pngfolder image folder_image.pngfolder key folder_key.pngfolder lightbulb folder_lightbulb.pngfolder link folder_link.pngfolder magnify folder_magnify.pngfolder page folder_page.pngfolder page white folder_page_white.png
folder palette folder_palette.pngfolder picture folder_picture.pngfolder star folder_star.pngfolder table folder_table.pngfolder user folder_user.pngfolder wrench folder_wrench.pngfont font.pngfont add font_add.pngfont delete font_delete.pngfont go font_go.pnggroup group.pnggroup add group_add.png
group delete group_delete.pnggroup edit group_edit.pnggroup error group_error.pnggroup gear group_gear.pnggroup go group_go.pnggroup key group_key.pnggroup link group_link.pngheart heart.pngheart add heart_add.pngheart delete heart_delete.pnghelp help.pnghourglass hourglass.png
hourglass add hourglass_add.pnghourglass delete hourglass_delete.pnghourglass go hourglass_go.pnghourglass link hourglass_link.pnghouse house.pnghouse go house_go.pnghouse link house_link.pnghtml html.pnghtml add html_add.pnghtml delete html_delete.pnghtml go html_go.pnghtml valid html_valid.png
image image.pngimage add image_add.pngimage delete image_delete.pngimage edit image_edit.pngimage link image_link.pngimages images.pnginformation information.pngipod ipod.pngipod cast ipod_cast.pngipod cast add ipod_cast_add.pngipod cast delete ipod_cast_delete.pngipod sound ipod_sound.png
joystick joystick.pngjoystick add joystick_add.pngjoystick delete joystick_delete.pngjoystick error joystick_error.pngkey key.pngkey add key_add.pngkey delete key_delete.pngkey go key_go.pngkeyboard keyboard.pngkeyboard add keyboard_add.pngkeyboard delete keyboard_delete.pngkeyboard magnify keyboard_magnify.png
layers layers.pnglayout layout.pnglayout add layout_add.pnglayout content layout_content.pnglayout delete layout_delete.pnglayout edit layout_edit.pnglayout error layout_error.pnglayout header layout_header.pnglayout link layout_link.pnglayout sidebar layout_sidebar.pnglightbulb lightbulb.pnglightbulb add lightbulb_add.png
lightbulb delete lightbulb_delete.pnglightbulb off lightbulb_off.pnglightning lightning.pnglightning add lightning_add.pnglightning delete lightning_delete.pnglightning go lightning_go.pnglink link.pnglink add link_add.pnglink break link_break.pnglink delete link_delete.pnglink edit link_edit.pnglink error link_error.png
link go link_go.pnglock lock.pnglock add lock_add.pnglock break lock_break.pnglock delete lock_delete.pnglock edit lock_edit.pnglock go lock_go.pnglock open lock_open.pnglorry lorry.pnglorry add lorry_add.pnglorry delete lorry_delete.pnglorry error lorry_error.png
lorry flatbed lorry_flatbed.pnglorry go lorry_go.pnglorry link lorry_link.pngmagifier zoom out magifier_zoom_out.pngmagnifier magnifier.pngmagnifier zoom in magnifier_zoom_in.pngmale male.pngmap map.pngmap add map_add.pngmap delete map_delete.pngmap edit map_edit.pngmap go map_go.png
map magnify map_magnify.pngmedal bronze 1 medal_bronze_1.pngmedal bronze 2 medal_bronze_2.pngmedal bronze 3 medal_bronze_3.pngmedal bronze add medal_bronze_add.pngmedal bronze delete medal_bronze_delete.pngmedal gold 1 medal_gold_1.pngmedal gold 2 medal_gold_2.pngmedal gold 3 medal_gold_3.pngmedal gold add medal_gold_add.pngmedal gold delete medal_gold_delete.pngmedal silver 1 medal_silver_1.png
medal silver 2 medal_silver_2.pngmedal silver 3 medal_silver_3.pngmedal silver add medal_silver_add.pngmedal silver delete medal_silver_delete.pngmoney money.pngmoney add money_add.pngmoney delete money_delete.pngmoney dollar money_dollar.pngmoney euro money_euro.pngmoney pound money_pound.pngmoney yen money_yen.pngmonitor monitor.png
monitor add monitor_add.pngmonitor delete monitor_delete.pngmonitor edit monitor_edit.pngmonitor error monitor_error.pngmonitor go monitor_go.pngmonitor lightning monitor_lightning.pngmonitor link monitor_link.pngmouse mouse.pngmouse add mouse_add.pngmouse delete mouse_delete.pngmouse error mouse_error.pngmusic music.png
new new.pngnewspaper newspaper.pngnewspaper add newspaper_add.pngnewspaper delete newspaper_delete.pngnewspaper go newspaper_go.pngnewspaper link newspaper_link.pngnote note.pngnote add note_add.pngnote delete note_delete.pngnote edit note_edit.pngnote error note_error.pngnote go note_go.png
overlays overlays.pngpackage package.pngpackage add package_add.pngpackage delete package_delete.pngpackage go package_go.pngpackage green package_green.pngpackage link package_link.pngpage page.pngpage add page_add.pngpage attach page_attach.pngpage code page_code.pngpage copy page_copy.png
page delete page_delete.pngpage edit page_edit.pngpage error page_error.pngpage excel page_excel.pngpage find page_find.pngpage gear page_gear.pngpage go page_go.pngpage green page_green.pngpage key page_key.pngpage lightning page_lightning.pngpage link page_link.pngpage paintbrush page_paintbrush.png
page paste page_paste.pngpage red page_red.pngpage refresh page_refresh.pngpage save page_save.pngpage white page_white.pngpage white acrobat page_white_acrobat.pngpage white actionscript page_white_actionscript.pngpage white add page_white_add.pngpage white c page_white_c.pngpage white camera page_white_camera.pngpage white cd page_white_cd.pngpage white code page_white_code.png
page white code red page_white_code_red.pngpage white coldfusion page_white_coldfusion.pngpage white compressed page_white_compressed.pngpage white copy page_white_copy.pngpage white cplusplus page_white_cplusplus.pngpage white csharp page_white_csharp.pngpage white cup page_white_cup.pngpage white database page_white_database.pngpage white delete page_white_delete.pngpage white dvd page_white_dvd.pngpage white edit page_white_edit.pngpage white error page_white_error.png
page white excel page_white_excel.pngpage white find page_white_find.pngpage white flash page_white_flash.pngpage white freehand page_white_freehand.pngpage white gear page_white_gear.pngpage white get page_white_get.pngpage white go page_white_go.pngpage white h page_white_h.pngpage white horizontal page_white_horizontal.pngpage white key page_white_key.pngpage white lightning page_white_lightning.pngpage white link page_white_link.png
page white magnify page_white_magnify.pngpage white medal page_white_medal.pngpage white office page_white_office.pngpage white paint page_white_paint.pngpage white paintbrush page_white_paintbrush.pngpage white paste page_white_paste.pngpage white php page_white_php.pngpage white picture page_white_picture.pngpage white powerpoint page_white_powerpoint.pngpage white put page_white_put.pngpage white ruby page_white_ruby.pngpage white stack page_white_stack.png
page white star page_white_star.pngpage white swoosh page_white_swoosh.pngpage white text page_white_text.pngpage white text width page_white_text_width.pngpage white tux page_white_tux.pngpage white vector page_white_vector.pngpage white visualstudio page_white_visualstudio.pngpage white width page_white_width.pngpage white word page_white_word.pngpage white world page_white_world.pngpage white wrench page_white_wrench.pngpage white zip page_white_zip.png
page word page_word.pngpage world page_world.pngpaintbrush paintbrush.pngpaintcan paintcan.pngpalette palette.pngpaste plain paste_plain.pngpaste word paste_word.pngpencil pencil.pngpencil add pencil_add.pngpencil delete pencil_delete.pngpencil go pencil_go.pngphone phone.png
phone add phone_add.pngphone delete phone_delete.pngphone sound phone_sound.pngphoto photo.pngphoto add photo_add.pngphoto delete photo_delete.pngphoto link photo_link.pngphotos photos.pngpicture picture.pngpicture add picture_add.pngpicture delete picture_delete.pngpicture edit picture_edit.png
picture empty picture_empty.pngpicture error picture_error.pngpicture go picture_go.pngpicture key picture_key.pngpicture link picture_link.pngpicture save picture_save.pngpictures pictures.pngpilcrow pilcrow.pngpill pill.pngpill add pill_add.pngpill delete pill_delete.pngpill go pill_go.png
plugin plugin.pngplugin add plugin_add.pngplugin delete plugin_delete.pngplugin disabled plugin_disabled.pngplugin edit plugin_edit.pngplugin error plugin_error.pngplugin go plugin_go.pngplugin link plugin_link.pngprinter printer.pngprinter add printer_add.pngprinter delete printer_delete.pngprinter empty printer_empty.png
printer error printer_error.pngrainbow rainbow.pngreport report.pngreport add report_add.pngreport delete report_delete.pngreport disk report_disk.pngreport edit report_edit.pngreport go report_go.pngreport key report_key.pngreport link report_link.pngreport magnify report_magnify.pngreport picture report_picture.png
report user report_user.pngreport word report_word.pngresultset first resultset_first.pngresultset last resultset_last.pngresultset next resultset_next.pngresultset previous resultset_previous.pngrosette rosette.pngrss rss.pngrss add rss_add.pngrss delete rss_delete.pngrss go rss_go.pngrss valid rss_valid.png
ruby ruby.pngruby add ruby_add.pngruby delete ruby_delete.pngruby gear ruby_gear.pngruby get ruby_get.pngruby go ruby_go.pngruby key ruby_key.pngruby link ruby_link.pngruby put ruby_put.pngscript script.pngscript add script_add.pngscript code script_code.png
script code red script_code_red.pngscript delete script_delete.pngscript edit script_edit.pngscript error script_error.pngscript gear script_gear.pngscript go script_go.pngscript key script_key.pngscript lightning script_lightning.pngscript link script_link.pngscript palette script_palette.pngscript save script_save.pngserver server.png
server add server_add.pngserver chart server_chart.pngserver compressed server_compressed.pngserver connect server_connect.pngserver database server_database.pngserver delete server_delete.pngserver edit server_edit.pngserver error server_error.pngserver go server_go.pngserver key server_key.pngserver lightning server_lightning.pngserver link server_link.png
server uncompressed server_uncompressed.pngshading shading.pngshape align bottom shape_align_bottom.pngshape align center shape_align_center.pngshape align left shape_align_left.pngshape align middle shape_align_middle.pngshape align right shape_align_right.pngshape align top shape_align_top.pngshape flip horizontal shape_flip_horizontal.pngshape flip vertical shape_flip_vertical.pngshape group shape_group.pngshape handles shape_handles.png
shape move back shape_move_back.pngshape move backwards shape_move_backwards.pngshape move forwards shape_move_forwards.pngshape move front shape_move_front.pngshape rotate anticlockwise shape_rotate_anticlockwise.pngshape rotate clockwise shape_rotate_clockwise.pngshape square shape_square.pngshape square add shape_square_add.pngshape square delete shape_square_delete.pngshape square edit shape_square_edit.pngshape square error shape_square_error.pngshape square go shape_square_go.png
shape square key shape_square_key.pngshape square link shape_square_link.pngshape ungroup shape_ungroup.pngshield shield.pngshield add shield_add.pngshield delete shield_delete.pngshield go shield_go.pngsitemap sitemap.pngsitemap color sitemap_color.pngsound sound.pngsound add sound_add.pngsound delete sound_delete.png
sound low sound_low.pngsound mute sound_mute.pngsound none sound_none.pngspellcheck spellcheck.pngsport 8ball sport_8ball.pngsport basketball sport_basketball.pngsport football sport_football.pngsport golf sport_golf.pngsport raquet sport_raquet.pngsport shuttlecock sport_shuttlecock.pngsport soccer sport_soccer.pngsport tennis sport_tennis.png
star star.pngstatus away status_away.pngstatus busy status_busy.pngstatus offline status_offline.pngstatus online status_online.pngstop stop.pngstyle style.pngstyle add style_add.pngstyle delete style_delete.pngstyle edit style_edit.pngstyle go style_go.pngsum sum.png
tab tab.pngtab add tab_add.pngtab delete tab_delete.pngtab edit tab_edit.pngtab go tab_go.pngtable table.pngtable add table_add.pngtable delete table_delete.pngtable edit table_edit.pngtable error table_error.pngtable gear table_gear.pngtable go table_go.png
table key table_key.pngtable lightning table_lightning.pngtable link table_link.pngtable multiple table_multiple.pngtable refresh table_refresh.pngtable relationship table_relationship.pngtable row delete table_row_delete.pngtable row insert table_row_insert.pngtable save table_save.pngtable sort table_sort.pngtag tag.pngtag blue tag_blue.png
tag blue add tag_blue_add.pngtag blue delete tag_blue_delete.pngtag blue edit tag_blue_edit.pngtag green tag_green.pngtag orange tag_orange.pngtag pink tag_pink.pngtag purple tag_purple.pngtag red tag_red.pngtag yellow tag_yellow.pngtelephone telephone.pngtelephone add telephone_add.pngtelephone delete telephone_delete.png
telephone edit telephone_edit.pngtelephone error telephone_error.pngtelephone go telephone_go.pngtelephone key telephone_key.pngtelephone link telephone_link.pngtelevision television.pngtelevision add television_add.pngtelevision delete television_delete.pngtext align center text_align_center.pngtext align justify text_align_justify.pngtext align left text_align_left.pngtext align right text_align_right.png
text allcaps text_allcaps.pngtext bold text_bold.pngtext columns text_columns.pngtext dropcaps text_dropcaps.pngtext heading 1 text_heading_1.pngtext heading 2 text_heading_2.pngtext heading 3 text_heading_3.pngtext heading 4 text_heading_4.pngtext heading 5 text_heading_5.pngtext heading 6 text_heading_6.pngtext horizontalrule text_horizontalrule.pngtext indent text_indent.png
text indent remove text_indent_remove.pngtext italic text_italic.pngtext kerning text_kerning.pngtext letter omega text_letter_omega.pngtext letterspacing text_letterspacing.pngtext linespacing text_linespacing.pngtext list bullets text_list_bullets.pngtext list numbers text_list_numbers.pngtext lowercase text_lowercase.pngtext padding bottom text_padding_bottom.pngtext padding left text_padding_left.pngtext padding right text_padding_right.png
text padding top text_padding_top.pngtext replace text_replace.pngtext signature text_signature.pngtext smallcaps text_smallcaps.pngtext strikethrough text_strikethrough.pngtext subscript text_subscript.pngtext superscript text_superscript.pngtext underline text_underline.pngtext uppercase text_uppercase.pngtextfield textfield.pngtextfield add textfield_add.pngtextfield delete textfield_delete.png
textfield key textfield_key.pngtextfield rename textfield_rename.pngthumb down thumb_down.pngthumb up thumb_up.pngtick tick.pngtime time.pngtime add time_add.pngtime delete time_delete.pngtime go time_go.pngtimeline marker timeline_marker.pngtransmit transmit.pngtransmit add transmit_add.png
transmit blue transmit_blue.pngtransmit delete transmit_delete.pngtransmit edit transmit_edit.pngtransmit error transmit_error.pngtransmit go transmit_go.pngtux tux.pnguser user.pnguser add user_add.pnguser comment user_comment.pnguser delete user_delete.pnguser edit user_edit.pnguser female user_female.png
user go user_go.pnguser gray user_gray.pnguser green user_green.pnguser orange user_orange.pnguser red user_red.pnguser suit user_suit.pngvcard vcard.pngvcard add vcard_add.pngvcard delete vcard_delete.pngvcard edit vcard_edit.pngvector vector.pngvector add vector_add.png
vector delete vector_delete.pngwand wand.pngweather clouds weather_clouds.pngweather cloudy weather_cloudy.pngweather lightning weather_lightning.pngweather rain weather_rain.pngweather snow weather_snow.pngweather sun weather_sun.pngwebcam webcam.pngwebcam add webcam_add.pngwebcam delete webcam_delete.pngwebcam error webcam_error.png
world world.pngworld add world_add.pngworld delete world_delete.pngworld edit world_edit.pngworld go world_go.pngworld link world_link.pngwrench wrench.pngwrench orange wrench_orange.pngxhtml xhtml.pngxhtml add xhtml_add.pngxhtml delete xhtml_delete.pngxhtml go xhtml_go.png
xhtml valid xhtml_valid.pngzoom zoom.pngzoom in zoom_in.pngzoom out zoom_out.png        
+

+ + + +
+ + + + + + + + + \ No newline at end of file diff --git a/html/images/readme.txt b/html/images/readme.txt new file mode 100755 index 0000000000..400a64d785 --- /dev/null +++ b/html/images/readme.txt @@ -0,0 +1,22 @@ +Silk icon set 1.3 + +_________________________________________ +Mark James +http://www.famfamfam.com/lab/icons/silk/ +_________________________________________ + +This work is licensed under a +Creative Commons Attribution 2.5 License. +[ http://creativecommons.org/licenses/by/2.5/ ] + +This means you may use it for any purpose, +and make any changes you like. +All I ask is that you include a link back +to this page in your credits. + +Are you using this icon set? Send me an email +(including a link or picture if available) to +mjames@gmail.com + +Any other questions about this icon set please +contact mjames@gmail.com \ No newline at end of file diff --git a/html/images/shade.gif b/html/images/shade.gif new file mode 100755 index 0000000000..2dd62496ae Binary files /dev/null and b/html/images/shade.gif differ diff --git a/html/images/shadeactive.gif b/html/images/shadeactive.gif new file mode 100755 index 0000000000..a329e63816 Binary files /dev/null and b/html/images/shadeactive.gif differ diff --git a/html/images/sites.png b/html/images/sites.png new file mode 100755 index 0000000000..426ea907e1 Binary files /dev/null and b/html/images/sites.png differ diff --git a/html/images/small/add.png b/html/images/small/add.png new file mode 100755 index 0000000000..d3e570d0f0 Binary files /dev/null and b/html/images/small/add.png differ diff --git a/html/images/small/cog.png b/html/images/small/cog.png new file mode 100755 index 0000000000..a2aa786fda Binary files /dev/null and b/html/images/small/cog.png differ diff --git a/html/images/small/dns.png b/html/images/small/dns.png new file mode 100755 index 0000000000..85dbfe46bf Binary files /dev/null and b/html/images/small/dns.png differ diff --git a/html/images/small/graphs.png b/html/images/small/graphs.png new file mode 100755 index 0000000000..5871920603 Binary files /dev/null and b/html/images/small/graphs.png differ diff --git a/html/images/small/help.png b/html/images/small/help.png new file mode 100755 index 0000000000..f914d0d290 Binary files /dev/null and b/html/images/small/help.png differ diff --git a/html/images/small/home.png b/html/images/small/home.png new file mode 100755 index 0000000000..e72800a1d6 Binary files /dev/null and b/html/images/small/home.png differ diff --git a/html/images/small/important.png b/html/images/small/important.png new file mode 100755 index 0000000000..1e3bbb311b Binary files /dev/null and b/html/images/small/important.png differ diff --git a/html/images/small/info.png b/html/images/small/info.png new file mode 100755 index 0000000000..8d10a16936 Binary files /dev/null and b/html/images/small/info.png differ diff --git a/html/images/small/internet.png b/html/images/small/internet.png new file mode 100755 index 0000000000..d2ee2389af Binary files /dev/null and b/html/images/small/internet.png differ diff --git a/html/images/small/monitor.png b/html/images/small/monitor.png new file mode 100755 index 0000000000..bf9cf90d4c Binary files /dev/null and b/html/images/small/monitor.png differ diff --git a/html/images/small/refresh.png b/html/images/small/refresh.png new file mode 100755 index 0000000000..3235e72564 Binary files /dev/null and b/html/images/small/refresh.png differ diff --git a/html/images/small/screens.png b/html/images/small/screens.png new file mode 100755 index 0000000000..cd7b11f6b9 Binary files /dev/null and b/html/images/small/screens.png differ diff --git a/html/images/small/server.png b/html/images/small/server.png new file mode 100755 index 0000000000..5c442fa35e Binary files /dev/null and b/html/images/small/server.png differ diff --git a/html/images/small/users.png b/html/images/small/users.png new file mode 100755 index 0000000000..0bdf797176 Binary files /dev/null and b/html/images/small/users.png differ diff --git a/html/images/small/wiki.png b/html/images/small/wiki.png new file mode 100755 index 0000000000..e12717effc Binary files /dev/null and b/html/images/small/wiki.png differ diff --git a/html/images/small/world.png b/html/images/small/world.png new file mode 100755 index 0000000000..07a756888c Binary files /dev/null and b/html/images/small/world.png differ diff --git a/html/images/status.png b/html/images/status.png new file mode 100755 index 0000000000..3b9c725ed1 Binary files /dev/null and b/html/images/status.png differ diff --git a/html/images/sub2a.gif b/html/images/sub2a.gif new file mode 100755 index 0000000000..2de1089ab8 Binary files /dev/null and b/html/images/sub2a.gif differ diff --git a/html/images/tabs/norm_left.gif b/html/images/tabs/norm_left.gif new file mode 100755 index 0000000000..f3e3679a17 Binary files /dev/null and b/html/images/tabs/norm_left.gif differ diff --git a/html/images/tabs/norm_left_on.gif b/html/images/tabs/norm_left_on.gif new file mode 100755 index 0000000000..f9952e86cc Binary files /dev/null and b/html/images/tabs/norm_left_on.gif differ diff --git a/html/images/tabs/norm_right.gif b/html/images/tabs/norm_right.gif new file mode 100755 index 0000000000..4b27fc361f Binary files /dev/null and b/html/images/tabs/norm_right.gif differ diff --git a/html/images/tabs/norm_right_on.gif b/html/images/tabs/norm_right_on.gif new file mode 100755 index 0000000000..fc8ac15a15 Binary files /dev/null and b/html/images/tabs/norm_right_on.gif differ diff --git a/html/images/transit.png b/html/images/transit.png new file mode 100755 index 0000000000..368df2f01b Binary files /dev/null and b/html/images/transit.png differ diff --git a/html/images/txt.gif b/html/images/txt.gif new file mode 100755 index 0000000000..f67d54f7b2 Binary files /dev/null and b/html/images/txt.gif differ diff --git a/html/images/wiki.png b/html/images/wiki.png new file mode 100755 index 0000000000..82ff766092 Binary files /dev/null and b/html/images/wiki.png differ diff --git a/html/includes/.confirm_login.php.swp b/html/includes/.confirm_login.php.swp new file mode 100644 index 0000000000..e542b03859 Binary files /dev/null and b/html/includes/.confirm_login.php.swp differ diff --git a/html/includes/.login.inc.php.swo b/html/includes/.login.inc.php.swo new file mode 100644 index 0000000000..e4331bcd51 Binary files /dev/null and b/html/includes/.login.inc.php.swo differ diff --git a/html/includes/.login.inc.php.swp b/html/includes/.login.inc.php.swp new file mode 100644 index 0000000000..f8e57a0a5e Binary files /dev/null and b/html/includes/.login.inc.php.swp differ diff --git a/html/includes/add-srv.inc b/html/includes/add-srv.inc new file mode 100644 index 0000000000..e6943e56cd --- /dev/null +++ b/html/includes/add-srv.inc @@ -0,0 +1,16 @@ +" + + +?> diff --git a/html/includes/ajaxtabs.inc b/html/includes/ajaxtabs.inc new file mode 100644 index 0000000000..051c428d68 --- /dev/null +++ b/html/includes/ajaxtabs.inc @@ -0,0 +1,9 @@ + diff --git a/html/includes/authenticate.inc b/html/includes/authenticate.inc new file mode 100644 index 0000000000..02db0f8182 --- /dev/null +++ b/html/includes/authenticate.inc @@ -0,0 +1,36 @@ + diff --git a/html/includes/dev-data-linux.inc b/html/includes/dev-data-linux.inc new file mode 100644 index 0000000000..7ee3c14ab3 --- /dev/null +++ b/html/includes/dev-data-linux.inc @@ -0,0 +1,14 @@ + + Operating System$device[os] $device[version] ($device[features]) + Hardware $device[hardware] + Uptime " . formatuptime($device[uptime]) . " + +"); + + +?> diff --git a/html/includes/dev-edit.inc b/html/includes/dev-edit.inc new file mode 100644 index 0000000000..4dd7eb2fe6 --- /dev/null +++ b/html/includes/dev-edit.inc @@ -0,0 +1,137 @@ + "5") { + include("includes/edit-host.inc"); + } +} + +if($_POST['addsrv']) { + if($userlevel > "5") { + include("includes/add-srv.inc"); + } +} + + +$device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE `id` = '$_GET[id]'")); +$descr = $device['purpose']; + +if($updated) { print_message("Device Settings Saved"); } + +if($device['type'] == 'server') { $server_select = "selected"; } +if($device['type'] == 'network') { $network_select = "selected"; } +if($device['type'] == 'firewall') { $firewall_select = "selected"; } +if($device['type'] == 'workstation') { $workstation_select = "selected"; } +if($device['type'] == 'other') { $other_select = "selected"; } + +echo(" +
+ +

Edit Device

+ +
+ + + + + + + + + + + + + + + + + + + + + + +
Description
+ Type + + +
Disable
Ignore
Apache
Temp
+ + +
"); + +$srvdir = $installdir . "/includes/services/"; + +if ($handle = opendir($srvdir)) { + while (false !== ($file = readdir($handle))) { + if ($file != "." && $file != "..") { + $services[] = $file; + $servicesform .= ""; + } + } + closedir($handle); +} + +echo(" + +

Add Service

+ +
+ + + + + + + + + + + + + + + + + + +
+ Type + + +
Description
IP Address
Parameters
+ + +
"); + +echo("
"); + +} + diff --git a/html/includes/dev-events.inc b/html/includes/dev-events.inc new file mode 100644 index 0000000000..81818272a8 --- /dev/null +++ b/html/includes/dev-events.inc @@ -0,0 +1,15 @@ +"); + +while($entry = mysql_fetch_array($data)) { + +include("includes/print-event.inc"); + +} +echo(""); + + ?> diff --git a/html/includes/dev-graphs.inc b/html/includes/dev-graphs.inc new file mode 100644 index 0000000000..9a7f7c2df3 --- /dev/null +++ b/html/includes/dev-graphs.inc @@ -0,0 +1,189 @@ +"); + + switch ($device['os']) { + case "ProCurve": + echo("
Processor Utilisation
"); + $graph_type = "cpu"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
Memory Usage
"); + $graph_type = "mem"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
Device Uptime
"); + $graph_type = "uptime"; include ("includes/print-device-graph.php"); break; + echo("
"); + + break; + case "Windows": + $graph_type = "cpu"; + include ("includes/print-device-graph.php"); + + $memgraph = memgraphWin ($device[hostname] . "-mem.rrd", $device[hostname] . "-mem.png", $day, $now, 335, 100); + $loadgraph = loadgraphWin ($device[hostname] . "-load.rrd", $device[hostname] . "-load.png", $day, $now, 335, 100); + $cpugraphm = cpugraphWin ($device[hostname] . "-cpu.rrd", $device[hostname] . "-cpu-m.png", $month, $now, 335, 100); + $memgraphm = memgraphWin ($device[hostname] . "-mem.rrd", $device[hostname] . "-mem-m.png", $month, $now, 335, 100); + $loadgraphm = loadgraphWin ($device[hostname] . "-load.rrd", $device[hostname] . "-load-m.png", $month, $now, 335, 100); + $usersgraph = usersgraphWin ($device[hostname] . "-sys.rrd", $device[hostname] . "-users.png", $day, $now, 335, 100); + $usersgraphm = usersgraphWin ($device[hostname] . "-sys.rrd", $device[hostname] . "-users-m.png", $month, $now, 335, 100); + $procsgraph = procsgraphWin ($device[hostname] . "-sys.rrd", $device[hostname] . "-procs.png", $day, $now, 335, 100); + $procsgraphm = procsgraphWin ($device[hostname] . "-sys.rrd", $device[hostname] . "-procs-m.png", $month, $now, 335, 100); + break; + case "FreeBSD": + case "NetBSD": + case "Linux": + case "m0n0wall": + case "Voswall": + case "DragonFly": + case "OpenBSD": + case "pfSense": + echo("
Processor Utilisation
"); + $graph_type = "cpu"; include ("includes/print-device-graph.php"); + echo("
"); + if($device[os] == "m0n0wall" || $device[os] == "pfSense" || $device[os] == "Voswall" || $device[monowall]) { + echo("
Device Uptime
"); + $graph_type = "uptime"; include ("includes/print-device-graph.php"); break; + echo("
"); + } + if($device['os'] != "NetBSD") { + echo("
Memory Utilisation
"); + $graph_type = "mem"; include ("includes/print-device-graph.php"); + echo("
"); + } + + if(mysql_result(mysql_query("SELECT count(storage_id) FROM storage WHERE host_id = '$device[id]'"),0)) { + echo("
Storage
"); + $graph_type = "unixfs"; include ("includes/print-device-graph.php"); + echo("
"); + } + + if(mysql_result(mysql_query("SELECT count(*) FROM temperature WHERE temp_host = '$device[id]'"),0)) { + echo("
Temperatures
"); + $graph_type = "temp"; include ("includes/print-device-graph.php"); + echo("
"); + } + echo("
IP Statistics
"); + $graph_type = "ip_graph"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
TCP Statistics
"); + $graph_type = "tcp_graph"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
UDP Statistics
"); + $graph_type = "udp_graph"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
ICMP Statistics
"); + $graph_type = "icmp_graph"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
System Load
"); + $graph_type = "load"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
Users Logged On
"); + $graph_type = "users"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
Running Processes
"); + $graph_type = "procs"; include ("includes/print-device-graph.php"); + echo("
"); + if($device[postfix] == '1') { + echo("
Postfix Mail Statistics
"); + $graph_type = "postfix"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
Postfix Mail Error Statistics
"); + $graph_type = "postfixerrors"; include ("includes/print-device-graph.php"); + echo("
"); + } + if($device[courier] == '1') { + echo("
Postfix Mail Statistics
"); + $graph_type = "courier"; include ("includes/print-device-graph.php"); + echo("
"); + } + if($device[apache] == '1') { + echo("
Apache Hits
"); + $graph_type = "apachehits"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
Apache Traffic
"); + $graph_type = "apachebits"; include ("includes/print-device-graph.php"); + echo("
"); + } + echo("
Device Uptime
"); + $graph_type = "uptime"; include ("includes/print-device-graph.php"); + echo("
"); + break; + case "IOS": + echo("
CPU Usage
"); + $graph_type = "cpu"; include ("includes/print-device-graph.php"); + echo("
Memory Usage
"); + echo("
"); + $graph_type = "mem"; include ("includes/print-device-graph.php"); + echo("
"); + if(mysql_result(mysql_query("SELECT count(*) FROM temperature WHERE temp_host = '$device[id]'"),0)) { + echo("
Temperatures
"); + $graph_type = "temp"; include ("includes/print-device-graph.php"); + echo("
"); + } + echo("
IP Statistics
"); + $graph_type = "ip_graph"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
TCP Statistics
"); + $graph_type = "tcp_graph"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
UDP Statistics
"); + $graph_type = "udp_graph"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
ICMP Statistics
"); + $graph_type = "icmp_graph"; include ("includes/print-device-graph.php"); + echo("
"); + echo("
Uptime
"); + $graph_type = "uptime"; include ("includes/print-device-graph.php"); + break; + case "Snom": + echo("
Calls
"); + $graph_type = "calls"; include ("includes/print-device-graph.php"); + } + + if($memgraph) { + echo(" "); + } + if($storagegraph) { + echo("$storagegraph"); + } + if($loadgraph) { + echo(" "); + } + if($tempgraph) { + echo(" "); + } + if($mailsgraph) { + echo(" "); + } + if($mailerrorgraph) { + echo(" "); + } + if($couriergraph) { + echo(" "); + } + if($ahitsgraph) { + echo(" "); + } + if($abitsgraph) { + echo(" "); + } + if($usersgraph) { + echo(" "); + } + if($procsgraph) { + echo(" "); + } + if($uptimegraph) { + echo(" "); + } + echo(""); +} + +?> + diff --git a/html/includes/dev-ifgraphs.inc b/html/includes/dev-ifgraphs.inc new file mode 100644 index 0000000000..ca12154d56 --- /dev/null +++ b/html/includes/dev-ifgraphs.inc @@ -0,0 +1,7 @@ + diff --git a/html/includes/dev-ifs.inc b/html/includes/dev-ifs.inc new file mode 100644 index 0000000000..ba0f2cf856 --- /dev/null +++ b/html/includes/dev-ifs.inc @@ -0,0 +1,13 @@ +"); + $i = "1"; + $interface_query = mysql_query("select * from interfaces WHERE host = '$_GET[id]' ORDER BY 'ifIndex'"); + while($interface = mysql_fetch_array($interface_query)) { + include("includes/print-interface.inc"); + } + echo("
"); + +?> diff --git a/html/includes/dev-overview.inc b/html/includes/dev-overview.inc new file mode 100644 index 0000000000..c6b71620ef --- /dev/null +++ b/html/includes/dev-overview.inc @@ -0,0 +1,123 @@ + + "); + + +if(file_exists("includes/dev-data-" . strtolower($device[os]) . ".inc")) { + echo("
"); + echo("

Device Data

"); + include("includes/dev-data-" . strtolower($device[os]) . ".inc"); + echo("
"); +} + + +echo("
"); + +$query = "SELECT *,DATE_FORMAT(datetime, '%d/%b/%y %T') as humandate FROM `eventlog` WHERE `host` = '$_GET[id]' ORDER BY `datetime` DESC LIMIT 0,10"; +$data = mysql_query($query); + +echo("

Recent Events

+"); + +while($entry = mysql_fetch_array($data)) { + +include("includes/print-event.inc"); + +} +echo("
"); + +echo(""); + +if($interfaces['total']) { + + echo("
"); + echo("

Interfaces

"); + +echo(" + + + + + + +
$interfaces[total] $interfaces[up] $interfaces[down] $interfaces[disabled]
"); + + echo("
"); + + $sql = "SELECT * FROM interfaces WHERE host = '$id'"; + $query = mysql_query($sql); + while($data = mysql_fetch_array($query)) { + $up_admin = $data['up_admin']; + $up = $data['up']; + if ($up_admin == "down") { $status = "grey"; } + if ($up_admin == "up" && $up == "down") { $status = "red"; } + if ($up_admin == "up" && $up == "up") { $status = "blue"; } + echo("$ifbreak" . generateiflink($data, makeshortif(strtolower($data['if']))) . ""); + $ifbreak = ", "; + } + unset($break); + echo("
"); + + echo("
"); + +} + +if($services['total']) { + + echo("
"); + echo("

Services

"); + +echo(" + + + + + + +
$services[total] $services[up] $services[down] $services[disabled]
"); + + + + echo("
"); + + $sql = "SELECT * FROM services WHERE service_host = '$id' ORDER BY service_type"; + $query = mysql_query($sql); + while($data = mysql_fetch_array($query)) { + if ($data[service_status] == "0" && $data[service_ignore] == "1") { $status = "grey"; } + if ($data[service_status] == "1" && $data[service_ignore] == "1") { $status = "green"; } + if ($data[service_status] == "0" && $data[service_ignore] == "0") { $status = "red"; } + if ($data[service_status] == "1" && $data[service_ignore] == "0") { $status = "blue"; } + echo("$break" . strtolower($data[service_type]) . ""); + $break = ", "; + } + + echo("
"); + +} + + + +echo(""); + +?> diff --git a/html/includes/dev-srv.inc b/html/includes/dev-srv.inc new file mode 100644 index 0000000000..507a78ebdd --- /dev/null +++ b/html/includes/dev-srv.inc @@ -0,0 +1,24 @@ + '0') { + + echo("
"); + $i = "1"; + $service_query = mysql_query("select * from services WHERE service_host = '$_GET[id]' ORDER BY service_type"); + while($service = mysql_fetch_array($service_query)) { + + include("includes/print-service.inc"); + } + echo("
"); + +} else { + + echo("No Services"); + +} + + +?> + diff --git a/html/includes/dev-syslog.inc b/html/includes/dev-syslog.inc new file mode 100644 index 0000000000..ea740df5cc --- /dev/null +++ b/html/includes/dev-syslog.inc @@ -0,0 +1,15 @@ +"); + +while($entry = mysql_fetch_array($data)) { + +include("includes/print-syslog.inc"); + +} +echo(""); + + ?> diff --git a/html/includes/device-header.inc b/html/includes/device-header.inc new file mode 100644 index 0000000000..e7f627ca33 --- /dev/null +++ b/html/includes/device-header.inc @@ -0,0 +1,21 @@ + + $image + " . generatedevicelink($device) . " +
$device[purpose] + + "); + +?> diff --git a/html/includes/edit-host.inc b/html/includes/edit-host.inc new file mode 100644 index 0000000000..0b65bede20 --- /dev/null +++ b/html/includes/edit-host.inc @@ -0,0 +1,16 @@ + diff --git a/html/includes/hostbox-old.inc b/html/includes/hostbox-old.inc new file mode 100644 index 0000000000..63dba2eba3 --- /dev/null +++ b/html/includes/hostbox-old.inc @@ -0,0 +1,32 @@ +"; } + + echo(""); + echo(" + + + + + + "); + + echo("
$image$device[hostname] +
$device[hardware]
$device[os] $device[version]
+ $device[features]
$device[location]
+ Up " . formatUptime($device[uptime]) ."
"); + + if($_GET['page'] == 'device') { + if($_GET['graphs'] == 'yes') { + echo("

+ Hide Graphs

"); + } else { + echo("

+ Show Graphs

"); + } + } + +echo("
"); + +?> diff --git a/html/includes/hostbox.inc b/html/includes/hostbox.inc new file mode 100644 index 0000000000..41ca28b546 --- /dev/null +++ b/html/includes/hostbox.inc @@ -0,0 +1,30 @@ + + $image + " . generatedevicelink($device) . " +
$device[purpose] + $device[os]
+ $device[version] + $device[hardware]
+ $device[features] + " . formatUptime($device[uptime]) . " +
+ $device[location] + + + "); + +?> diff --git a/html/includes/ifbox.inc b/html/includes/ifbox.inc new file mode 100644 index 0000000000..2b06ec1858 --- /dev/null +++ b/html/includes/ifbox.inc @@ -0,0 +1,22 @@ +$inf

"); + if($ifalias && $ifalias != "") { echo("$ifalias
"); } + if($iftype && $iftype != "") { echo("$iftype "); + if($mac && $mac != "") { echo("$mac
"); + } else { echo("
"); } + } + + if($interface[ifType] != "softwareLoopback") { + if($speed == '0') { $speed = "0bps"; } + echo("$speed"); + if($interface[ifDuplex] != unknown) { echo(" / $interface[ifDuplex]-duplex"); } + if($interface[ifMtu] && $interface[ifMtu] != "") { echo(" / $interface[ifMtu]MTU"); } + echo(""); + } + + echo ("$status"); + +?> diff --git a/html/includes/print-device-graph.php b/html/includes/print-device-graph.php new file mode 100644 index 0000000000..5a6d1b3c23 --- /dev/null +++ b/html/includes/print-device-graph.php @@ -0,0 +1,25 @@ +', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + +?> + diff --git a/html/includes/print-event-short.inc b/html/includes/print-event-short.inc new file mode 100644 index 0000000000..ad5f0d1736 --- /dev/null +++ b/html/includes/print-event-short.inc @@ -0,0 +1,35 @@ + +"; } + + + echo(" + + + $entry[humandate] + "); + $if['id'] = $entry[interface]; + $if['if'] = $interface; + echo(" + " . generateiflink($if) . " + + $icon + + $entry[message] + + + "); + + + + +?> diff --git a/html/includes/print-event.inc b/html/includes/print-event.inc new file mode 100644 index 0000000000..c3f76890a5 --- /dev/null +++ b/html/includes/print-event.inc @@ -0,0 +1,43 @@ + +"; } + + + echo(" + + + $entry[humandate] + "); + if(!$_GET[id] && !$overview) { + $dev['id'] = $entry['host']; + $dev['hostname'] = $hostname; + echo(" + " . generatedevicelink($dev) . " + "); + } + + $if['id'] = $entry[interface]; + $if['if'] = $interface; + echo(" + " . generateiflink($if) . " + + $icon + + $entry[message] + + + "); + + + + +?> diff --git a/html/includes/print-interface-graphs.php b/html/includes/print-interface-graphs.php new file mode 100644 index 0000000000..3d84aa81a6 --- /dev/null +++ b/html/includes/print-interface-graphs.php @@ -0,0 +1,24 @@ +', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + echo("', LEFT);\" onmouseout=\"return nd();\"> + "); + +?> diff --git a/html/includes/print-interface.inc b/html/includes/print-interface.inc new file mode 100644 index 0000000000..105505b3de --- /dev/null +++ b/html/includes/print-interface.inc @@ -0,0 +1,102 @@ +";} + if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; } + $graph_url = "graph.php?if=$if_id&from=$twoday&to=$now&width=400&height=120&type=bits"; + echo(" + + ');\" onmouseout=\"return nd();\" + class='$ifclass' href='?page=interface&id=$interface[id]'> + $i. $inf +
$ifname"); + unset ($break); + $iftype = fixiftype($interface[ifType]); + if(!$dographs) { + $ipdata = mysql_query("SELECT * FROM `ipaddr` WHERE `interface_id` = '$interface[id]'"); + while($ip = mysql_fetch_Array($ipdata)) { + echo("$break $ip[addr]/$ip[cidr]"); + $break = " "; + } + echo(""); + echo(""); + if($speed && $speed != "") { echo("$speed"); } + echo(""); + if($iftype && $iftype != "") { echo("$iftype"); } else { echo("-"); } + echo(""); + if($mac && $mac != "") { echo("$mac"); } else { echo("-"); } + echo(""); + if($interface[ifMtu] && $interface[ifMtu] != "") { echo("MTU $interface[ifMtu]"); } else { echo("-"); } + +# if($interface[ifDuplex] != unknown) { echo("Duplex $interface[ifDuplex]"); } else { echo("-"); } +} + +echo(""); + echo(""); + if ( strpos($inf, "oopback") === false && !$dographs) { + $link_query = mysql_query("select I.if, D.hostname, D.id AS dev_id, I.id from links AS L, interfaces AS I, devices AS D WHERE L.src_if = '$if_id' AND L.dst_if = I.id AND I.host = D.id"); + while($link = mysql_fetch_array($link_query)) { + echo("Directly Connected " . generateiflink($link) . " on " . generatedevicelink($link) . "
"); + $br = "
"; + } + unset($br); + $adj_sql = "SELECT * FROM networks AS N, interfaces AS I, adjacencies AS A "; + $adj_sql = $adj_sql . "WHERE I.id = A.interface_id AND A.network_id = N.id "; + $adj_sql = $adj_sql . "AND I.id = '$if_id'"; + $adj_query = mysql_query("$adj_sql"); + while($adjs = mysql_fetch_array($adj_query)) { + $network_id = $adjs['network_id']; + $newsql = "SELECT *, I.id AS iid, D.id AS did FROM adjacencies AS A, networks as N, interfaces as I, devices as D "; + $newsql = $newsql . "WHERE N.id = '$network_id' AND A.network_id = N.id AND I.id = A.interface_id AND D.id = I.host "; + $newsql = $newsql . "AND D.id != '$device[id]' AND I.if NOT LIKE '%loopback%' GROUP BY D.id ORDER BY D.hostname"; + $new_query = mysql_query($newsql); + while($new = mysql_fetch_array($new_query)) { + if ($new['status'] == '0') { $class = "red"; } else { $class = "blue"; } + if ($new['ignore'] == '1') { + $class = "grey"; + if ($new['status'] == '1') { $class = "green"; } + } + $this_ifid = $new['iid']; + $this_hostid = $new['did']; + $this_hostname = $new['hostname']; + $this_ifname = fixifName($new['if']); + $wq = mysql_query("select count(*) FROM links WHERE dst_if = '$this_ifid' AND src_if = $if_id;"); + if (@mysql_result($wq, 0) == '0' && $this_hostname != $hostname) { + $graph_url = "graph.php?if=$this_ifid&from=$twoday&to=$now&width=400&height=120&type=bits"; + echo("$br  Same Subnet" . generateiflink($new) . " on " . generatedevicelink($new)); + $br = "
"; + } + } + } + unset($br); + } + + echo(""); + + // If we're showing graphs, generate the graph and print the img tags + if($dographs && is_file("rrd/" . $hostname . ".". $ifIndex . ".rrd")) { + $daily_traffic = "graph.php?if=$if_id&type=bits&from=$day&to=$now&width=210&height=100"; + $weekly_traffic = "graph.php?if=$if_id&type=bits&from=$week&to=$now&width=210&height=100"; + $monthly_traffic = "graph.php?if=$if_id&type=bits&from=$month&to=$now&width=210&height=100"; + $yearly_traffic = "graph.php?if=$if_id&type=bits&from=$year&to=$now&width=210&height=100"; + + echo(""); + echo(" "); + echo(" "); + echo(""); + } + + + + $i++; + + +?> diff --git a/html/includes/print-menubar.php b/html/includes/print-menubar.php new file mode 100644 index 0000000000..6e59475125 --- /dev/null +++ b/html/includes/print-menubar.php @@ -0,0 +1,118 @@ + + + diff --git a/html/includes/print-service.inc b/html/includes/print-service.inc new file mode 100644 index 0000000000..f6b955f9df --- /dev/null +++ b/html/includes/print-service.inc @@ -0,0 +1,53 @@ +$service_type"; + } elseif ($service[service_status] == '1') {$status = "$service_type"; + } elseif ($service[service_status] == '2') {$status = "$service_type";} + + $message = trim($service[service_message]); + $message = str_replace("\n", "
", $message); + + $since = time() - $service[service_changed]; + $since = formatUptime($since); + + if($service[service_checked]) { + $checked = time() - $service[service_checked]; + $checked = formatUptime($checked); + } else { $checked = "Never"; } + + + echo(" + $service[service_id]."); + +if($device_id) { + if(!$samehost) { + $device[id] = $device_id; + $device[hostname] = $device_hostname; + echo("" . generatedevicelink($device) . ""); + } else { + echo(""); + } +} + +echo(" + + $status + + + $since + + + $message + + "); + + $i++; + + +?> diff --git a/html/includes/print-syslog.inc b/html/includes/print-syslog.inc new file mode 100644 index 0000000000..e9cf49f50a --- /dev/null +++ b/html/includes/print-syslog.inc @@ -0,0 +1,35 @@ + +"; } + + + echo(" + + + $entry[datetime] + + + $entry[priority] + + + $entry[program] + + + $entry[msg] + + + "); + + + + +?> diff --git a/html/includes/publicnav.inc b/html/includes/publicnav.inc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/html/includes/topnav.inc b/html/includes/topnav.inc new file mode 100644 index 0000000000..1a8a7da024 --- /dev/null +++ b/html/includes/topnav.inc @@ -0,0 +1,58 @@ + + + + + + "); + echo(""); + echo(""); + echo(""); + echo(""); + echo(""); + ?> + + + + + +
Devices : + $devices[count] + ( $devices[up] up + $devices[down] down + $devices[disabled] ignored ) +
Interfaces : + $interfaces[count] + ( $interfaces[up] up + $interfaces[down] down + $interfaces[disabled] disabled ) +
Services : + $services[count] + ( $services[up] up + $services[down] down + $services[disabled] ignored ) +
+
diff --git a/html/index.php b/html/index.php new file mode 100755 index 0000000000..0e3543b47f --- /dev/null +++ b/html/index.php @@ -0,0 +1,114 @@ + + + + + + <?php echo("$page_title"); ?> + + + + + + + + +
+
+ + + + +
+ $_SESSION[username] (Logout)"); + } else { + echo("Not logged in!"); + } + ?> +
+
+ + + +");} ?> + +
+ + +
+
+
+ +
+
+
+
+
+
Generated in $gentime seconds +
Project Observer $observer_version © 2006-2007 Adam Armstrong +
Development Sponsored by Vostron."); + +?> + + + diff --git a/html/js/Mini/overlib_anchor_mini.js b/html/js/Mini/overlib_anchor_mini.js new file mode 100644 index 0000000000..c12a034dfc --- /dev/null +++ b/html/js/Mini/overlib_anchor_mini.js @@ -0,0 +1,98 @@ +//\///// +//\ overLIB Anchor Plugin +//\ This file requires overLIB 4.10 or later. +//\ +//\ overLIB 4.10 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2004. All rights reserved. +//\ Contributors are listed on the homepage. +//\ See http://www.bosrup.com/web/overlib/ for details. +//\///// +//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! +if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Anchor Plugin.');else{registerCommands('anchor,anchorx,anchory,noanchorwarn,anchoralign'); +if(typeof ol_anchor=='undefined')var ol_anchor='';if(typeof ol_anchorx=='undefined')var ol_anchorx=0;if(typeof ol_anchory=='undefined')var ol_anchory=0;if(typeof ol_noanchorwarn=='undefined')var ol_noanchorwarn=1;if(typeof ol_anchoralign=='undefined')var ol_anchoralign='UL'; +var o3_anchor="",o3_anchorx=0,o3_anchory=0,o3_noanchorwarn=1,o3_anchoralign='UL',mrkObj,rmrkPosition; +function setAnchorVariables(){o3_anchor=ol_anchor;o3_anchorx=ol_anchorx;o3_anchory=ol_anchory;o3_noanchorwarn=ol_noanchorwarn;o3_anchoralign=ol_anchoralign;mrkObj=null;} +function parseAnchorExtras(pf,i,ar){var v,k=i; +if(k1){mkObj=mlyr[0] +offsets[0]+=mlyr[0].x+mlyr[1].pageX +offsets[1]+=mlyr[0].y+mlyr[1].pageY +}else{if(mlyr.toString().indexOf('Image')!=-1||mlyr.toString().indexOf('Anchor')!=-1){offsets[0]+=mlyr.x +offsets[1]+=mlyr.y +}else{offsets[0]+=mlyr.pageX +offsets[1]+=mlyr.pageY}} +}else{offsets[0]+=pageLocation(mlyr,'Left') +offsets[1]+=pageLocation(mlyr,'Top')} +of=getAnchorOffsets(mkObj) +if(typeof o3_dragimg!='undefined'&& o3_dragimg){olImgLeft=offsets[0];olImgTop=offsets[1];} +offsets[0]+=of[0] +offsets[1]+=of[1] +if(typeof o3_dragimg!='undefined'&& o3_dragimg){olImgRight=offsets[0];olImgBottom=offsets[1];return;} +return offsets;} +function getAnchorOffsets(mkObj){var fx=fy=0, mp,puc,mkAry,sx=sy=0,w=o3_anchoralign +var mW=mH=pW=pH=0 +var off=[0,0] +mkAry=w.split(','); +if(mkAry.length<3){mp=mkAry[0].toUpperCase();puc=(mkAry.length==1)?mp:mkAry[1].toUpperCase();}else if(mkAry.length==3){if(!isNaN(mkAry[0])){mp=mkAry.slice(0,2);puc=mkAry[2].toUpperCase();}else{mp=mkAry[0].toUpperCase();puc=mkAry.slice(1);} +}else{mp=mkAry.slice(0,2);puc=mkAry.slice(2);} +var shdwPresent=typeof o3_shadow!='undefined'&& o3_shadow +if(shdwPresent){sx=Math.abs(o3_shadowx);sy=Math.abs(o3_shadowy);} +pW=(shdwPresent?parseInt(o3_width):(olNs4?over.clip.width:over.offsetWidth)) +pH=(shdwPresent?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight)) +if(olOp&& o3_wrap){pW=(shdwPresent?parseInt(o3_width):(olNs4?over.clip.width:over.offsetWidth)) +pH=(shdwPresent?parseInt(o3_aboveheight):(olNs4?over.clip.height:over.offsetHeight))} +if(!olOp&& mkObj.toString().indexOf('Image')!=-1){mW=mkObj.width +mH=mkObj.height +}else if(!olOp&& mkObj.toString().indexOf('Anchor')!=-1){mp='UL' +}else{mW=(olNs4)?mkObj.clip.width:mkObj.offsetWidth +mH=(olNs4)?mkObj.clip.height:mkObj.offsetHeight} +if(!isNaN(mp)||typeof mp=='object'){if(typeof mp=='object'){fx=parseFloat(mp[0]);fy=parseFloat(mp[1]);}else +fx=fy=parseFloat(mp);off=[Math.round(fx*mW),Math.round(fy*mH)];}else{if(mp=='UR')off=[mW,0] +else if(mp=='LL')off=[0,mH] +else if(mp=='LR')off=[mW,mH]} +if(typeof o3_dragimg!='undefined'&& o3_dragimg)return off;else{if(!isNaN(puc)||typeof puc=='object' ){if(typeof puc=='object'){fx=parseFloat(puc[0]);fy=parseFloat(puc[1]);}else +fx=fy=parseFloat(puc);off[0]-=Math.round(fx*(pW-sx));off[1]-=Math.round(fy*(pH-sy));}else{if(puc=='UR'){off[0]-=(pW-sx);off[1]-=sy +}else if(puc=='LL'){off[0]-=sx;off[1]-=(pH-sy) +}else if(puc=='LR'){off[0]-=(pW-sx);off[1]-=(pH-sy)}} +return off}} +function pageLocation(o,t){var x=0 +while(o.offsetParent){x+=o['offset'+t] +o=o.offsetParent} +x+=o['offset'+t] +return x} +function getRefById(l,d){var r="",j +d=(d||document) +if(d.all)return d.all[l] +else if(d.getElementById)return d.getElementById(l) +else if(d.layers&& d.layers.length>0){if(d.layers[l])return d.layers[l] +for(j=0;j0){for(j=0;j0)return r +else if(r)return [r,d.layers[j]]}} +return null} +registerRunTimeFunction(setAnchorVariables);registerCmdLineFunction(parseAnchorExtras);registerPostParseFunction(checkAnchorObject);registerHook("createPopup",anchorPreface,FAFTER);registerHook("horizontalPlacement",anchorHorizontal,FCHAIN);registerHook("verticalPlacement",anchorVertical,FCHAIN);if(olInfo.meets(4.10))registerNoParameterCommands('noanchorwarn'); +} diff --git a/html/js/Mini/overlib_centerpopup_mini.js b/html/js/Mini/overlib_centerpopup_mini.js new file mode 100644 index 0000000000..595385f223 --- /dev/null +++ b/html/js/Mini/overlib_centerpopup_mini.js @@ -0,0 +1,28 @@ +//\///// +//\ overLIB Center Popup Plugin +//\ This file requires overLIB 4.10 or later. +//\ +//\ overLIB 4.10 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2003. All rights reserved. +//\ Contributors are listed on the homepage. +//\ See http://www.bosrup.com/web/overlib/ for details. +//\///// +//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! +if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Center Popup Plugin.');else{registerCommands('centerpopup,centeroffset'); +if(typeof ol_centerpopup=='undefined')var ol_centerpopup=0;if(typeof ol_centeroffset=='undefined')var ol_centeroffset='0'; +var o3_centerpopup=0,o3_centeroffset='0'; +function setCenterPopupVariables(){o3_centerpopup=ol_centerpopup;o3_centeroffset=ol_centeroffset;} +function parseCenterPopupExtras(pf,i,ar){var k=i,v; +if(k1?parseInt(vdisp[1]):0);if(typeof o3_followscroll!='undefined'&&o3_followscroll&&o3_sticky)o3_rely=placeY; +return placeY;} +registerRunTimeFunction(setCenterPopupVariables);registerCmdLineFunction(parseCenterPopupExtras);registerHook('horizontalPlacement',centerPopupHorizontal,FCHAIN);registerHook('verticalPlacement',centerPopupVertical,FCHAIN);if(olInfo.meets(4.10))registerNoParameterCommands('centerpopup'); +} diff --git a/html/js/Mini/overlib_crossframe_mini.js b/html/js/Mini/overlib_crossframe_mini.js new file mode 100644 index 0000000000..b69000e7c6 --- /dev/null +++ b/html/js/Mini/overlib_crossframe_mini.js @@ -0,0 +1,36 @@ +//\///// +//\ overLIB Crossframe Support Plugin +//\ This file requires overLIB 4.10 or later. +//\ +//\ overLIB 4.05 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2004. All rights reserved. +//\ Contributors are listed on the homepage. +//\ See http://www.bosrup.com/web/overlib/ for details. +//\///// +//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! +if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Cross Frame Support Plugin.');else{registerCommands('frame'); +function parseFrameExtras(pf,i,ar){var k=i,v; +if(k0){retVal=frmDepth(thisFrame[i],ofrm);if(retVal=='')continue;}else if(thisFrame[i]!=ofrm)continue;retVal='['+i+']'+retVal;break;} +return retVal;} +function getFrmRef(srcFrm,tgetFrm){var rtnVal='' +if(tgetFrm!=srcFrm){var tFrm=frmDepth(top.frames,tgetFrm) +var sFrm=frmDepth(top.frames,srcFrm) +if(sFrm.length==tFrm.length){l=tFrm.lastIndexOf('[') +if(l){while( sFrm.substring(0,l)!=tFrm.substring(0,l) ) +l=tFrm.lastIndexOf('[',l-1) +tFrm=tFrm.substr(l) +sFrm=sFrm.substr(l)}} +var cnt=0,p='',str=tFrm +while((k=str.lastIndexOf('['))!=-1){cnt++ +str=str.substring(0,k)} +for(var i=0;i
'+text+'
';set_background(""); +return txt;} +function ol_content_caption_cssstyle(text,title,close){var nameId;closing="";closeevent="onMouseOver"; +if(o3_closeclick==1)closeevent=(o3_closetitle?"title='"+o3_closetitle+"'":"")+" onClick"; +if(o3_capicon!=""){nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';if(typeof o3_dragimg!='undefined'&&o3_dragimg)nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';o3_capicon='';} +if(close!=""){closing=''+close+'';} +txt='
'+closing+'
'+o3_capicon+title+'
'+text+'
';set_background(""); +return txt;} +function ol_content_background_cssstyle(text,picture,hasfullhtml){if(hasfullhtml){txt=text;}else{var pU,hU,wU;pU=(o3_padunit=='%'?'%':'');hU=(o3_heightunit=='%'?'%':'');wU=(o3_widthunit=='%'?'%':'');txt='
'+text+'
';} +set_background(picture); +return txt;} +registerRunTimeFunction(setCSSStyleVariables);registerCmdLineFunction(parseCSSStyleExtras);registerHook("ol_content_simple",ol_content_simple_cssstyle,FALTERNATE,CSSSTYLE);registerHook("ol_content_caption",ol_content_caption_cssstyle,FALTERNATE,CSSSTYLE);registerHook("ol_content_background",ol_content_background_cssstyle,FALTERNATE,CSSSTYLE); +} diff --git a/html/js/Mini/overlib_debug_mini.js b/html/js/Mini/overlib_debug_mini.js new file mode 100644 index 0000000000..ec88637a65 --- /dev/null +++ b/html/js/Mini/overlib_debug_mini.js @@ -0,0 +1,49 @@ +//\///// +//\ overLIB Debug Plugin +//\ This file requires overLIB 4.10 or later. +//\ +//\ overLIB 4.05 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2003. All rights reserved. +//\ Contributors are listed on the homepage. +//\ See http://www.bosrup.com/web/overlib/ for details. +//\///// +//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! +if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Debug Plugin.');else{var olZindex;registerCommands('allowdebug'); +function parseDebugExtras(pf,i,ar){var k=i,v; +if(k';}else{with(sho.style){backgroundColor='#ffffcc';padding='5px';border='1px #000000 solid';} +shoObj=sho.style;} +lvl=getLayerLevel(theDiv); +if(typeof sho.position=='undefined'){sho.position=new Pagelocation(10+lvl*20,10,1);if(typeof olZindex=='undefined')olZindex=getDivZindex();shoObj.zIndex=olZindex+1+lvl;} +txt+='';txt+='';txt+='';for(var i=istrt;i';txt+='
'+theDiv+'X
ItemValue
'+args[++i]+'
'+(olNs4?'':''); +if(olNs4){sho.document.open();sho.document.write(txt);sho.document.close();}else{if(olIe5&&isMac)sho.innerHTML='';sho.innerHTML=txt;} +showAllVisibleLayers();} +function getLayerLevel(lyr){var i=0; +if(typeof document.popups=='undefined'){document.popups=new Array(lyr);}else{var l=document.popups;for(var i=0;i/g,">").replace(/"/g,""");} +registerCmdLineFunction(parseDebugExtras); +} diff --git a/html/js/Mini/overlib_exclusive_mini.js b/html/js/Mini/overlib_exclusive_mini.js new file mode 100644 index 0000000000..f51d89d11c --- /dev/null +++ b/html/js/Mini/overlib_exclusive_mini.js @@ -0,0 +1 @@ +} diff --git a/html/js/Mini/overlib_followscroll_mini.js b/html/js/Mini/overlib_followscroll_mini.js new file mode 100644 index 0000000000..09e7db823e --- /dev/null +++ b/html/js/Mini/overlib_followscroll_mini.js @@ -0,0 +1,38 @@ +//\///// +//\ overLIB Follow Scroll Plugin +//\ This file requires overLIB 4.10 or later. +//\ +//\ overLIB 4.10 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2004. All rights reserved. +//\ Contributors are listed on the homepage. +//\ See http://www.bosrup.com/web/overlib/ for details. +//\///// +//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! +if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Follow Scroll Plugin.');else{registerCommands('followscroll,followscrollrefresh'); +if(typeof ol_followscroll=='undefined')var ol_followscroll=0;if(typeof ol_followscrollrefresh=='undefined')var ol_followscrollrefresh=100; +var o3_followscroll=0,o3_followscrollrefresh=100; +function setScrollVariables(){o3_followscroll=ol_followscroll;o3_followscrollrefresh=ol_followscrollrefresh;} +function parseScrollExtras(pf,i,ar){var k=i,v;if(k50)?20:widthFix;iwidth=o3_frame.innerWidth;}else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientWidth=='number'")&&eval('o3_frame.'+docRoot+'.clientWidth')) +iwidth=eval('o3_frame.'+docRoot+'.clientWidth'); +winoffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset; +placeX=runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix); +if(o3_frame.innerHeight)iheight=o3_frame.innerHeight;else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')) +iheight=eval('o3_frame.'+docRoot+'.clientHeight'); +scrolloffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset; +placeY=runHook('verticalPlacement',FCHAIN,iheight,scrolloffset); +repositionTo(over,placeX,placeY); +if(o3_followscroll&&o3_sticky&&(o3_relx||o3_rely)&&(typeof o3_draggable=='undefined'||!o3_draggable)){if(typeof over.scroller=='undefined'||over.scroller.canScroll)over.scroller=new Scroller(placeX-winoffset,placeY-scrolloffset,o3_followscrollrefresh);}} +function Scroller(X,Y,refresh){this.canScroll=0;this.refresh=refresh;this.x=X;this.y=Y;this.timer=setTimeout("repositionOver()",this.refresh);} +function cancelScroll(){if(!o3_followscroll||typeof over.scroller=='undefined')return;over.scroller.canScroll=1; +if(over.scroller.timer){clearTimeout(over.scroller.timer);over.scroller.timer=null;}} +function getPageScrollY(){if(o3_frame.pageYOffset)return o3_frame.pageYOffset;if(eval(docRoot))return eval('o3_frame.'+docRoot+'.scrollTop');return-1;} +function getPageScrollX(){if(o3_frame.pageXOffset)return o3_frame.pageXOffset;if(eval(docRoot))return eval('o3_frame.'+docRoot+'.scrollLeft');return-1;} +function getLayerTop(layer){if(layer.pageY)return layer.pageY;if(layer.style.top)return parseInt(layer.style.top);return-1;} +function getLayerLeft(layer){if(layer.pageX)return layer.pageX;if(layer.style.left)return parseInt(layer.style.left);return-1;} +function repositionOver(){var X,Y,pgLeft,pgTop;pgTop=getPageScrollY();pgLeft=getPageScrollX();X=getLayerLeft(over)-pgLeft;Y=getLayerTop(over)-pgTop; +if(X!=over.scroller.x||Y!=over.scroller.y)repositionTo(over,pgLeft+over.scroller.x,pgTop+over.scroller.y);over.scroller.timer=setTimeout("repositionOver()",over.scroller.refresh);} +registerRunTimeFunction(setScrollVariables);registerCmdLineFunction(parseScrollExtras);registerHook("hideObject",cancelScroll,FAFTER);registerHook("placeLayer",scroll_placeLayer,FREPLACE);if(olInfo.meets(4.10))registerNoParameterCommands('followscroll');} diff --git a/html/js/Mini/overlib_hideform_mini.js b/html/js/Mini/overlib_hideform_mini.js new file mode 100644 index 0000000000..4a4ffca76c --- /dev/null +++ b/html/js/Mini/overlib_hideform_mini.js @@ -0,0 +1,33 @@ +//\///// +//\ overLIB Hide Form Plugin +//\ +//\ Uses an iframe shim to mask system controls for IE v5.5 or higher as suggested in +//\ http://dotnetjunkies.com/weblog/jking/posts/488.aspx +//\ This file requires overLIB 4.10 or later. +//\ +//\ overLIB 4.05 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2004. All rights reserved. +//\ Contributors are listed on the homepage. +//\ See http://www.bosrup.com/web/overlib/ for details. +//\///// +//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! +if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the HideForm Plugin.');else{ +function generatePopUp(content){if(!olIe4||olOp||!olIe55||(typeof o3_shadow!='undefined'&&o3_shadow)||(typeof o3_bubble!='undefined'&&o3_bubble))return; +var wd,ht,txt,zIdx=0; +wd=parseInt(o3_width);ht=over.offsetHeight;txt=backDropSource(wd,ht,zIdx++);txt+='
'+content+'
';layerWrite(txt);} +function backDropSource(width,height,Z){return '';} +function hideSelectBox(){if(olNs4||olOp||olIe55)return;var px,py,pw,ph,sx,sw,sy,sh,selEl,v; +if(olIe4)v=0;else{v=navigator.userAgent.match(/Gecko\/(\d{8})/i);if(!v)return;v=parseInt(v[1]);} +if(v<20030624){px=parseInt(over.style.left);py=parseInt(over.style.top);pw=o3_width;ph=(o3_aboveheight?parseInt(o3_aboveheight):over.offsetHeight);selEl=(olIe4)?o3_frame.document.all.tags("SELECT"):o3_frame.document.getElementsByTagName("SELECT");for(var i=0;i(sx+sw)||(py+ph)(sy+sh))continue;selEl[i].isHidden=1;selEl[i].style.visibility='hidden';}}} +function showSelectBox(){if(olNs4||olOp||olIe55)return;var selEl,v; +if(olIe4)v=0;else{v=navigator.userAgent.match(/Gecko\/(\d{8})/i);if(!v)return;v=parseInt(v[1]);} +if(v<20030624){selEl=(olIe4)?o3_frame.document.all.tags("SELECT"):o3_frame.document.getElementsByTagName("SELECT");for(var i=0;i\n\n');} +f=capExtent.onmousemove.toString().match(/function[ ]+(\w*)\(/);if(f&&f[1]!='anonymous')capExtent.onmousemove=olMouseMove;} +registerHook("createPopup",generatePopUp,FAFTER);registerHook("hideObject",showSelectBox,FAFTER);olHideForm=1;} diff --git a/html/js/Mini/overlib_mini.js b/html/js/Mini/overlib_mini.js new file mode 100644 index 0000000000..704d12351c --- /dev/null +++ b/html/js/Mini/overlib_mini.js @@ -0,0 +1,322 @@ +//\///// +//\ overLIB 4.21 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2004. All rights reserved. +//\ +//\ Contributors are listed on the homepage. +//\ This file might be old, always check for the latest version at: +//\ http://www.bosrup.com/web/overlib/ +//\ +//\ Please read the license agreement (available through the link above) +//\ before using overLIB. Direct any licensing questions to erik@bosrup.com. +//\ +//\ Do not sell this as your own work or remove this copyright notice. +//\ For full details on copying or changing this script please read the +//\ license agreement at the link above. Please give credit on sites that +//\ use overLIB and submit changes of the script so other people can use +//\ them as well. +//\///// +//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! +var olLoaded=0,pmStart=10000000,pmUpper=10001000,pmCount=pmStart+1,pmt='',pms=new Array(),olInfo=new Info('4.21',1),FREPLACE=0,FBEFORE=1,FAFTER=2,FALTERNATE=3,FCHAIN=4,olHideForm=0,olHautoFlag=0,olVautoFlag=0,hookPts=new Array(),postParse=new Array(),cmdLine=new Array(),runTime=new Array(); +registerCommands('donothing,inarray,caparray,sticky,background,noclose,caption,left,right,center,offsetx,offsety,fgcolor,bgcolor,textcolor,capcolor,closecolor,width,border,cellpad,status,autostatus,autostatuscap,height,closetext,snapx,snapy,fixx,fixy,relx,rely,fgbackground,bgbackground,padx,pady,fullhtml,above,below,capicon,textfont,captionfont,closefont,textsize,captionsize,closesize,timeout,function,delay,hauto,vauto,closeclick,wrap,followmouse,mouseoff,closetitle,cssoff,compatmode,cssclass,fgclass,bgclass,textfontclass,captionfontclass,closefontclass'); +if(typeof ol_fgcolor=='undefined')var ol_fgcolor="#CCCCFF";if(typeof ol_bgcolor=='undefined')var ol_bgcolor="#333399";if(typeof ol_textcolor=='undefined')var ol_textcolor="#000000";if(typeof ol_capcolor=='undefined')var ol_capcolor="#FFFFFF";if(typeof ol_closecolor=='undefined')var ol_closecolor="#9999FF";if(typeof ol_textfont=='undefined')var ol_textfont="Verdana,Arial,Helvetica";if(typeof ol_captionfont=='undefined')var ol_captionfont="Verdana,Arial,Helvetica";if(typeof ol_closefont=='undefined')var ol_closefont="Verdana,Arial,Helvetica";if(typeof ol_textsize=='undefined')var ol_textsize="1";if(typeof ol_captionsize=='undefined')var ol_captionsize="1";if(typeof ol_closesize=='undefined')var ol_closesize="1";if(typeof ol_width=='undefined')var ol_width="200";if(typeof ol_border=='undefined')var ol_border="1";if(typeof ol_cellpad=='undefined')var ol_cellpad=2;if(typeof ol_offsetx=='undefined')var ol_offsetx=10;if(typeof ol_offsety=='undefined')var ol_offsety=10;if(typeof ol_text=='undefined')var ol_text="Default Text";if(typeof ol_cap=='undefined')var ol_cap="";if(typeof ol_sticky=='undefined')var ol_sticky=0;if(typeof ol_background=='undefined')var ol_background="";if(typeof ol_close=='undefined')var ol_close="Close";if(typeof ol_hpos=='undefined')var ol_hpos=RIGHT;if(typeof ol_status=='undefined')var ol_status="";if(typeof ol_autostatus=='undefined')var ol_autostatus=0;if(typeof ol_height=='undefined')var ol_height=-1;if(typeof ol_snapx=='undefined')var ol_snapx=0;if(typeof ol_snapy=='undefined')var ol_snapy=0;if(typeof ol_fixx=='undefined')var ol_fixx=-1;if(typeof ol_fixy=='undefined')var ol_fixy=-1;if(typeof ol_relx=='undefined')var ol_relx=null;if(typeof ol_rely=='undefined')var ol_rely=null;if(typeof ol_fgbackground=='undefined')var ol_fgbackground="";if(typeof ol_bgbackground=='undefined')var ol_bgbackground="";if(typeof ol_padxl=='undefined')var ol_padxl=1;if(typeof ol_padxr=='undefined')var ol_padxr=1;if(typeof ol_padyt=='undefined')var ol_padyt=1;if(typeof ol_padyb=='undefined')var ol_padyb=1;if(typeof ol_fullhtml=='undefined')var ol_fullhtml=0;if(typeof ol_vpos=='undefined')var ol_vpos=BELOW;if(typeof ol_aboveheight=='undefined')var ol_aboveheight=0;if(typeof ol_capicon=='undefined')var ol_capicon="";if(typeof ol_frame=='undefined')var ol_frame=self;if(typeof ol_timeout=='undefined')var ol_timeout=0;if(typeof ol_function=='undefined')var ol_function=null;if(typeof ol_delay=='undefined')var ol_delay=0;if(typeof ol_hauto=='undefined')var ol_hauto=0;if(typeof ol_vauto=='undefined')var ol_vauto=0;if(typeof ol_closeclick=='undefined')var ol_closeclick=0;if(typeof ol_wrap=='undefined')var ol_wrap=0;if(typeof ol_followmouse=='undefined')var ol_followmouse=1;if(typeof ol_mouseoff=='undefined')var ol_mouseoff=0;if(typeof ol_closetitle=='undefined')var ol_closetitle='Close';if(typeof ol_compatmode=='undefined')var ol_compatmode=0;if(typeof ol_css=='undefined')var ol_css=CSSOFF;if(typeof ol_fgclass=='undefined')var ol_fgclass="";if(typeof ol_bgclass=='undefined')var ol_bgclass="";if(typeof ol_textfontclass=='undefined')var ol_textfontclass="";if(typeof ol_captionfontclass=='undefined')var ol_captionfontclass="";if(typeof ol_closefontclass=='undefined')var ol_closefontclass=""; +if(typeof ol_texts=='undefined')var ol_texts=new Array("Text 0","Text 1");if(typeof ol_caps=='undefined')var ol_caps=new Array("Caption 0","Caption 1"); +var o3_text="",o3_cap="",o3_sticky=0,o3_background="",o3_close="Close",o3_hpos=RIGHT,o3_offsetx=2,o3_offsety=2,o3_fgcolor="",o3_bgcolor="",o3_textcolor="",o3_capcolor="",o3_closecolor="",o3_width=100,o3_border=1,o3_cellpad=2,o3_status="",o3_autostatus=0,o3_height=-1,o3_snapx=0,o3_snapy=0,o3_fixx=-1,o3_fixy=-1,o3_relx=null,o3_rely=null,o3_fgbackground="",o3_bgbackground="",o3_padxl=0,o3_padxr=0,o3_padyt=0,o3_padyb=0,o3_fullhtml=0,o3_vpos=BELOW,o3_aboveheight=0,o3_capicon="",o3_textfont="Verdana,Arial,Helvetica",o3_captionfont="Verdana,Arial,Helvetica",o3_closefont="Verdana,Arial,Helvetica",o3_textsize="1",o3_captionsize="1",o3_closesize="1",o3_frame=self,o3_timeout=0,o3_timerid=0,o3_allowmove=0,o3_function=null,o3_delay=0,o3_delayid=0,o3_hauto=0,o3_vauto=0,o3_closeclick=0,o3_wrap=0,o3_followmouse=1,o3_mouseoff=0,o3_closetitle='',o3_compatmode=0,o3_css=CSSOFF,o3_fgclass="",o3_bgclass="",o3_textfontclass="",o3_captionfontclass="",o3_closefontclass=""; +var o3_x=0,o3_y=0,o3_showingsticky=0,o3_removecounter=0; +var over=null,fnRef,hoveringSwitch=false,olHideDelay; +var isMac=(navigator.userAgent.indexOf("Mac")!=-1),olOp=(navigator.userAgent.toLowerCase().indexOf('opera')>-1&&document.createTextNode),olNs4=(navigator.appName=='Netscape'&&parseInt(navigator.appVersion)==4),olNs6=(document.getElementById)?true:false,olKq=(olNs6&&/konqueror/i.test(navigator.userAgent)),olIe4=(document.all)?true:false,olIe5=false,olIe55=false,docRoot='document.body'; +if(olNs4){var oW=window.innerWidth;var oH=window.innerHeight;window.onresize=function(){if(oW!=window.innerWidth||oH!=window.innerHeight)location.reload();}} +if(olIe4){var agent=navigator.userAgent;if(/MSIE/.test(agent)){var versNum=parseFloat(agent.match(/MSIE[ ](\d\.\d+)\.*/i)[1]);if(versNum>=5){olIe5=true;olIe55=(versNum>=5.5&&!olOp)?true:false;if(olNs6)olNs6=false;}} +if(olNs6)olIe4=false;} +if(document.compatMode&&document.compatMode=='CSS1Compat'){docRoot=((olIe4&&!olOp)?'document.documentElement':docRoot);} +if(window.addEventListener)window.addEventListener("load",OLonLoad_handler,false);else if(window.attachEvent)window.attachEvent("onload",OLonLoad_handler); +var capExtent; +function overlib(){if(!olLoaded||isExclusive(overlib.arguments))return true;if(olCheckMouseCapture)olMouseCapture();if(over){over=(typeof over.id!='string')?o3_frame.document.all['overDiv']:over;cClick();} +olHideDelay=0;o3_text=ol_text;o3_cap=ol_cap;o3_sticky=ol_sticky;o3_background=ol_background;o3_close=ol_close;o3_hpos=ol_hpos;o3_offsetx=ol_offsetx;o3_offsety=ol_offsety;o3_fgcolor=ol_fgcolor;o3_bgcolor=ol_bgcolor;o3_textcolor=ol_textcolor;o3_capcolor=ol_capcolor;o3_closecolor=ol_closecolor;o3_width=ol_width;o3_border=ol_border;o3_cellpad=ol_cellpad;o3_status=ol_status;o3_autostatus=ol_autostatus;o3_height=ol_height;o3_snapx=ol_snapx;o3_snapy=ol_snapy;o3_fixx=ol_fixx;o3_fixy=ol_fixy;o3_relx=ol_relx;o3_rely=ol_rely;o3_fgbackground=ol_fgbackground;o3_bgbackground=ol_bgbackground;o3_padxl=ol_padxl;o3_padxr=ol_padxr;o3_padyt=ol_padyt;o3_padyb=ol_padyb;o3_fullhtml=ol_fullhtml;o3_vpos=ol_vpos;o3_aboveheight=ol_aboveheight;o3_capicon=ol_capicon;o3_textfont=ol_textfont;o3_captionfont=ol_captionfont;o3_closefont=ol_closefont;o3_textsize=ol_textsize;o3_captionsize=ol_captionsize;o3_closesize=ol_closesize;o3_timeout=ol_timeout;o3_function=ol_function;o3_delay=ol_delay;o3_hauto=ol_hauto;o3_vauto=ol_vauto;o3_closeclick=ol_closeclick;o3_wrap=ol_wrap;o3_followmouse=ol_followmouse;o3_mouseoff=ol_mouseoff;o3_closetitle=ol_closetitle;o3_css=ol_css;o3_compatmode=ol_compatmode;o3_fgclass=ol_fgclass;o3_bgclass=ol_bgclass;o3_textfontclass=ol_textfontclass;o3_captionfontclass=ol_captionfontclass;o3_closefontclass=ol_closefontclass; +setRunTimeVariables(); +fnRef=''; +o3_frame=ol_frame; +if(!(over=createDivContainer()))return false; +parseTokens('o3_',overlib.arguments);if(!postParseChecks())return false; +if(o3_delay==0){return runHook("olMain",FREPLACE);}else{o3_delayid=setTimeout("runHook('olMain',FREPLACE)",o3_delay);return false;}} +function nd(time){if(olLoaded&&!isExclusive()){hideDelay(time); +if(o3_removecounter>=1){o3_showingsticky=0 }; +if(o3_showingsticky==0){o3_allowmove=0;if(over!=null&&o3_timerid==0)runHook("hideObject",FREPLACE,over);}else{o3_removecounter++;}} +return true;} +function cClick(){if(olLoaded){runHook("hideObject",FREPLACE,over);o3_showingsticky=0;} +return false;} +function overlib_pagedefaults(){parseTokens('ol_',overlib_pagedefaults.arguments);} +function olMain(){var layerhtml,styleType;runHook("olMain",FBEFORE); +if(o3_background!=""||o3_fullhtml){ +layerhtml=runHook('ol_content_background',FALTERNATE,o3_css,o3_text,o3_background,o3_fullhtml);}else{ +styleType=(pms[o3_css-1-pmStart]=="cssoff"||pms[o3_css-1-pmStart]=="cssclass"); +if(o3_fgbackground!="")o3_fgbackground="background=\""+o3_fgbackground+"\"";if(o3_bgbackground!="")o3_bgbackground=(styleType?"background=\""+o3_bgbackground+"\"":o3_bgbackground); +if(o3_fgcolor!="")o3_fgcolor=(styleType?"bgcolor=\""+o3_fgcolor+"\"":o3_fgcolor);if(o3_bgcolor!="")o3_bgcolor=(styleType?"bgcolor=\""+o3_bgcolor+"\"":o3_bgcolor); +if(o3_height>0)o3_height=(styleType?"height=\""+o3_height+"\"":o3_height);else o3_height=""; +if(o3_cap==""){ +layerhtml=runHook('ol_content_simple',FALTERNATE,o3_css,o3_text);}else{ +if(o3_sticky){ +layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,o3_close);}else{ +layerhtml=runHook('ol_content_caption',FALTERNATE,o3_css,o3_text,o3_cap,"");}}} +if(o3_sticky){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} +o3_showingsticky=1;o3_removecounter=0;} +if(!runHook("createPopup",FREPLACE,layerhtml))return false; +if(o3_autostatus>0){o3_status=o3_text;if(o3_autostatus>1)o3_status=o3_cap;} +o3_allowmove=0; +if(o3_timeout>0){if(o3_timerid>0)clearTimeout(o3_timerid);o3_timerid=setTimeout("cClick()",o3_timeout);} +runHook("disp",FREPLACE,o3_status);runHook("olMain",FAFTER); +return(olOp&&event&&event.type=='mouseover'&&!o3_status)?'':(o3_status!='');} +function ol_content_simple(text){var cpIsMultiple=/,/.test(o3_cellpad);var txt='
':((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'
'; +set_background("");return txt;} +function ol_content_caption(text,title,close){var nameId,txt,cpIsMultiple=/,/.test(o3_cellpad);var closing,closeevent; +closing="";closeevent="onmouseover";if(o3_closeclick==1)closeevent=(o3_closetitle?"title='"+o3_closetitle+"'":"")+" onclick";if(o3_capicon!=""){nameId=' hspace=\"5\"'+' align=\"middle\" alt=\"\"';if(typeof o3_dragimg!='undefined'&&o3_dragimg)nameId=' hspace=\"5\"'+' name=\"'+o3_dragimg+'\" id=\"'+o3_dragimg+'\" align=\"middle\" alt=\"Drag Enabled\" title=\"Drag Enabled\"';o3_capicon='';} +if(close!="") +closing=''+(o3_closefontclass?'':wrapStr(0,o3_closesize,'close'))+close+(o3_closefontclass?'':wrapStr(1,o3_closesize,'close'))+'';txt='
':'>')+(o3_captionfontclass?'':''+wrapStr(0,o3_captionsize,'caption'))+o3_capicon+title+(o3_captionfontclass?'':wrapStr(1,o3_captionsize)+'')+''+closing+'
' :((!olNs4&&cpIsMultiple)?' style="'+setCellPadStr(o3_cellpad)+'">':'>'))+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'
'; +set_background("");return txt;} +function ol_content_background(text,picture,hasfullhtml){if(hasfullhtml){txt=text;}else{txt='
'+(o3_textfontclass?'':wrapStr(0,o3_textsize,'text'))+text+(o3_textfontclass?'':wrapStr(1,o3_textsize))+'
';} +set_background(picture);return txt;} +function set_background(pic){if(pic==""){if(olNs4){over.background.src=null;}else if(over.style){over.style.backgroundImage="none";} +}else{if(olNs4){over.background.src=pic;}else if(over.style){over.style.width=o3_width+'px';over.style.backgroundImage="url("+pic+")";}}} +var olShowId=-1; +function disp(statustext){runHook("disp",FBEFORE); +if(o3_allowmove==0){runHook("placeLayer",FREPLACE);(olNs6&&olShowId<0)?olShowId=setTimeout("runHook('showObject',FREPLACE,over)",1):runHook("showObject",FREPLACE,over);o3_allowmove=(o3_sticky||o3_followmouse==0)?0:1;} +runHook("disp",FAFTER); +if(statustext!="")self.status=statustext;} +function createPopup(lyrContent){runHook("createPopup",FBEFORE); +if(o3_wrap){var wd,ww,theObj=(olNs4?over:over.style);theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0);layerWrite(lyrContent);wd=(olNs4?over.clip.width:over.offsetWidth);if(wd>(ww=windowWidth())){lyrContent=lyrContent.replace(/\ /g,' ');o3_width=ww;o3_wrap=0;}} +layerWrite(lyrContent); +if(o3_wrap)o3_width=(olNs4?over.clip.width:over.offsetWidth); +runHook("createPopup",FAFTER,lyrContent); +return true;} +function placeLayer(){var placeX,placeY,widthFix=0; +if(o3_frame.innerWidth)widthFix=18;iwidth=windowWidth(); +winoffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollLeft'):o3_frame.pageXOffset; +placeX=runHook('horizontalPlacement',FCHAIN,iwidth,winoffset,widthFix); +if(o3_frame.innerHeight){iheight=o3_frame.innerHeight;}else if(eval('o3_frame.'+docRoot)&&eval("typeof o3_frame."+docRoot+".clientHeight=='number'")&&eval('o3_frame.'+docRoot+'.clientHeight')){iheight=eval('o3_frame.'+docRoot+'.clientHeight');} +scrolloffset=(olIe4)?eval('o3_frame.'+docRoot+'.scrollTop'):o3_frame.pageYOffset;placeY=runHook('verticalPlacement',FCHAIN,iheight,scrolloffset); +repositionTo(over,placeX,placeY);} +function olMouseMove(e){var e=(e)?e:event; +if(e.pageX){o3_x=e.pageX;o3_y=e.pageY;}else if(e.clientX){o3_x=eval('e.clientX+o3_frame.'+docRoot+'.scrollLeft');o3_y=eval('e.clientY+o3_frame.'+docRoot+'.scrollTop');} +if(o3_allowmove==1)runHook("placeLayer",FREPLACE); +if(hoveringSwitch&&!olNs4&&runHook("cursorOff",FREPLACE)){(olHideDelay?hideDelay(olHideDelay):cClick());hoveringSwitch=!hoveringSwitch;}} +function no_overlib(){return ver3fix;} +function olMouseCapture(){capExtent=document;var fN,str='',l,k,f,wMv,sS,mseHandler=olMouseMove;var re=/function[ ]*(\w*)\(/; +wMv=(!olIe4&&window.onmousemove);if(document.onmousemove||wMv){if(wMv)capExtent=window;f=capExtent.onmousemove.toString();fN=f.match(re);if(fN==null){str=f+'(e);';}else if(fN[1]=='anonymous'||fN[1]=='olMouseMove'||(wMv&&fN[1]=='onmousemove')){if(!olOp&&wMv){l=f.indexOf('{')+1;k=f.lastIndexOf('}');sS=f.substring(l,k);if((l=sS.indexOf('('))!=-1){sS=sS.substring(0,l).replace(/^\s+/,'').replace(/\s+$/,'');if(eval("typeof "+sS+"=='undefined'"))window.onmousemove=null;else str=sS+'(e);';}} +if(!str){olCheckMouseCapture=false;return;} +}else{if(fN[1])str=fN[1]+'(e);';else{l=f.indexOf('{')+1;k=f.lastIndexOf('}');str=f.substring(l,k)+'\n';}} +str+='olMouseMove(e);';mseHandler=new Function('e',str);} +capExtent.onmousemove=mseHandler;if(olNs4)capExtent.captureEvents(Event.MOUSEMOVE);} +function parseTokens(pf,ar){ +var v,i,mode=-1,par=(pf!='ol_'),fnMark=(par&&!ar.length?1:0); +for(i=0;ipmStart&&ar[i]=pmCount||ar[i]==DONOTHING){continue;} +if(ar[i]==INARRAY){fnMark=0;eval(pf+'text=ol_texts['+ar[++i]+'].toString()');continue;} +if(ar[i]==CAPARRAY){eval(pf+'cap=ol_caps['+ar[++i]+'].toString()');continue;} +if(ar[i]==STICKY){if(pf!='ol_')eval(pf+'sticky=1');continue;} +if(ar[i]==BACKGROUND){eval(pf+'background="'+ar[++i]+'"');continue;} +if(ar[i]==NOCLOSE){if(pf!='ol_')opt_NOCLOSE();continue;} +if(ar[i]==CAPTION){eval(pf+"cap='"+escSglQuote(ar[++i])+"'");continue;} +if(ar[i]==CENTER||ar[i]==LEFT||ar[i]==RIGHT){eval(pf+'hpos='+ar[i]);if(pf!='ol_')olHautoFlag=1;continue;} +if(ar[i]==OFFSETX){eval(pf+'offsetx='+ar[++i]);continue;} +if(ar[i]==OFFSETY){eval(pf+'offsety='+ar[++i]);continue;} +if(ar[i]==FGCOLOR){eval(pf+'fgcolor="'+ar[++i]+'"');continue;} +if(ar[i]==BGCOLOR){eval(pf+'bgcolor="'+ar[++i]+'"');continue;} +if(ar[i]==TEXTCOLOR){eval(pf+'textcolor="'+ar[++i]+'"');continue;} +if(ar[i]==CAPCOLOR){eval(pf+'capcolor="'+ar[++i]+'"');continue;} +if(ar[i]==CLOSECOLOR){eval(pf+'closecolor="'+ar[++i]+'"');continue;} +if(ar[i]==WIDTH){eval(pf+'width='+ar[++i]);continue;} +if(ar[i]==BORDER){eval(pf+'border='+ar[++i]);continue;} +if(ar[i]==CELLPAD){i=opt_MULTIPLEARGS(++i,ar,(pf+'cellpad'));continue;} +if(ar[i]==STATUS){eval(pf+"status='"+escSglQuote(ar[++i])+"'");continue;} +if(ar[i]==AUTOSTATUS){eval(pf+'autostatus=('+pf+'autostatus==1)?0:1');continue;} +if(ar[i]==AUTOSTATUSCAP){eval(pf+'autostatus=('+pf+'autostatus==2)?0:2');continue;} +if(ar[i]==HEIGHT){eval(pf+'height='+pf+'aboveheight='+ar[++i]);continue;} +if(ar[i]==CLOSETEXT){eval(pf+"close='"+escSglQuote(ar[++i])+"'");continue;} +if(ar[i]==SNAPX){eval(pf+'snapx='+ar[++i]);continue;} +if(ar[i]==SNAPY){eval(pf+'snapy='+ar[++i]);continue;} +if(ar[i]==FIXX){eval(pf+'fixx='+ar[++i]);continue;} +if(ar[i]==FIXY){eval(pf+'fixy='+ar[++i]);continue;} +if(ar[i]==RELX){eval(pf+'relx='+ar[++i]);continue;} +if(ar[i]==RELY){eval(pf+'rely='+ar[++i]);continue;} +if(ar[i]==FGBACKGROUND){eval(pf+'fgbackground="'+ar[++i]+'"');continue;} +if(ar[i]==BGBACKGROUND){eval(pf+'bgbackground="'+ar[++i]+'"');continue;} +if(ar[i]==PADX){eval(pf+'padxl='+ar[++i]);eval(pf+'padxr='+ar[++i]);continue;} +if(ar[i]==PADY){eval(pf+'padyt='+ar[++i]);eval(pf+'padyb='+ar[++i]);continue;} +if(ar[i]==FULLHTML){if(pf!='ol_')eval(pf+'fullhtml=1');continue;} +if(ar[i]==BELOW||ar[i]==ABOVE){eval(pf+'vpos='+ar[i]);if(pf!='ol_')olVautoFlag=1;continue;} +if(ar[i]==CAPICON){eval(pf+'capicon="'+ar[++i]+'"');continue;} +if(ar[i]==TEXTFONT){eval(pf+"textfont='"+escSglQuote(ar[++i])+"'");continue;} +if(ar[i]==CAPTIONFONT){eval(pf+"captionfont='"+escSglQuote(ar[++i])+"'");continue;} +if(ar[i]==CLOSEFONT){eval(pf+"closefont='"+escSglQuote(ar[++i])+"'");continue;} +if(ar[i]==TEXTSIZE){eval(pf+'textsize="'+ar[++i]+'"');continue;} +if(ar[i]==CAPTIONSIZE){eval(pf+'captionsize="'+ar[++i]+'"');continue;} +if(ar[i]==CLOSESIZE){eval(pf+'closesize="'+ar[++i]+'"');continue;} +if(ar[i]==TIMEOUT){eval(pf+'timeout='+ar[++i]);continue;} +if(ar[i]==FUNCTION){if(pf=='ol_'){if(typeof ar[i+1]!='number'){v=ar[++i];ol_function=(typeof v=='function'?v:null);}}else{fnMark=0;v=null;if(typeof ar[i+1]!='number')v=ar[++i]; opt_FUNCTION(v);} continue;} +if(ar[i]==DELAY){eval(pf+'delay='+ar[++i]);continue;} +if(ar[i]==HAUTO){eval(pf+'hauto=('+pf+'hauto==0)?1:0');continue;} +if(ar[i]==VAUTO){eval(pf+'vauto=('+pf+'vauto==0)?1:0');continue;} +if(ar[i]==CLOSECLICK){eval(pf+'closeclick=('+pf+'closeclick==0)?1:0');continue;} +if(ar[i]==WRAP){eval(pf+'wrap=('+pf+'wrap==0)?1:0');continue;} +if(ar[i]==FOLLOWMOUSE){eval(pf+'followmouse=('+pf+'followmouse==1)?0:1');continue;} +if(ar[i]==MOUSEOFF){eval(pf+'mouseoff=('+pf+'mouseoff==0)?1:0');v=ar[i+1];if(pf!='ol_'&&eval(pf+'mouseoff')&&typeof v=='number'&&(vpmUpper))olHideDelay=ar[++i];continue;} +if(ar[i]==CLOSETITLE){eval(pf+"closetitle='"+escSglQuote(ar[++i])+"'");continue;} +if(ar[i]==CSSOFF||ar[i]==CSSCLASS){eval(pf+'css='+ar[i]);continue;} +if(ar[i]==COMPATMODE){eval(pf+'compatmode=('+pf+'compatmode==0)?1:0');continue;} +if(ar[i]==FGCLASS){eval(pf+'fgclass="'+ar[++i]+'"');continue;} +if(ar[i]==BGCLASS){eval(pf+'bgclass="'+ar[++i]+'"');continue;} +if(ar[i]==TEXTFONTCLASS){eval(pf+'textfontclass="'+ar[++i]+'"');continue;} +if(ar[i]==CAPTIONFONTCLASS){eval(pf+'captionfontclass="'+ar[++i]+'"');continue;} +if(ar[i]==CLOSEFONTCLASS){eval(pf+'closefontclass="'+ar[++i]+'"');continue;} +i=parseCmdLine(pf,i,ar);}} +if(fnMark&&o3_function)o3_text=o3_function(); +if((pf=='o3_')&&o3_wrap){o3_width=0; +var tReg=/<.*\n*>/ig;if(!tReg.test(o3_text))o3_text=o3_text.replace(/[ ]+/g,' ');if(!tReg.test(o3_cap))o3_cap=o3_cap.replace(/[ ]+/g,' ');} +if((pf=='o3_')&&o3_sticky){if(!o3_close&&(o3_frame!=ol_frame))o3_close=ol_close;if(o3_mouseoff&&(o3_frame==ol_frame))opt_NOCLOSE(' ');}} +function layerWrite(txt){txt+="\n";if(olNs4){var lyr=o3_frame.document.layers['overDiv'].document +lyr.write(txt) +lyr.close() +}else if(typeof over.innerHTML!='undefined'){if(olIe5&&isMac)over.innerHTML='';over.innerHTML=txt;}else{range=o3_frame.document.createRange();range.setStartAfter(over);domfrag=range.createContextualFragment(txt); +while(over.hasChildNodes()){over.removeChild(over.lastChild);} +over.appendChild(domfrag);}} +function showObject(obj){runHook("showObject",FBEFORE); +var theObj=(olNs4?obj:obj.style);theObj.visibility='visible'; +runHook("showObject",FAFTER);} +function hideObject(obj){runHook("hideObject",FBEFORE); +var theObj=(olNs4?obj:obj.style);if(olNs6&&olShowId>0){clearTimeout(olShowId);olShowId=0;} +theObj.visibility='hidden';theObj.top=theObj.left=((olIe4&&!olOp)?0:-10000)+(!olNs4?'px':0); +if(o3_timerid>0)clearTimeout(o3_timerid);if(o3_delayid>0)clearTimeout(o3_delayid); +o3_timerid=0;o3_delayid=0;self.status=""; +if(obj.onmouseout||obj.onmouseover){if(olNs4)obj.releaseEvents(Event.MOUSEOUT||Event.MOUSEOVER);obj.onmouseout=obj.onmouseover=null;} +runHook("hideObject",FAFTER);} +function repositionTo(obj,xL,yL){var theObj=(olNs4?obj:obj.style);theObj.left=xL+(!olNs4?'px':0);theObj.top=yL+(!olNs4?'px':0);} +function cursorOff(){var left=parseInt(over.style.left);var top=parseInt(over.style.top);var right=left+(over.offsetWidth>=parseInt(o3_width)?over.offsetWidth:parseInt(o3_width));var bottom=top+(over.offsetHeight>=o3_aboveheight?over.offsetHeight:o3_aboveheight); +if(o3_xright||o3_ybottom)return true; +return false;} +function opt_FUNCTION(callme){o3_text=(callme?(typeof callme=='string'?(/.+\(.*\)/.test(callme)?eval(callme):callme):callme()):(o3_function?o3_function():'No Function')); +return 0;} +function opt_NOCLOSE(unused){if(!unused)o3_close=""; +if(olNs4){over.captureEvents(Event.MOUSEOUT||Event.MOUSEOVER);over.onmouseover=function(){if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} } +over.onmouseout=function(e){if(olHideDelay)hideDelay(olHideDelay);else cClick(e);} +}else{over.onmouseover=function(){hoveringSwitch=true;if(o3_timerid>0){clearTimeout(o3_timerid);o3_timerid=0;} }} +return 0;} +function opt_MULTIPLEARGS(i,args,parameter){var k=i,re,pV,str=''; +for(k=i;kpmStart)break;str+=args[k]+',';} +if(str)str=str.substring(0,--str.length); +k--;pV=(olNs4&&/cellpad/i.test(parameter))?str.split(',')[0]:str;eval(parameter+'="'+pV+'"'); +return k;} +function nbspCleanup(){if(o3_wrap){o3_text=o3_text.replace(/\ /g,' ');o3_cap=o3_cap.replace(/\ /g,' ');}} +function escSglQuote(str){return str.toString().replace(/'/g,"\\'");} +function OLonLoad_handler(e){var re=/\w+\(.*\)[;\s]+/g,olre=/overlib\(|nd\(|cClick\(/,fn,l,i; +if(!olLoaded)olLoaded=1; +if(window.removeEventListener&&e.eventPhase==3)window.removeEventListener("load",OLonLoad_handler,false);else if(window.detachEvent){window.detachEvent("onload",OLonLoad_handler);var fN=document.body.getAttribute('onload');if(fN){fN=fN.toString().match(re);if(fN&&fN.length){for(i=0;i':''):'';else{fontStr='o3_'+whichString+'font';fontColor='o3_'+((whichString=='caption')? 'cap':whichString)+'color';return(hasDims&&!olNs4)?(isClose?'':'
'):'';}} +function quoteMultiNameFonts(theFont){var v,pM=theFont.split(',');for(var i=0;i0)clearTimeout(o3_timerid); +o3_timerid=setTimeout("cClick()",(o3_timeout=time));}} +function horizontalPlacement(browserWidth,horizontalScrollAmount,widthFix){var placeX,iwidth=browserWidth,winoffset=horizontalScrollAmount;var parsedWidth=parseInt(o3_width); +if(o3_fixx>-1||o3_relx!=null){ +placeX=(o3_relx!=null?( o3_relx<0?winoffset+o3_relx+iwidth-parsedWidth-widthFix:winoffset+o3_relx):o3_fixx);}else{ +if(o3_hauto==1){if((o3_x-winoffset)>(iwidth/2)){o3_hpos=LEFT;}else{o3_hpos=RIGHT;}} +if(o3_hpos==CENTER){placeX=o3_x+o3_offsetx-(parsedWidth/2); +if(placeX(winoffset+iwidth-widthFix)){placeX=iwidth+winoffset-parsedWidth-widthFix;if(placeX<0)placeX=0;}} +if(o3_hpos==LEFT){placeX=o3_x-o3_offsetx-parsedWidth;if(placeX1){var snapping=placeX % o3_snapx; +if(o3_hpos==LEFT){placeX=placeX-(o3_snapx+snapping);}else{ +placeX=placeX+(o3_snapx-snapping);} +if(placeX-1||o3_rely!=null){ +placeY=(o3_rely!=null?(o3_rely<0?scrolloffset+o3_rely+iheight-parsedHeight:scrolloffset+o3_rely):o3_fixy);}else{ +if(o3_vauto==1){if((o3_y-scrolloffset)>(iheight/2)&&o3_vpos==BELOW&&(o3_y+parsedHeight+o3_offsety-(scrolloffset+iheight)>0)){o3_vpos=ABOVE;}else if(o3_vpos==ABOVE&&(o3_y-(parsedHeight+o3_offsety)-scrolloffset<0)){o3_vpos=BELOW;}} +if(o3_vpos==ABOVE){if(o3_aboveheight==0)o3_aboveheight=parsedHeight; +placeY=o3_y-(o3_aboveheight+o3_offsety);if(placeY1){var snapping=placeY % o3_snapy; +if(o3_aboveheight>0&&o3_vpos==ABOVE){placeY=placeY-(o3_snapy+snapping);}else{placeY=placeY+(o3_snapy-snapping);} +if(placeY
');divContainer=layerReference(id);}else{divContainer=frm.document.createElement("DIV");divContainer.id=id;body.appendChild(divContainer);} +objRef=divContainer.style;} +objRef.position='absolute';objRef.visibility='hidden';objRef.zIndex=zValue;if(olIe4&&!olOp)objRef.left=objRef.top='0px';else objRef.left=objRef.top=-10000+(!olNs4?'px':0);} +return divContainer;} +function layerReference(id){return(olNs4?o3_frame.document.layers[id]:(document.all?o3_frame.document.all[id]:o3_frame.document.getElementById(id)));} +function isFunction(fnRef){var rtn=true; +if(typeof fnRef=='object'){for(var i=0;ijS){for(var k=jS;k-1){i=j;break;}}} +return i;} +function postParseChecks(pf,args){if(typeof postParse!='undefined'&&postParse.length){for(var k=0;k-1)hookPt.alt[pms[CSSOFF-1-pmStart]]=fnRef; +}else if(hookType==FBEFORE||hookType==FAFTER){var hookPt=(hookType==1?hookPt.before:hookPt.after); +if(typeof fnRef=='object'){hookPt=hookPt.concat(fnRef);}else{hookPt[hookPt.length++]=fnRef;} +if(optPm)hookPt=reOrder(hookPt,fnRef,optPm); +}else if(hookType==FALTERNATE){if(last=='number')hookPt.alt[pms[optPm-1-pmStart]]=fnRef;}else if(hookType==FCHAIN){hookPt=hookPt.chain;if(typeof fnRef=='object')hookPt=hookPt.concat(fnRef);else hookPt[hookPt.length++]=fnRef;} +return;}} +function registerRunTimeFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){runTime=runTime.concat(fn);}else{runTime[runTime.length++]=fn;}}} +function registerCmdLineFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){cmdLine=cmdLine.concat(fn);}else{cmdLine[cmdLine.length++]=fn;}}} +function registerPostParseFunction(fn){if(isFunction(fn)){if(typeof fn=='object'){postParse=postParse.concat(fn);}else{postParse[postParse.length++]=fn;}}} +function runHook(fnHookTo,hookType){var l=hookPts[fnHookTo],k,rtnVal=null,optPm,arS,ar=runHook.arguments; +if(hookType==FREPLACE){arS=argToString(ar,2); +if(typeof l=='undefined'||!(l=l.ovload))rtnVal=eval(fnHookTo+'('+arS+')');else rtnVal=eval('l('+arS+')'); +}else if(hookType==FBEFORE||hookType==FAFTER){if(typeof l!='undefined'){l=(hookType==1?l.before:l.after); +if(l.length){arS=argToString(ar,2);for(var k=0;k0;k--)if((rtnVal=eval('l[k-1]('+arS+')'))!=void(0))break;} +return rtnVal;} +function FunctionReference(){this.ovload=null;this.before=new Array();this.after=new Array();this.alt=new Array();this.chain=new Array();} +function Info(version,prerelease){this.version=version;this.prerelease=prerelease; +this.simpleversion=Math.round(this.version*100);this.major=parseInt(this.simpleversion/100);this.minor=parseInt(this.simpleversion/10)-this.major * 10;this.revision=parseInt(this.simpleversion)-this.major * 100-this.minor * 10;this.meets=meets;} +function meets(reqdVersion){return(!reqdVersion)?false:this.simpleversion>=Math.round(100*parseFloat(reqdVersion));} +registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSOFF);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSOFF);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSOFF);registerHook("ol_content_simple",ol_content_simple,FALTERNATE,CSSCLASS);registerHook("ol_content_caption",ol_content_caption,FALTERNATE,CSSCLASS);registerHook("ol_content_background",ol_content_background,FALTERNATE,CSSCLASS);registerPostParseFunction(checkPositionFlags);registerHook("hideObject",nbspCleanup,FAFTER);registerHook("horizontalPlacement",horizontalPlacement,FCHAIN);registerHook("verticalPlacement",verticalPlacement,FCHAIN);if(olNs4||(olIe5&&isMac)||olKq)olLoaded=1;registerNoParameterCommands('sticky,autostatus,autostatuscap,fullhtml,hauto,vauto,closeclick,wrap,followmouse,mouseoff,compatmode'); +var olCheckMouseCapture=true;if((olNs4||olNs6||olIe4)){olMouseCapture();}else{overlib=no_overlib;nd=no_overlib;ver3fix=true;} diff --git a/html/js/Mini/overlib_setonoff_mini.js b/html/js/Mini/overlib_setonoff_mini.js new file mode 100644 index 0000000000..95659e8318 --- /dev/null +++ b/html/js/Mini/overlib_setonoff_mini.js @@ -0,0 +1,32 @@ +//\///// +//\ overLIB Set On/Off Plugin +//\ This file requires overLIB 4.10 or later. +//\ +//\ overLIB 4.10 - You may not remove or change this notice. +//\ Copyright Erik Bosrup 1998-2003. All rights reserved. +//\ Contributors are listed on the homepage. +//\ See http://www.bosrup.com/web/overlib/ for details. +//\///// +//\ THIS IS A VERY MODIFIED VERSION. DO NOT EDIT OR PUBLISH. GET THE ORIGINAL! +if(typeof olInfo=='undefined'||typeof olInfo.meets=='undefined'||!olInfo.meets(4.10))alert('overLIB 4.10 or later is required for the Set On/Off Plugin.');else{registerCommands('seton,setoff');var olSetType; +function setOnOffVariables(){olSetType=0;} +function parseOnOffExtras(pf,i,ar){var k=i,v; +if(k-1){je=opt_MULTICOMMANDS(k+1,args);for(j=k+1;j<(k+je);j++)setNoParamCommand(1,pf,args[j]);k+=(je-1);} +k=-1;while((k=hasCommand(++k,args,SETOFF))-1){je=opt_MULTICOMMANDS(k+1,args);for(j=k+1;j<(k+je);j++)setNoParamCommand(0,pf,args[j]);k+=(je-1);}} +return true;} +var olRe; +function setNoParamCommand(whichType,pf,COMMAND){var v=pms[COMMAND-1-pmStart]; +if(pmt&&!olRe)olRe=eval('/'+pmt.split(',').join('|')+'/');if(pf!='ol_'&& /capturefirst/.test(v))return;if(pf!='ol_'&& /wrap/.test(v)&& eval(pf+'wrap')&&(whichType==0)){nbspCleanup();o3_width=ol_width;} +if(olRe.test(v))eval(pf+v+'='+((whichType&&COMMAND==AUTOSTATUSCAP)?whichType++:whichType));} +function opt_MULTICOMMANDS(i,ar){var k=i; +while(kpmStart){k++;if(ar[k-1]=='SETON'||ar[k-1]=='SETOFF')break;} +k-=(kright||o3_ybottom)return true;return false;} +function checkShadowPreHide(){if(o3_shadow&&o3_shadowopacity)cleanUpShadowEffects();if(o3_shadow&&(olIe4&&isMac) )over.style.pixelWidth=over.style.pixelHeight=0;} +function generateShadow(content){var wd,ht,X=0,Y=0,zIdx=0,txt,dpObj,puObj,bS='',aPos,posStr=new Array(); +if(!o3_shadow||(o3_shadowx==0&&o3_shadowy==0))return; +X=Math.abs(o3_shadowx);Y=Math.abs(o3_shadowy);wd=parseInt(o3_width);ht=(olNs4)?over.clip.height:over.offsetHeight; +if(o3_shadowx==0){if(o3_shadowy<0){posStr[0]=' left:0;top: 0';posStr[1]=' left:0;top: '+Y+'px';}else if(o3_shadowy>0){posStr[0]=' left:0;top: '+Y+'px';posStr[1]=' left:0;top:0';} +}else if(o3_shadowy==0){if(o3_shadowx<0){posStr[0]=' left:0;top: 0';posStr[1]=' left: '+X+'px';}else if(o3_shadowx>0){posStr[0]=' left: '+X+'px;top: 0';posStr[1]=' left:0;top:0';} +}else if(o3_shadowx>0){if(o3_shadowy>0){posStr[0]=' left:'+X+'px;top:'+Y+'px';posStr[1]=' left:0;top:0';}else if(o3_shadowy<0){posStr[0]=' left:'+X+'px;top:0';posStr[1]=' left:0;top: '+Y+'px';} +}else if(o3_shadowx<0){if(o3_shadowy>0){posStr[0]=' left:0;top:'+Y+'px';posStr[1]=' left:'+X+'px;top:0';}else if(o3_shadowy<0){posStr[0]=' left:0;top:0';posStr[1]=' left:'+X+'px;top:'+Y+'px';}} +txt=(olNs4)?'
':((olIe55&&olHideForm)?backDropSource(wd+X,ht+Y,zIdx++):'')+'
'+content+'
';}else{txt+=bS+'">
'+content+'
';} +layerWrite(txt); +if(olNs4&&bkSet){dpObj=over.document.layers['backdrop'];if(typeof dpObj=='undefined')return; +puObj=over.document.layers['PUContent'];wd=puObj.clip.width;ht=puObj.clip.height;aPos=posStr[0].split(';'); +dpObj.clip.width=wd;dpObj.clip.height=ht;dpObj.left=parseInt(aPos[0].split(':')[1]);dpObj.top=parseInt(aPos[1].split(':')[1]); +dpObj.bgColor=(bkSet==1)?null:o3_shadowcolor;dpObj.background.src=(bkSet==2)?null:o3_shadowimage;dpObj.zIndex=0; +aPos=posStr[1].split(';');puObj.left=parseInt(aPos[0].split(':')[1]);puObj.top=parseInt(aPos[1].split(':')[1]);puObj.zIndex=1; +}else{puObj=(olIe4?o3_frame.document.all['PUContent']:o3_frame.document.getElementById('PUContent'));dpObj=(olIe4?o3_frame.document.all['backdrop']:o3_frame.document.getElementById('backdrop'));ht=puObj.offsetHeight;dpObj.style.height=ht+'px'; +if(o3_shadowopacity){var op=o3_shadowopacity;op=(op<=100?op:100); +setBrowserOpacity(op,dpObj);}} +o3_width=wd+X;o3_aboveheight=ht+Y;} +function cleanUpShadowEffects(){if(olNs4||olOp)return;var dpObj=(olIe4?o3_frame.document.all['backdrop']:o3_frame.document.getElementById('backdrop'));cleanUpBrowserOpacity(dpObj);} +function setBrowserOpacity(op,lyr){if(olNs4||!op)return;lyr=(lyr)?lyr:over;if(olIe4&&typeof lyr.filters!='undefined'){lyr.style.filter='Alpha(Opacity='+op+')';lyr.filters.alpha.enabled=true;}else{var sOp=(typeof(lyr.style.MozOpacity)!='undefined')?'MozOpacity':(typeof(lyr.style.KhtmlOpacity)!='undefined'?'KhtmlOpacity':(typeof(lyr.style.opacity)!='undefined'?'opacity':''));if(sOp)eval('lyr.style.'+sOp+'=op/100');}} +function cleanUpBrowserOpacity(lyr){if(olNs4)return;lyr=(lyr)?lyr:over;if(olIe4&&(typeof lyr.filters!='undefined'&&lyr.filters.alpha.enabled)){lyr.style.filter='Alpha(Opacity=100)';lyr.filters.alpha.enabled=false;}else{var sOp=(typeof(lyr.style.MozOpacity)!='undefined')?'MozOpacity':(typeof(lyr.style.KhtmlOpacity)!='undefined'?'KhtmlOpacity':(typeof(lyr.style.opacity)!='undefined'?'opacity':''));if(sOp)eval('lyr.style.'+sOp+'=1.0');}} +function shadowAdjust(){if(!olNs4)return;var fac=ol_shadowadjust;if(olNs4){document.write(' + + + + + + diff --git a/html/menu/simple.css b/html/menu/simple.css new file mode 100644 index 0000000000..9090934c26 --- /dev/null +++ b/html/menu/simple.css @@ -0,0 +1,161 @@ +/* + +// +// Copyright (C) Julian I. Kamil +// No warranty is provided. Use at your own risk. +// +// Commercial support is available through ESV Media Group +// who can be reached at: http://www.ESV-i.com/. +// +// Name: simple.css +// Author: Julian I. Kamil +// Created: 2005-05-18 +// Description: +// This is a simple skin for PmWiki. Please see: +// http://www.madhckr.com/project/PmWiki/SimpleSkin +// for a live example and doumentation. +// +// $Id: simple.css,v 1.3 2005/09/14 15:14:27 julian Exp $ +// +// History: +// 2005-05-18 jik Created. +// 2005-08-16 jik Simplified and cleaned up. +// + +*/ + +body { + margin: 0px; padding: 0px 0px 0px 0px; + background-color: #fff; color: #666; + font: 10pt Verdana; + line-height: 20px; +} + +table { border-collapse: collapse; margin: 0px; } +table tr td { border: 0px solid #ddd; padding: 0px 10px; vertical-align: top; } +form { margin: 0px; padding: 0px; } +hr { border: 0px; height: 1px; background-color: #ccc; color: #ccc; } +p { margin: 0px; padding: 0px; } + +ul { margin: 0px 24px; padding: 0px; list-style: disc outside; } +ul ul { margin-top: 0px; padding-top: 0px; list-style: circle outside; } +ul ul ul { margin-top: 0px; padding-top: 0px; list-style: square outside; } + +a { text-decoration:none; color: #00f; } +a:visited { text-decoration:none; color: #00f; } +a:hover { text-decoration:underline; color: #00f; } +a:active { color: #00f; } + +.vspace { margin-top: 4px; margin-bottom: 4px; } +p.vspace { padding-top: 3px; padding-bottom: 3px; } +.content-mat { padding: 10px; margin: auto; background: none; } +.clearer{ clear: both; display: block; margin: 0px; padding: 0px; height: 0px; line-height: 1px; font-size: 0px; } +.borderless-table tr td { border: none } + +#header { width: 100%; height: 90px; margin: 0px; text-align: left; background-color: #000; } +#header #page-title { color: #eeeeee; font: 18pt Arial; font-weight: bold; padding: 15px 8px 8px 15px; } +#header #page-subtitle { color: #eeeeee; font: 12pt Arial; font-weight: bold; padding: 0px 8px 8px 15px; } +#header a { color: #eeeeee; } + +#main { + width: 100%; margin: 0px 0px 0px 0px; + border-bottom: 1px solid transparent; +} + +#main h1 { font-size: 12pt; margin: 0px; padding: 0px; } +#main h2 { font-size: 11pt; margin: 0px; padding: 0px; } +#main h3 { font-size: 10pt; margin: 0px; padding: 0px; } +#main h4 { font-size: 9pt; margin: 0px; padding: 0px; } + +#content { margin: 0px; text-align: left; padding: 0px; } + +#footer { + width: 100%; height: 40px; + border: 1px none #ccc; + margin: 0px 0px 0px 0px; padding: 0px 0px 8px 0px; +} + +#copyright { margin: 0px 12px 0px 11px; padding: 2px 0px; border-top: 1px solid #ddd; font-size: 8pt; } + +#topnav { + margin: 0px 0px 0px 0px; + padding: 0px 0px 0px 0px; + text-align: right; + font-size: 11px; font-weight: bold; +} + +#topnav ul { margin: 15px 0px 0px 0px; padding: 0px; } +#topnav ul li { list-style: none; display: text-indent: 0px; display: inline; padding-right: 10px; } +#topnav a { color: #eee;} + + +#menubar { + margin: 0px 0px 0px 0px; + padding: 3px 15px 3px 15px; + border-bottom: 1px solid #e8e8e8; + background-color: #e8e8e8; + text-align: left; + font-size: 10px; font-weight: bold; +} + +#menubar ul { margin: 0px; padding: 0px; } +#menubar ul li { list-style: none; display: inline; text-indent: 0px; text-align: left; padding-right: 15px; } +#menubar a { color: #666; } + +#popupmenu a { color: #aaa; } +#popupmenu a:hover { color: #fff; } +#popupmenu li:hover { background: #444; color: #eec; } +#popupmenu li:hover ul { display: block; } +#popupmenu ul { padding: 0px; margin: 0px; list-style: none; } +#popupmenu ul li { padding: 0px 8px; float: left; position: relative; } + +#popupmenu li ul { + display: none; + position: absolute; + top: 8px; + right: 0px; + width: 180px; + margin-top: 10px; + border-top: 1px solid #888; + border-bottom: 1px solid #888; + padding-top: 3px; + padding-bottom: 4px; + background: #444; +} + +#popupmenu li ul li { + display: block; + clear: both; + color: #aaa; +} + +#popupmenu li ul li:hover { color: #aaa; } + +#toext { margin-top: 12px; margin-bottom: 12px; font-family: monospace; } + +.graphcell, .ifcell, .datacell { margin: 5px; left; padding: 10px; border: 0px; background: #e8e8e8; float: left; } +.ifcell { float: left; clear: right; background:none; } + +.nofloat { clear: left; } + +.servercell, .corecell, .othercell, .custcell, .unlabelledcell, .cpecell, .unknowncell { +float: left; padding: 0px; margin: 3px; border: 1px; height: 100px; width: 140px; +text-align: center; +} + +.corecell, .servercell, .othercell { +background: #ffa0a0; +} + +.custcell, .cpecell { +background: #ffe0e0; +} + +.unknowncell { +background: #ddd; +} + +.unlabelledcell { +background: #eee; +} + diff --git a/html/netcmd.php b/html/netcmd.php new file mode 100644 index 0000000000..106fc66e4a --- /dev/null +++ b/html/netcmd.php @@ -0,0 +1,20 @@ +$output"); + +?> diff --git a/html/network/includes/.confirm_login.php.swp b/html/network/includes/.confirm_login.php.swp new file mode 100644 index 0000000000..e542b03859 Binary files /dev/null and b/html/network/includes/.confirm_login.php.swp differ diff --git a/html/network/includes/.login.inc.php.swo b/html/network/includes/.login.inc.php.swo new file mode 100644 index 0000000000..e4331bcd51 Binary files /dev/null and b/html/network/includes/.login.inc.php.swo differ diff --git a/html/network/includes/.login.inc.php.swp b/html/network/includes/.login.inc.php.swp new file mode 100644 index 0000000000..f8e57a0a5e Binary files /dev/null and b/html/network/includes/.login.inc.php.swp differ diff --git a/html/network/includes/authenticate.inc b/html/network/includes/authenticate.inc new file mode 100644 index 0000000000..1fb38e34b9 --- /dev/null +++ b/html/network/includes/authenticate.inc @@ -0,0 +1,40 @@ + diff --git a/html/network/includes/hostbox.inc b/html/network/includes/hostbox.inc new file mode 100644 index 0000000000..b6a037c5b1 --- /dev/null +++ b/html/network/includes/hostbox.inc @@ -0,0 +1,30 @@ +$device[hostname]

"); + if($device[location] != "") { $locationhtml = $device[location]; } + + $type = strtolower($device['os']); + if(file_exists("../images/os/$type" . ".gif")){ $image = ""; } + + if ($device['os'] == "IOS") { + echo ("

+

$image
+ $device[hardware]
$device[os] $device[version]
+ $device[features]
+ $locationhtml
+ Up " . formatUptime($device[uptime]) ."

"); + } else { + echo ("

$image $device[os] $device[version] ($device[features]) +
$locationhtml
+ Up " . formatUptime($device[uptime]) ."

"); + } + + if($_GET['page'] == 'device') { + if($_GET['graphs'] == 'yes') { + echo("

Hide Graphs

"); + } else { + echo("

Show Graphs

"); + } + } + +?> diff --git a/html/network/includes/ifbox.inc b/html/network/includes/ifbox.inc new file mode 100644 index 0000000000..06fdc5c0d8 --- /dev/null +++ b/html/network/includes/ifbox.inc @@ -0,0 +1,23 @@ +$inf

"); + if($ifalias && $ifalias != "") { echo("$ifalias
"); } + if($iftype && $iftype != "") { echo("$iftype "); + if($mac && $mac != "") { echo("$mac
"); + } else { echo("
"); } + } + + if($interface[ifType] != "softwareLoopback") { + if($speed == '0') { $speed = "0bps"; } + echo("$speed"); + if($interface[ifDuplex] != unknown) { echo(" / $interface[ifDuplex]-duplex"); } + if($interface[ifMtu] && $interface[ifMtu] != "") { echo(" / $interface[ifMtu]MTU"); } + echo("

"); + } + + echo ("$status
"); + + +?> diff --git a/html/network/includes/print-interface.inc b/html/network/includes/print-interface.inc new file mode 100644 index 0000000000..767dd7c70a --- /dev/null +++ b/html/network/includes/print-interface.inc @@ -0,0 +1,95 @@ +";} + echo(" + + + $i. $inf +
$ifname"); + if($ifalias && $ifalias != "") { echo("$ifalias
"); } + unset ($break); + + $iftype = fixiftype($interface[ifType]); +if($show_all) { + if($iftype && $iftype != "") { echo("$iftype "); + if($mac && $mac != "") { echo("$mac
"); + } else { echo("
"); } + } + + if($interface[ifType] != "softwareLoopback") { + if($speed == '0') { $speed = "0bps"; } + echo("$speed"); + if($interface[ifDuplex] != unknown) { echo(" / $interface[ifDuplex]-duplex"); } + if($interface[ifMtu] && $interface[ifMtu] != "") { echo(" / $interface[ifMtu]MTU"); } + echo("
"); + } + + echo ("$status
"); +} + + $ipdata = mysql_query("SELECT * FROM `ipaddr` WHERE `interface_id` = '$interface[id]'"); + while($ip = mysql_fetch_Array($ipdata)) { + echo("$break $ip[addr]/$ip[cidr]"); + $break = "
"; + } + echo(""); + echo(""); + + if ( strpos($inf, "oopback") === false ) { + + $link_query = mysql_query("select I.if, D.hostname, D.id AS dev_id, I.id from links AS L, interfaces AS I, devices AS D WHERE L.src_if = '$if_id' AND L.dst_if = I.id AND I.host = D.id"); + while($link = mysql_fetch_array($link_query)) { + $link_if = fixifName($link['if']); + echo("--> $link_if on $link[hostname]
"); + $br = "
"; + } + $adj_sql = "SELECT * FROM networks AS N, interfaces AS I, adjacencies AS A "; + $adj_sql = $adj_sql . "WHERE I.id = A.interface_id AND A.network_id = N.id "; + $adj_sql = $adj_sql . "AND I.id = '$if_id'"; + $adj_query = mysql_query("$adj_sql"); + while($adjs = mysql_fetch_array($adj_query)) { + $network_id = $adjs['network_id']; + $newsql = "SELECT *, I.id AS iid, D.id AS did FROM adjacencies AS A, networks as N, interfaces as I, devices as D "; + $newsql = $newsql . "WHERE N.id = '$network_id' AND A.network_id = N.id AND I.id = A.interface_id AND D.id = I.host "; + $newsql = $newsql . "AND D.id != '$device[id]' AND I.if NOT LIKE '%loopback%' GROUP BY D.id ORDER BY D.hostname"; + $new_query = mysql_query($newsql); + while($new = mysql_fetch_array($new_query)) { + if ($new['status'] == '0') { $class = "red"; } else { $class = "blue"; } + if ($new['ignore'] == '1') { + $class = "list-device-ignored"; + if ($new['status'] == '1') { $class = "green"; } + } + $this_ifid = $new['iid']; + $this_hostid = $new['did']; + $this_hostname = $new['hostname']; + $this_ifname = fixifName($new['if']); + $wq = mysql_query("select count(*) FROM links WHERE dst_if = '$this_ifid' AND src_if = $if_id;"); + if (@mysql_result($wq, 0) == '0') { + echo("$br  |- $this_ifname on $this_hostname"); + $br = "
"; + } + } + } + } + echo(""); + + // If we're showing graphs, generate the graph and print the img tags + if($_GET[graphs] == 'yes' && is_file("rrd/" . $hostname . ".". $ifIndex . ".rrd")) { + $trafgraph = trafgraph ($hostname . ".". $ifIndex . ".rrd", $hostname . ".". $ifIndex . "-traf.png"); + $trafgraphmonth = trafgraph ($hostname . ".". $ifIndex . ".rrd", $hostname . ".". $ifIndex . "-month-traf.png", "-1m"); + if($trafgraph !== false) { + echo(" "); + } + } + + $i++; + echo(""); + + +?> diff --git a/html/network/includes/topnav.inc b/html/network/includes/topnav.inc new file mode 100644 index 0000000000..9b4d7637b5 --- /dev/null +++ b/html/network/includes/topnav.inc @@ -0,0 +1,20 @@ + + + + + + + + + + + +
+ Network + + Wiki +
+ Support + + DNS Admin +
diff --git a/html/pages/addhost.php b/html/pages/addhost.php new file mode 100644 index 0000000000..4107e5d920 --- /dev/null +++ b/html/pages/addhost.php @@ -0,0 +1,40 @@ + '5') { + $hostname = $_POST['hostname']; + $community = $_POST['community']; + $snmpver = $_POST['snmpver']; + echo("

"); + echo("Adding host $hostname community $community

"); + addHost($hostname, $community, $snmpver); + echo("

"); + } else { + echo("

Error: You don't have the necessary privileges to add hosts.

"); + } +} elseif ( $_POST['hostname'] && !$_POST['community'] ) { + echo("

Error: A community string is required.

"); +} elseif ( !$_POST['hostname'] && $_POST['community'] ) { +echo("

Error: A hostname is required.

"); +} + +?> + +
+

Add Host

+
+

Hostname: + +
+ Community: + +
+ SNMP Version: +

+

+ +

+
diff --git a/html/pages/addsrv.php b/html/pages/addsrv.php new file mode 100644 index 0000000000..43b2e6f6db --- /dev/null +++ b/html/pages/addsrv.php @@ -0,0 +1,75 @@ + "5") { + include("includes/add-srv.inc"); + } +} + +if ($handle = opendir($installdir . "/includes/services/")) { + while (false !== ($file = readdir($handle))) { + if ($file != "." && $file != "..") { + $servicesform .= ""; + } + } + closedir($handle); +} + +$query = mysql_query("SELECT * FROM `devices` ORDER BY `hostname`"); +while($device = mysql_fetch_array($query)) { + $devicesform .= ""; +} + +if($updated) { print_message("Device Settings Saved"); } + +echo(" +

Add Service

+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ Device + + +
+ Type + + +
Description
IP Address
Parameters
+ + +
"); + + +} + diff --git a/html/pages/alerts.php b/html/pages/alerts.php new file mode 100644 index 0000000000..2c96939d4e --- /dev/null +++ b/html/pages/alerts.php @@ -0,0 +1,69 @@ + + +"); + +$query = mysql_query($sql); +while($event = mysql_fetch_array($query)) +{ + +if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; } + +$type = $event[importance]; + +switch ($type) { +case "9": + $type = ""; + break; +case "7": + $type = ""; + break; +case "2": + $type = ""; + break; +case "0": + $type = ""; + break; +} + +if(!$argh) { + echo (" + + + + $event[time] + + + $event[hostname] + + + $type + + + $event[message] + + + + + + + + + +"); +} + +} + +?> + diff --git a/html/pages/customers.php b/html/pages/customers.php new file mode 100644 index 0000000000..de76571603 --- /dev/null +++ b/html/pages/customers.php @@ -0,0 +1,61 @@ +"); + + while($data = mysql_fetch_array($query)) { + unset($class); + $iid = $data[iid]; + $ifIndex = $data[ifIndex]; + $did = $data[did]; + $hostname = $data[hostname]; + $up = $data[up]; + $up_admin = $data[up_admin]; + $ifname = fixifname($data[ifname]); + $ifalias = $data[ifalias]; + $ifalias = str_replace("Cust: ", "", $ifalias); + $ifalias = str_replace("[PNI]", "Private", $ifalias); + $ifclass = ifclass($up, $up_admin); + + $displayifalias = $ifalias; + $ifalias = str_replace(" [","|",$ifalias); + $ifalias = str_replace("] (","|",$ifalias); + $ifalias = str_replace(" (","||",$ifalias); + $ifalias = str_replace("]","|",$ifalias); + $ifalias = str_replace(")","|",$ifalias); + list($ifalias,$class,$notes) = explode("|", $ifalias); + $useifalias = $ifalias; + $used = '1'; + if ($ifalias == $previfalias) { unset($useifalias ); + } elseif ($previfalias) { + echo(""); + if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; } + } + $previfalias = $ifalias; + + $mouseoverint = "onmouseover=\"return overlib('');\" + onmouseout=\"return nd();\""; + $mouseoverhost = "onmouseover=\"return overlib('');\" + onmouseout=\"return nd();\""; + + + echo(" + + + $useifalias + $hostname + $ifname + $notes + + "); + + } + + echo(""); + +?> diff --git a/html/pages/default.php b/html/pages/default.php new file mode 100644 index 0000000000..6821c10f78 --- /dev/null +++ b/html/pages/default.php @@ -0,0 +1,112 @@ + '0' AND `uptime` < '86400'"); +while($device = mysql_fetch_array($sql)){ + $rebooted[] = "$device[id]"; +} +?> + + + + + + +
+
Nodes with Outages
+ +$int[0] - $int[1]"; } + foreach ($intlist as $intname) { $intpop .= "$br $intname"; $br = "
"; } + unset($br); + if($intpop) {$intpop = "onmouseover=\"return overlib('$intpop', WIDTH, 350);\" onmouseout=\"return nd();\""; } + + $srvlist = array(); + $sql = mysql_query("SELECT `service_type`, `service_message` FROM services WHERE `service_status` = '0' AND `service_host` = '$node'"); + while($srv = mysql_fetch_row($sql)) { $srvlist[] = "$srv[0] - " . trim($srv[1]); } + foreach ($srvlist as $srvname) { $srvpop .= "$br " . truncate($srvname, 100); $br = "
"; } + unset($br); + if($srvpop) { + $srvpop = "onmouseover=\"return overlib('$srvpop', WIDTH, 350);\" onmouseout=\"return nd();\""; + $srvpop = str_replace("\n", ". ", $srvpop); + } + + $mouseover = "onmouseover=\"return overlib('');\" + onmouseout=\"return nd();\""; + + if(hoststatus($node)) { $statimg = "Host Up"; } + else { $statimg = "Host Down";} + if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; } + echo(" + + + + "); + + unset($int, $ints, $intlist, $intpop, $srv, $srvlist, $srvname, $srvpop); + +} + +echo("
Host
Int
Srv
$host$statimg$ints$services
"); + +?> +
+
Network Infrastructure Diagram
+ Auto-generated network diagram +
diff --git a/html/pages/delhost.php b/html/pages/delhost.php new file mode 100644 index 0000000000..d1d7f49af8 --- /dev/null +++ b/html/pages/delhost.php @@ -0,0 +1,31 @@ + '9') { + delHost($id); +} elseif ($_POST['id']) { +echo("

Error: You don't have the necessary privileges to remove hosts.

"); +} + +?> + +
+

Delete Host

+
+

+ + +

+
+ diff --git a/html/pages/device.php b/html/pages/device.php new file mode 100644 index 0000000000..2bb13bfcab --- /dev/null +++ b/html/pages/device.php @@ -0,0 +1,96 @@ +"); + include("includes/device-header.inc"); + echo("
"); + +echo("
"); + +echo(" +"); +echo(" +
"); + +include("includes/$section.inc"); + +echo("
+"); +} +?> + diff --git a/html/pages/devices.php b/html/pages/devices.php new file mode 100644 index 0000000000..436724a079 --- /dev/null +++ b/html/pages/devices.php @@ -0,0 +1,33 @@ +"); + +//echo(" +// +//Hostname - Description +//Operating System - Version +//Hardware - Features +//Uptime - Location +// +//"); + +while($device = mysql_fetch_array($device_query)) { + + include("includes/hostbox.inc"); + +} + +echo(""); + +?> diff --git a/html/pages/downhosts.php b/html/pages/downhosts.php new file mode 100644 index 0000000000..e72520c5f3 --- /dev/null +++ b/html/pages/downhosts.php @@ -0,0 +1,52 @@ + +$type

"); +echo(""); + +$i = 1; + +while($data = mysql_fetch_array($query)) { + + unset($class); unset($flags); + $id = $data[id]; + $hostname = $data[hostname]; + $os = $data[os]; + $uptime = $data[uptime]; + $hardware = $data[hardware]; + $version = $data[version]; + $location = $data[location]; + $status = $data[status]; + $hostname = str_replace(".enta.net","",$hostname); + + if($status == '0') { + $flags = "Unreachable"; + $class = "unreachable"; + } elseif ($uptime < '3600') { + $flags = "Rebooted"; + $class = "rebooted"; + } + + unset($colour); + $hostname = makeshorthost($hostname); + + echo(""); + } + } + +echo("
+ $hostname
+ $flags
+ $hardware $os $version +
$location
+ "); + if ($i < 5) { + $i++; + } else { + $i=1; + echo("
"); +?> diff --git a/html/pages/downinterfaces.php b/html/pages/downinterfaces.php new file mode 100644 index 0000000000..350c487de6 --- /dev/null +++ b/html/pages/downinterfaces.php @@ -0,0 +1,117 @@ + +$type

"); + +if($_GET['format'] == "rows") { +echo(""); +echo(" + + + + + + + + + + + + "); +} else { +#echo("
Last ChangedHostnameInterfaceDescriptionTypeNotes
"); +} +$i = 1; + + while($data = mysql_fetch_array($query)) { + unset($class); + $iid = $data[iid]; + $did = $data[did]; + $hostname = $data[hostname]; + $lastchange = $data[changed]; + $up = $data[up]; + $up_admin = $data[ip_admin]; + $ifname = fixifname($data[ifname]); + $ifnamelong = $ifname; + $hostnamelong = $data[hostname]; + $ifalias = $data[ifalias]; + + $hostname = str_replace(".enta.net","",$hostname); + +unset($colour); + + + if($ifalias == "") { $ifalias = "* Unlabelled *"; } + + $ifalias = str_replace(" [","|",$ifalias); + $ifalias = str_replace("] (","|",$ifalias); + $ifalias = str_replace(" (","||",$ifalias); + $ifalias = str_replace("]","|",$ifalias); + $ifalias = str_replace(")","|",$ifalias); + list($ifalias,$type,$notes) = explode("|", $ifalias); + + if( strpos($ifalias,': ')) { + list($class,$ifalias) = split(": ",$ifalias,2); + } + if($class == "") { + if($ifalias == "* Unlabelled *") { + $class = "unlabelled"; } + else { + $class = "unknown"; } + } + $class = $class . "cell"; + $ifname = makeshortif($ifname); + $class = strtolower($class); + + if($_GET['format'] == "rows") { + + echo(" + + + + + + + + + + + + "); + + } else { + + + echo("
+ $hostname
+ $ifname
+ $ifalias
+ $type
+ $notes +
"); + + +# echo(" +# "); +# if ($i < 6) { +# $i++; +# } else { +# $i=1; +# echo(""); +# } + } + + } + +echo("
$lastchange$hostnamelong$ifnamelong$ifalias$type$notes
+# $ifalias
+# $type $notes

+# $hostname
+# $ifname
"); +?> diff --git a/html/pages/eventlog.php b/html/pages/eventlog.php new file mode 100644 index 0000000000..ddbe8edf3e --- /dev/null +++ b/html/pages/eventlog.php @@ -0,0 +1,15 @@ +"); + +while($entry = mysql_fetch_array($data)) { + include("includes/print-event.inc"); +} + +echo(""); + + ?> diff --git a/html/pages/ifdown.php b/html/pages/ifdown.php new file mode 100644 index 0000000000..e4684706a8 --- /dev/null +++ b/html/pages/ifdown.php @@ -0,0 +1,63 @@ + + + + + $ifalias
+ $type $notes

+ $hostname
+ $ifname
+ + + + "); + + } + +?> diff --git a/html/pages/iftype.php b/html/pages/iftype.php new file mode 100644 index 0000000000..f0fc8917ec --- /dev/null +++ b/html/pages/iftype.php @@ -0,0 +1,43 @@ +"); + +if($_GET['id']) { + $type = $_GET['id']; + $sql = "select *, I.id as iid, I.ifIndex as ifIndex, D.id as did, D.hostname as hostname, I.if as ifname, I.name as ifalias "; + $sql .= "from interfaces as I, devices as D WHERE `name` like '$type: %' AND I.host = D.id ORDER BY I.name"; + $query = mysql_query($sql); + while($data = mysql_fetch_array($query)) { + $done = "yes"; + unset($class); + $iid = $data[iid]; + $ifIndex = $data[ifIndex]; + $did = $data[did]; + $hostname = $data[hostname]; + $up = $data[up]; + $up_admin = $data[up_admin]; + $ifname = fixifname($data[ifname]); + $ifalias = $data[ifalias]; + $ifalias = str_replace($type . ": ", "", $ifalias); + $ifalias = str_replace("[PNI]", "Private", $ifalias); + $ifclass = ifclass($up, $up_admin); + if($bg == "#ffffff") { $bg = "#e5e5e5"; } else { $bg="#ffffff"; } + echo(" + $ifalias
+ $hostname $ifname"); + +if(file_exists("rrd/" . $hostname . ".". $ifIndex . ".rrd")) { + + $graph_type = "bits"; + include("includes/print-interface-graphs.php"); + +} + echo(""); + } +} + +echo(""); + +if(!$done) { echo("None found."); } + +?> diff --git a/html/pages/interface.php b/html/pages/interface.php new file mode 100644 index 0000000000..68a636cb9e --- /dev/null +++ b/html/pages/interface.php @@ -0,0 +1,77 @@ +Disabled"; } + if ($up_admin == "up" && $up == "down") { $status = "Enabled / Disconnected"; } + if ($up_admin == "up" && $up == "up") { $status = "Enabled / Connected"; } + + $i = 1; + $inf = fixifName($ifname); + +# $bg="#ffffff"; + echo(""); + include("includes/device-header.inc"); + echo("
"); + + $show_all = 1; + + echo("
"); + + include("includes/print-interface.inc"); + + echo("
"); + + $pos = strpos(strtolower($ifname), "vlan"); + if( $pos !== false ) { + $broke = yes; + } + $pos = strpos(strtolower($ifname), "loopback"); + if( $pos !== false ) { + $broke = yes; + } + +if( !$broke) +{ } + +echo("
"); + +if(file_exists("rrd/" . $hostname . ".". $ifIndex . ".rrd")) { + + $iid = $id; + echo("
Interface Traffic
"); + $graph_type = "bits"; + include("includes/print-interface-graphs.php"); + + echo("
Interface Packets
"); + $graph_type = "pkts"; + include("includes/print-interface-graphs.php"); + + echo("
Interface Non Unicast
"); + $graph_type = "nupkts"; + include("includes/print-interface-graphs.php"); + + echo("
Interface Errors
"); + $graph_type = "errors"; + include("includes/print-interface-graphs.php"); + +} + +?> diff --git a/html/pages/interfaces.php b/html/pages/interfaces.php new file mode 100644 index 0000000000..ff487b9851 --- /dev/null +++ b/html/pages/interfaces.php @@ -0,0 +1,31 @@ +"); + +echo("DeviceInterfaceSpeedMediaDescription"); + +$row = 1; + +while($iface = mysql_fetch_array($query)) { + + if(is_integer($row/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; } + + $speed = humanspeed($iface['ifSpeed']); + $if_link = generateiflink($iface); + $dev_link = generatedevicelink($iface); + $type = humanmedia($iface['ifType']); + + echo("$dev_link$if_link$speed$type$iface[name]\n"); + + $row++; + +} + +echo(""); + + +?> + diff --git a/html/pages/list.php b/html/pages/list.php new file mode 100644 index 0000000000..0537c2d461 --- /dev/null +++ b/html/pages/list.php @@ -0,0 +1,31 @@ +"); + +echo(" + +Hostname - Description +Operating System - Version +Hardware - Features +Uptime - Location + +"); + +while($device = mysql_fetch_array($device_query)) { + + include("includes/hostbox.inc"); + +} + +echo(""); + +?> diff --git a/html/pages/locations.php b/html/pages/locations.php new file mode 100644 index 0000000000..dcf0e8f7c9 --- /dev/null +++ b/html/pages/locations.php @@ -0,0 +1,37 @@ +"); + +$device_query = mysql_query("select location from devices GROUP BY location ORDER BY location"); +while($device = mysql_fetch_array($device_query)) { + + if($bg == "#ffffff") { $bg = "#eeeeee"; } else { $bg="#ffffff"; } + + $num = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]'"),0); + $net = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]' AND type = 'network'"),0); + $srv = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]' AND type = 'server'"),0); + $fwl = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]' AND type = 'firewall'"),0); + + $hostalerts = mysql_result(mysql_query("SELECT COUNT(id) FROM devices WHERE location = '$device[location]' AND status = '0'"),0); + if($hostalerts) { $alert = ""; } + + $loc = $device[location]; + + if($loc != "") { + echo(" + + + + + + + + + "); + + $done = "yes"; + } +} + +echo("
$loc$alert$num devices$net network$srv servers$fwl firewalls
"); + +?> diff --git a/html/pages/logon.inc b/html/pages/logon.inc new file mode 100644 index 0000000000..d4d74061e9 --- /dev/null +++ b/html/pages/logon.inc @@ -0,0 +1,35 @@ +
+ + + + + +
+
+

Please log in:

+ +
+ + + + + + + + + + + + + + + + +
Username
Password
Demo login : demo/demo
+
+
"); + +?> diff --git a/html/pages/services.php b/html/pages/services.php new file mode 100644 index 0000000000..56d4abd54e --- /dev/null +++ b/html/pages/services.php @@ -0,0 +1,24 @@ +"); +//echo(""); + + + $host_sql = "SELECT D.id, D.hostname FROM devices AS D, services AS S WHERE D.id = S.service_host GROUP BY D.hostname ORDER BY D.hostname"; + $host_query = mysql_query($host_sql); + while($host_data = mysql_fetch_array($host_query)) { + $device_id = $host_data[id]; + $device_hostname = $host_data[hostname]; + $service_query = mysql_query("SELECT * FROM `services` WHERE `service_host` = '$host_data[id]' $where"); + while($service = mysql_fetch_array($service_query)) { + include("includes/print-service.inc"); + $samehost = 1; + } + unset ($samehost); + } + + echo("
DeviceServiceStatusChangedCheckedMessage
"); + +?> diff --git a/html/pages/syslog.php b/html/pages/syslog.php new file mode 100644 index 0000000000..70c82fb528 --- /dev/null +++ b/html/pages/syslog.php @@ -0,0 +1,121 @@ + + + + + + + Time + + + + + Hostname + + + + + Type + + + + + Message + + + + "); + +$query = mysql_query($sql); +while($event = mysql_fetch_array($query)) +{ + unset($class); + unset($argh); + + $event[msg] = preg_replace("/.*%/", "", $event[msg]); + $event[msg] = preg_replace("/[0-9]+:\ /", "", $event[msg]); + + $prefix = preg_replace ("/(.+):\ .*/", "\\1", $event[msg]); + + $event[msg] = preg_replace ("/.+:\ /", "", $event[msg]); + + if($prefix == $event[msg]) { unset ($prefix); } + + $prefix = str_replace("CRYPTO-4-RECVD_PKT_INV_SPI: decaps", "Crypto Invalid SPI", $prefix); + $prefix = str_replace("LINEPROTO-5-UPDOWN", "Lineproto Up/Down", $prefix); + $prefix = str_replace("LINK-3-UPDOWN", "Link Up/Down", $prefix); + $prefix = str_replace("LINEPROTO-SP-5-UPDOWN", "Lineproto Up/Down", $prefix); + $prefix = str_replace("LINK-SP-3-UPDOWN", "Link Up/Down", $prefix); + + $prefix = str_replace("PIM-6-INVALID_RP_JOIN", "PIM Invalid RP Join", $prefix); + $prefix = str_replace("BGP-3-NOTIFICATION", "BGP Notification", $prefix); + $prefix = str_replace("LINK-3-UPDOWN", "Link Up/Down", $prefix); + $prefix = str_replace("DIALER-6-UNBIND", "Dialer Unbound", $prefix); + $prefix = str_replace("DIALER-6-BIND", "Dialer Bound", $prefix); + $prefix = str_replace("SYS-5-CONFIG_I", "System Configured", $prefix); + $prefix = str_replace("VPDN-6-CLOSED", "VPDN Closed", $prefix); + $prefix = str_replace("DIALER-6-BIND", "Dialer Bound", $prefix); + $prefix = str_replace("PCMCIAFS-5-DIBERR", "PCMCIA FS Error", $prefix); + $prefix = str_replace("BGP-5-ADJCHANGE", "BGP Adj Change", $prefix); + $prefix = str_replace("MSDP-5-PEER_UPDOWN", "MSDP Peer UP/Down", $prefix); + $prefix = str_replace("SYS-5-CONFIG_I", "System Configured", $prefix); + + $prefix = preg_replace("/.*ETHER-3-UNDERFLO/", "Ethernet Underflow", $prefix); + + if(strstr($event[msg], "BGP authentication failure") !== false) { $class = "pinkbg"; } + if(strstr($event[msg], "Down BGP Notification received") !== false) { $class = "redbg"; } + if(strstr($event[msg], "DOWN on interface") !== false) { $class = "redbg"; } + if(strstr($event[msg], "from FULL to DOWN") !== false) { $class = "redbg"; } + if(strstr($event[msg], "changed state to down") !== false) { $class = "redbg"; } + if(strstr($event[msg], "(cease)") !== false) { $class = "redbg"; } + if(strstr($event[msg], "(hold time expired)") !== false) { $class = "redbg"; } + if(strstr($event[msg], "Configured from console") !== false) { $class = "bluebg"; } + if(strstr($event[msg], "DR change ") !== false) { $class = "bluebg"; } + if(strstr($event[msg], "Up") !== false) { $class = "greenbg"; } + if(strstr($event[msg], "from LOADING to FULL") !== false) { $class = "greenbg"; } + if(strstr($event[msg], "UP on interface ") !== false) { $class = "greenbg"; } + if(strstr($event[msg], "changed state to up") !== false) { $class = "greenbg"; } + if(strstr($event[msg], "A format in this router is required") !== false) { $class = "greybg"; } + if(strstr($event[msg], "bytes failed from") !== false) { $class = "greybg"; } + if($event[msg] == "Attempted to connect to RSHELL from 195.74.96.24" ) { $argh = 1; } + + $event[msg] = str_replace("PCMCIA disk 0 is formatted from a different router or PC. A format in this router is required before an image can be booted from this device", "PCMCIA diak 0 is incorrectly formatted", $event[msg]); + +if(!$argh) { + echo (" + + + + + $event[humandate] + + + + + $event[host] + + + + + $prefix + + + + + $event[msg] + + + + + +"); +} + +} + +?> + diff --git a/html/phones/config.php b/html/phones/config.php new file mode 100644 index 0000000000..64387dd72b --- /dev/null +++ b/html/phones/config.php @@ -0,0 +1,5 @@ + diff --git a/html/rrd b/html/rrd new file mode 120000 index 0000000000..70c6b9ed64 --- /dev/null +++ b/html/rrd @@ -0,0 +1 @@ +../rrd/ \ No newline at end of file diff --git a/html/whois.php b/html/whois.php new file mode 100644 index 0000000000..bf6b104cf2 --- /dev/null +++ b/html/whois.php @@ -0,0 +1,10 @@ +$output"); + +?> diff --git a/includes/cdp.php b/includes/cdp.php new file mode 100644 index 0000000000..560867a7e6 --- /dev/null +++ b/includes/cdp.php @@ -0,0 +1,180 @@ +host=$host; + $this->community=$community; + } + + /** + * Identify + * Determines if the queried device is made by Cisco or not. + * $type = $snmp->identify(); + * @return string + */ + function identify() { + $ret=snmpget($this->host,$this->community,"SNMPv2-MIB::sysDescr.0"); + if (substr_count($ret,"Cisco") > 0) { + return "cisco"; + } else { + return "unknown"; + } + } + + /** + * Location + * Returns the location string configured on the device. + * $location = $snmp->location(); + * @return string + */ + function location() { + return snmpget($this->host,$this->community,"SNMPv2-MIB::sysLocation.0"); + } + + /** + * Function to determine if port is up or down from returned SNMP string. + * @access private + */ + function _isitup($text) { + $x = substr($text,9); + switch($x) { + case "up(1)": return true; break; + case "down(2)": return false; break; + } + } + + /** + * Returns the type of port depending on the returned SNMP string. + * @access private + */ + function _porttype($text) { + $x = substr($text,9); + switch($x) { + case "ethernetCsmacd(6)": return "ethernet"; break; + case "propVirtual(53)": return "virtual"; break; + case "propPointToPointSerial(22)": return "serial"; break; + default: return $text; break; + } + } + + /** + * Get Port List + * Returns an array forming a list of the ports on the device, including name, alias and type. + * The returned array is indexed by the port index in the SNMP tree. + * + * $snmp->getports(); + * + * An example of the output: + * Array + * ( + * [2] => Array + * ( + * [desc] => GigabitEthernet0/1 + * [alias] => + * [type] => ethernet + * ) + * ) + * @return array + */ + function getports() { + $nosint = @snmpget($this->host,$this->community,"IF-MIB::ifNumber.0"); + $ports = @snmpwalk($this->host,$this->community,"IF-MIB::ifIndex"); + $results=array(); + foreach($ports as $port) { + $x = substr($port,9); + $admin = snmpget($this->host,$this->community,"IF-MIB::ifAdminStatus.$x"); + if ($this->_isitup($admin)==true) { + $desc = substr(snmpget($this->host,$this->community,"IF-MIB::ifDescr.$x"),8); + $alias = substr(snmpget($this->host,$this->community,"IF-MIB::ifAlias.$x"),8); + $type = $this->_porttype(snmpget($this->host,$this->community,"IF-MIB::ifType.$x")); + $results["$x"]=array("desc"=>$desc,"alias"=>$alias,"type"=>$type); + } + } + return $results; + } + + /** + * Port Status + * Returns the status of an individual port. Takes the SNMP index as the parameter. + * if ($snmp->portstatus(2)==true) { + * echo "Port is up!"; + * } + * @var integer $id + * @return bool + */ + function portstatus($id) { + $adminStatus = @snmpget($this->host,$this->community,"IF-MIB::ifAdminStatus.$id"); + if ($this->_isitup($adminStatus)==true) { + $operStatus = @snmpget($this->host,$this->community,"IF-MIB::ifOperStatus.$id"); + if ($this->_isitup($operStatus)==true) { + return true; + } else { + return false; + } + } else { + return true; + } + } + + /** + * @access private + */ + function _walkget($oid) { + $ret = snmpwalk($this->host,$this->community,$oid); + if (sizeof($ret) > 0) { + return $ret[0]; + } else { + return false; + } + } + + /** + * Explore CDP + * When supplied with the current port list from the device, it will determine each ports CDP status. + * Returns an array containing the device name and port of the remote SNMP device detected via CDP, + * assuming that it has the same community string as the initial device. The returned array is indexed + * by the SNMP ports of the initial device. + * + * $ports = $snmp->getports(); + * $cdp = $snmp->explore_cdp($ports); + * + * An example of the output will look like: + * Array + * ( + * [2] => Array + * ( + * [host] => second.device.hostname + * [port] => FastEthernet0/1 + * ) + * ) + * @var array ports + * @return array + */ + function explore_cdp($ports) { + $cdpports=array(); + foreach($ports as $id => $port) { + if ($ret = $this->_walkget("SNMPv2-SMI::enterprises.9.9.23.1.2.1.1.6.$id")) { + // this port is connected to another cisco! + $remote_id = substr($ret,9,strlen($ret)-10); + if ($ret = $this->_walkget("SNMPv2-SMI::enterprises.9.9.23.1.2.1.1.7.$id")) { + $remote_port = substr($ret,9,strlen($ret)-10); + } + #echo "$this->host($port[desc]) is connected to $remote_id($remote_port)\n"; + $cdpports[$id]=array('host'=>$remote_id,'port'=>$remote_port); + } + } + return $cdpports; + } + +} + +?> diff --git a/includes/functions.php b/includes/functions.php new file mode 100755 index 0000000000..4ad2ae5021 --- /dev/null +++ b/includes/functions.php @@ -0,0 +1,1046 @@ + $text"); + +} + +function print_message($text){ + +echo("
$text
"); + +} + +function truncate($substring, $max = 50, $rep = '...') { + if(strlen($substring) < 1){ + $string = $rep; + }else{ + $string = $substring; + } + + $leave = $max - strlen ($rep); + + if(strlen($string) > $max){ + return substr_replace($string, $rep, $leave); + }else{ + return $string; + } +} + +function geteventicon ($message) { + if($message == "Device status changed to Down") { $icon = "server_connect.png"; } + if($message == "Device status changed to Up") { $icon = "server_go.png"; } + if($message == "Interface went down" || $message == "Interface changed state to Down" ) { $icon = "if-disconnect.png"; } + if($message == "Interface went up" || $message == "Interface changed state to Up" ) { $icon = "if-connect.png"; } + if($message == "Interface disabled") { $icon = "if-disable.png"; } + if($message == "Interface enabled") { $icon = "if-enable.png"; } + if($icon) { return $icon; } else { return false; } +} + + +function generateiflink($iface, $text=0) { + global $twoday; + global $now; + if(!$text) { $text = fixIfName($iface['if']); } + $class = ifclass($iface['up'], $iface['up_admin']); + $graph_url = "graph.php?if=$iface[id]&from=$twoday&to=$now&width=400&height=120&type=bits"; + $link = "');\" onmouseout=\"return nd();\">$text"; + return $link; +} + +function generatedevicelink($device, $text=0) { + global $twoday; + global $now; + if($device['dev_id']) { $id = $device['dev_id']; } else { $id = $device['id']; } + $class = devclass($device); + if(!$text) { $text = $device[hostname]; } + $graph_url = "graph.php?host=$id&from=$twoday&to=$now&width=400&height=120&type=cpu"; + $link = "');\" onmouseout=\"return nd();\">$text"; + return $link; +} + +function devclass($device) { + if ($device['status'] == '0') { $class = "list-device-down"; } else { $class = "list-device"; } + if ($device['ignore'] == '1') { + $class = "list-device-ignored"; + if ($device['status'] == '1') { $class = "list-device-ignored-up"; } + } + return $class; +} + + +function getImage($host) { + +$sql = "SELECT * FROM `devices` WHERE `id` = '$host'"; +$data = mysql_fetch_array(mysql_query($sql)); + +$type = strtolower($data['os']); + + if(file_exists("images/os/$type" . ".png")){ $image = ""; + } elseif(file_exists("images/os/$type" . ".gif")){ $image = ""; } + if($device['monowall']) {$image = "";} + + if($type == "linux") { + $features = strtolower(trim($data[features])); + list($distro) = split(" ", $features); + if(file_exists("images/os/$distro" . ".png")){ $image = ""; + } elseif(file_exists("images/os/$distro" . ".gif")){ $image = ""; } + } + + return $image; + +} + + +function delHost($id) { + + $host = mysql_result(mysql_query("SELECT hostname FROM devices WHERE id = '$id'"), 0); + mysql_query("DELETE FROM `devices` WHERE `id` = '$id'"); + $int_query = mysql_query("SELECT * FROM `interfaces` WHERE `host` = '$id'"); + while($int_data = mysql_fetch_array($int_query)) { + $int_if = $int_data['if']; + $int_id = $int_data['id']; + mysql_query("DELETE from `adjacencies` WHERE `interface_id` = '$int_id'"); + mysql_query("DELETE from `links` WHERE `src_if` = '$int_id'"); + mysql_query("DELETE from `links` WHERE `dst_if` = '$int_id'"); + mysql_query("DELETE from `ipaddr` WHERE `interface_id` = '$int_id'"); + echo("Removed interface $int_id ($int_if)
"); + } + mysql_query("DELETE FROM `storage` WHERE `host_id` = '$id'"); + mysql_query("DELETE FROM `alerts` WHERE `device_id` = '$id'"); + mysql_query("DELETE FROM `eventlog` WHERE `host` = '$id'"); + mysql_query("DELETE FROM `interfaces` WHERE `host` = '$id'"); + mysql_query("DELETE FROM `services` WHERE `service_host` = '$id'"); + `rm -f rrd/$host-*.rrd`; + echo("Removed device $host
"); +} + + +function addHost($host, $community, $snmpver) { + list($hostshort) = explode(".", $host); + if ( isDomainResolves($host)){ + if ( isPingable($host)) { + if ( mysql_result(mysql_query("SELECT COUNT(*) FROM `devices` WHERE `hostname` = '$host'"), 0) == '0' ) { + $snmphost = trim(`snmpwalk -Oqv -$snmpver -c $community $host sysname | sed s/\"//g`); + if ($snmphost == $host || $hostshort = $host) { + createHost ($host, $community, $snmpver); + } else { echo("Given hostname does not match SNMP-read hostname!\n"); } + } else { echo("Already got host $host\n"); } + } else { echo("Could not ping $host\n"); } + } else { echo("Could not resolve $host\n"); } +} + +function overlibprint($text) { + return "onmouseover=\"return overlib('" . $text . "');\" onmouseout=\"return nd();\""; +} + +function scanUDP ($host, $port, $timeout) { + $handle = fsockopen($host, $port, &$errno, &$errstr, 2); + if (!$handle) { + } + + socket_set_timeout ($handle, $timeout); + $write = fwrite($handle,"\x00"); + if (!$write) { + next; + } + + $startTime = time(); + $header = fread($handle, 1); + $endTime = time(); + $timeDiff = $endTime - $startTime; + + if ($timeDiff >= $timeout) { + fclose($handle); + return 1; + } else { + fclose($handle); + return 0; + } +} + +function humanmedia($media) { + $media = preg_replace("/^ethernetCsmacd$/", "Ethernet", $media); + $media = preg_replace("/^softwareLoopback$/", "Software Loopback", $media); + $media = preg_replace("/^tunnel$/", "Tunnel", $media); + $media = preg_replace("/^propVirtual$/", "Ethernet VLAN", $media); + $media = preg_replace("/^ppp$/", "PPP", $media); + $media = preg_replace("/^slip$/", "SLIP", $media); + return $media; +} + + +function humanspeed($speed) { + $speed = preg_replace("/^0$/", "-", $speed); + $speed = preg_replace("/^9000$/", "9Kbps", $speed); + $speed = preg_replace("/^48000$/", "48Kbps", $speed); + $speed = preg_replace("/^64000$/", "64Kbps", $speed); + $speed = preg_replace("/^128000$/", "128Kbps", $speed); + $speed = preg_replace("/^256000$/", "256Kbps", $speed); + $speed = preg_replace("/^512000$/", "512Kbps", $speed); + $speed = preg_replace("/^768000$/", "768Kbps", $speed); + $speed = preg_replace("/^1024000$/", "1Mbps", $speed); + $speed = preg_replace("/^2048000$/", "2Mbps", $speed); + $speed = preg_replace("/^4192000$/", "4Mbps", $speed); + $speed = preg_replace("/^10000000$/", "10Mbps", $speed); + $speed = preg_replace("/^34000000$/", "34Mbps", $speed); + $speed = preg_replace("/^100000000$/", "100Mbps", $speed); + $speed = preg_replace("/^155000000$/", "155Mbps", $speed); + $speed = preg_replace("/^622000000$/", "622Mbps", $speed); + $speed = preg_replace("/^1000000000$/", "1Gbps", $speed); + $speed = preg_replace("/^10000000000$/", "10Gbps", $speed); + $speed = preg_replace("/^4294967295$/", "", $speed); + if($speed == "") { $speed = "-"; } + return $speed; +} + + +function netmask2cidr($netmask) { + + list ($network, $cidr) = explode("/", trim(`ipcalc $address/$mask | grep Network | cut -d" " -f 4`)); + return $cidr; + +} + +function cidr2netmask() { + return (long2ip(ip2long("255.255.255.255") + << (32-$netmask))); +} + +function formatUptime($diff) { + $daysDiff = floor($diff/86400); + $diff -= $daysDiff*86400; + $hrsDiff = floor($diff/60/60); + $diff -= $hrsDiff*60*60; + $minsDiff = floor($diff/60); + $diff -= $minsDiff*60; + $secsDiff = $diff; + if($daysDiff > '0'){ $uptime .= "$daysDiff days, "; } + if($hrsDiff > '0'){ $uptime .= $hrsDiff . "h "; } + if($minsDiff > '0'){ $uptime .= $minsDiff . "m "; } + if($secsDiff > '0'){ $uptime .= $secsDiff . "s "; } + return "$uptime"; +} + +function isSNMPable($hostname, $community, $snmpver) { + $pos = `snmpget -$snmpver -c $community -t 1 $hostname sysDescr.0`; + if($pos == '') { + $status='0'; + $posb = `snmpget -$snmpver -c $community -t 1 $hostname 1.3.6.1.2.1.7526.2.4`; + if($posb == '') { } else { $status='1'; } + } else { + $status='1'; + } + return $status; +} + +function isPingable($hostname) { + global $fping; + $status = `$fping $hostname | cut -d " " -f 3`; + $status = trim($status); + + if($status == "alive") { + return TRUE; + } else { + return FALSE; + } +} + + +function is_odd($number) { + return $number & 1; // 0 = even, 1 = odd +} + +function isValidInterface($if) { + $if = strtolower($if); + $bif = array("null", "virtual-", "unrouted", "eobc", "mpls", "aal5", "-atm layer", "dialer", "-shdsl", "-adsl", "async", "sit0", "sit1"); + $nullintf = 0; + foreach($bif as $bi) { + $pos = strpos($if, $bi); + if ($pos !== FALSE) { + $nullintf = 1; + echo("$if matched $bi \n"); + } + } + if (preg_match('/serial[0-9]:/', $if)) { $nullintf = '1'; } + if ($nullintf != '1') { + return 1; + } else { return 0; } +} + +function ifclass($up, $up_admin) { + $ifclass = "interface-upup"; + + if ($up_admin == "down") { $ifclass = "interface-admindown"; } + if ($up_admin == "up" && $up == "down") { $ifclass = "interface-updown"; } + if ($up_admin == "up" && $up == "up") { $ifclass = "interface-upup"; } + return $ifclass; +} + +function makeshortif($if) { + $if = strtolower($if); + $if = str_replace("tengigabitethernet","Te", $if); + $if = str_replace("gigabitethernet","Gi", $if); + $if = str_replace("fastethernet","Fa", $if); + $if = str_replace("ethernet","Et", $if); + $if = str_replace("serial","Se", $if); + $if = str_replace("pos","Pos", $if); + $if = str_replace("port-channel","Po", $if); + $if = str_replace("atm","Atm", $if); + $if = str_replace("loopback","Lo", $if); + $if = str_replace("dialer","Di", $if); + $if = str_replace("vlan","Vlan", $if); + return $if; +} + +function utime() { + $time = explode( " ", microtime()); + $usec = (double)$time[0]; + $sec = (double)$time[1]; + return $sec + $usec; +} + +function fixiftype ($type) { + + $type = str_replace("ethernetCsmacd", "Ethernet", $type); + $type = str_replace("tunnel", "Tunnel", $type); + $type = str_replace("softwareLoopback", "Software Loopback", $type); + $type = str_replace("propVirtual", "Ethernet VLAN", $type); + $type = str_replace("ethernetCsmacd", "Ethernet", $type); + $type = str_replace("l2vlan", "Ethernet VLAN", $type); + + return ($type); + +} + +function fixifName ($inf) { + $inf = str_replace("ether", "Ether", $inf); + $inf = str_replace("gig", "Gig", $inf); + $inf = str_replace("fast", "Fast", $inf); + $inf = str_replace("ten", "Ten", $inf); + $inf = str_replace("vlan", "Vlan", $inf); + $inf = str_replace("ether", "Ether", $inf); + $inf = str_replace("loop", "Loop", $inf); + $inf = str_replace("-802.1q Vlan subif", "", $inf); + $inf = str_replace("serial", "Serial", $inf); + $inf = str_replace("-aal5 layer", " aal5", $inf); + $inf = str_replace("atm", "ATM", $inf); + $inf = str_replace("port-channel", "Port-Channel", $inf); + $inf = str_replace("dial", "Dial", $inf); + $inf = str_replace("hp procurve switch software Loopback interface", "Loopback Interface", $inf); + $inf = str_replace("control plane interface", "Control Plane", $inf); + return $inf; +} + +function trafgraph ($rrd, $graph, $from, $to, $width, $height) +{ + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--alt-autoscale-max", + "-E", + "--start", $from, "--end", $to, + "--width", $width, "--height", $height, + "DEF:inoctets=$database:INOCTETS:AVERAGE", + "DEF:outoctets=$database:OUTOCTETS:AVERAGE", + "CDEF:doutoctets=outoctets,-1,*", + "CDEF:inbits=inoctets,8,*", + "CDEF:outbits=outoctets,8,*", + "CDEF:doutbits=doutoctets,8,*", + "VDEF:95thin=inbits,95,PERCENT", + "VDEF:95thout=outbits,95,PERCENT", + "VDEF:d95thout=doutbits,5,PERCENT", + "AREA:inbits#CDEB8B:", + "COMMENT:BPS Current Average Max 95th %\\n", + "LINE1.25:inbits#006600:In ", + "GPRINT:inbits:LAST:%6.2lf%s", + "GPRINT:inbits:AVERAGE:%6.2lf%s", + "GPRINT:inbits:MAX:%6.2lf%s", + "GPRINT:95thin:%6.2lf%s\\n", + "AREA:doutbits#C3D9FF:", + "LINE1.25:doutbits#000099:Out", + "GPRINT:outbits:LAST:%6.2lf%s", + "GPRINT:outbits:AVERAGE:%6.2lf%s", + "GPRINT:outbits:MAX:%6.2lf%s", + "GPRINT:95thout:%6.2lf%s", + "LINE1:95thin#aa0000", + "LINE1:d95thout#aa0000:" ); + + + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", + "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", + "--font-render-mode", "normal");} + + $opts = array_merge($optsa, $optsb); + + $ret = rrd_graph("$imgfile", $opts, count($opts)); + + if( !is_array($ret) ) + { + $err = rrd_error(); + # echo "rrd_graph() ERROR: $err\n"; + return FALSE; + } else { + return $imgfile; + } +} + +function pktsgraph ($rrd, $graph, $from, $to, $width, $height) { + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--alt-autoscale-max", + "-l 0", + "-E", + "--start", $from, "--end", $to, + "--width", $width, "--height", $height, + "DEF:in=$database:INUCASTPKTS:AVERAGE", + "DEF:out=$database:OUTUCASTPKTS:AVERAGE", + "CDEF:dout=out,-1,*", + "AREA:in#aa66aa:", + "COMMENT:Packets Current Average Maximum\\n", + "LINE1.25:in#330033:In ", + "GPRINT:in:LAST:%6.2lf%spps", + "GPRINT:in:AVERAGE:%6.2lf%spps", + "GPRINT:in:MAX:%6.2lf%spps\\n", + "AREA:dout#FFDD88:", + "LINE1.25:dout#FF6600:Out ", + "GPRINT:out:LAST:%6.2lf%spps", + "GPRINT:out:AVERAGE:%6.2lf%spps", + "GPRINT:out:MAX:%6.2lf%spps\\n"); + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", + "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", + "--font-render-mode", "normal");} + + $opts = array_merge($optsa, $optsb); + + $ret = rrd_graph("$imgfile", $opts, count($opts)); + + if( !is_array($ret) ) { + $err = rrd_error(); +# echo "rrd_graph() ERROR: $err\n"; + return FALSE; + } else { + return $imgfile; + } +} + +function errorgraph ($rrd, $graph, $from, $to, $width, $height) +{ + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + + $optsa = array( + "--alt-autoscale-max", + "-E", + "-l 0", + "--start", $from, "--end", $to, + "--width", $width, "--height", $height, + "DEF:in=$database:INERRORS:AVERAGE", + "DEF:out=$database:OUTERRORS:AVERAGE", + "CDEF:dout=out,-1,*", + "AREA:in#ff3300:", + "COMMENT:Errors Current Average Maximum\\n", + "LINE1.25:in#ff0000:In ", + "GPRINT:in:LAST:%6.2lf%spps", + "GPRINT:in:AVERAGE:%6.2lf%spps", + "GPRINT:in:MAX:%6.2lf%spps\\n", + "AREA:dout#ff6633:", + "LINE1.25:out#cc3300:Out", + "GPRINT:out:LAST:%6.2lf%spps", + "GPRINT:out:AVERAGE:%6.2lf%spps", + "GPRINT:out:MAX:%6.2lf%spps\\n", + ); + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", + "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", + "--font-render-mode", "normal");} + + $opts = array_merge($optsa, $optsb); + + $ret = rrd_graph("$imgfile", $opts, count($opts)); + if( !is_array($ret) ) { + $err = rrd_error(); + # echo "rrd_graph() ERROR: $err\n"; + return FALSE; + } else { + return $imgfile; + } + +} + +function nucastgraph ($rrd, $graph, $from, $to, $width, $height) +{ + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--start", $from, "--end", $to, + "--width", $width, "--height", $height, + "--alt-autoscale-max", + "-E", + "-l 0", + "DEF:in=$database:INNUCASTPKTS:AVERAGE", + "DEF:out=$database:OUTNUCASTPKTS:AVERAGE", + "CDEF:dout=out,-1,*", + "AREA:in#aa66aa:", + "COMMENT:Packets Current Average Maximum\\n", + "LINE1.25:in#330033:In ", + "GPRINT:in:LAST:%6.2lf%spps", + "GPRINT:in:AVERAGE:%6.2lf%spps", + "GPRINT:in:MAX:%6.2lf%spps\\n", + "AREA:dout#FFDD88:", + "LINE1.25:dout#FF6600:Out ", + "GPRINT:out:LAST:%6.2lf%spps", + "GPRINT:out:AVERAGE:%6.2lf%spps", + "GPRINT:out:MAX:%6.2lf%spps\\n"); + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", + "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", + "--font-render-mode", "normal");} + + $opts = array_merge($optsa, $optsb); + + $ret = rrd_graph("$imgfile", $opts, count($opts)); + + if( !is_array($ret) ) { + $err = rrd_error(); + echo "rrd_graph() ERROR: $err\n"; + return FALSE; + } else { + return $imgfile; + } +} + +function cpugraph ($rrd, $graph , $from, $to, $width, $height) +{ + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--start", $from, "--width", $width, "--height", $height, "--vertical-label", $vertical, "--alt-autoscale-max", + "-l 0", + "-E", + "--title", $title, + "DEF:5s=$database:LOAD5S:AVERAGE", + "DEF:5m=$database:LOAD5M:AVERAGE", + "AREA:5s#FAFDCE:5sec", + "LINE1.25:5s#dd8800:", + "GPRINT:5s:LAST:Cur\:%6.2lf", + "GPRINT:5s:AVERAGE:Avg\: %6.2lf", + "GPRINT:5s:MIN:Min\:%6.2lf", + "GPRINT:5s:MAX:Max\:%6.2lf\\n", + "LINE1.25:5m#aa2200:5min", + "GPRINT:5m:LAST:Cur\:%6.2lf", + "GPRINT:5m:AVERAGE:Avg\: %6.2lf", + "GPRINT:5m:MIN:Min\:%6.2lf", + "GPRINT:5m:MAX:Max\:%6.2lf\\n"); + + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", + "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", + "--font-render-mode", "normal");} + $opts = array_merge($optsa, $optsb); + + $ret = rrd_graph("$imgfile", $opts, count($opts)); + + if( !is_array($ret) ) { + $err = rrd_error(); + #echo "rrd_graph() ERROR: $err\n"; + return FALSE; + } else { + return $imgfile; + } +} + +function tempgraph ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) +{ + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + + $optsa = array( "--start", $from, "--width", $width, "--height", $height, "--vertical-label", $vertical, "--alt-autoscale-max", + "-E", "-l 0", "--title", $title, + "DEF:in=$database:TEMPIN1:AVERAGE", + "DEF:out=$database:TEMPOUT1:AVERAGE", + "LINE1.5:in#cc0000:Inlet ", + "GPRINT:in:LAST: Cur\:%6.2lf", + "GPRINT:in:AVERAGE:Avg\: %6.2lf", + "GPRINT:in:MIN:Min\:%6.2lf", + "GPRINT:in:MAX:Max\:%6.2lf\\n", + "LINE1.25:out#009900:Outlet ", + "GPRINT:out:LAST:Cur\:%6.2lf", + "GPRINT:out:AVERAGE:Avg\: %6.2lf", + "GPRINT:out:MIN:Min\:%6.2lf", + "GPRINT:out:MAX:Max\:%6.2lf\\n"); + + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", + "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", + "--font-render-mode", "normal");} + $opts = array_merge($optsa, $optsb); + + + $ret = rrd_graph("$imgfile", $opts, count($opts)); + + if( !is_array($ret) ) { + $err = rrd_error(); +# echo "rrd_graph() ERROR: $err\n"; + return FALSE; + } else { + return $imgfile; + } +} + +function uptimegraph ($rrd, $graph , $from, $to, $width, $height, $title, $vertical) +{ + global $rrdtool; global $installdir; + $rrd = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--start", $from, "--width", $width, "--height", $height, "--alt-autoscale-max", + "-E", "-l 0", + "DEF:uptime=$rrd:uptime:AVERAGE", + "CDEF:cuptime=uptime,86400,/", + "AREA:cuptime#EEEEEE:Uptime", + "LINE1.25:cuptime#36393D:", + "GPRINT:cuptime:LAST:Cur\:%6.2lf", + "GPRINT:cuptime:AVERAGE:Avg\: %6.2lf", + "GPRINT:cuptime:MAX:Max\:%6.2lf\\n"); + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", + "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", + "--font-render-mode", "normal");} + + $opts = array_merge($optsa, $optsb); + + $ret = rrd_graph("$imgfile", $opts, count($opts)); + + if( !is_array($ret) ) { + $err = rrd_error(); + # echo "rrd_graph() ERROR: $err\n"; + return FALSE; + } else { + return $imgfile; + } +} + + +function memgraph ($rrd, $graph , $from, $to, $width, $height, $title, $vertical) +{ + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $memrrd = $database; + $opts = "--start $from \ + --alt-autoscale-max \ + --width $width --height $height \ + -l 0 -E \ + -b 1024 \ + DEF:MEMTOTAL=$memrrd:MEMTOTAL:AVERAGE \ + DEF:IOFREE=$memrrd:IOFREE:AVERAGE \ + DEF:IOUSED=$memrrd:IOUSED:AVERAGE \ + DEF:PROCFREE=$memrrd:PROCFREE:AVERAGE \ + DEF:PROCUSED=$memrrd:PROCUSED:AVERAGE \ + CDEF:FREE=IOFREE,PROCFREE,+ \ + CDEF:USED=IOUSED,PROCUSED,+ \ + AREA:USED#ee9900:Used \ + AREA:FREE#FAFDCE:Free:STACK \ + LINE1.5:MEMTOTAL#cc0000:"; + + if($width <= "300") {$opts .= "\ + --font LEGEND:7:$installdir/DejaVuSansMono.ttf \ + --font AXIS:6:$installdir/DejaVuSansMono.ttf \ + --font-render-mode normal";} + + + `$rrdtool graph $imgfile $opts`; + return $imgfile; +} + +function ip_graph ($rrd, $graph, $from, $to, $width, $height) { + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--alt-autoscale-max", "-E", "-l 0", + "DEF:ipForwDatagrams=$database:ipForwDatagrams:AVERAGE", + "DEF:ipInDelivers=$database:ipInDelivers:AVERAGE", + "DEF:ipInReceives=$database:ipInReceives:AVERAGE", + "DEF:ipOutRequests=$database:ipOutRequests:AVERAGE", + "DEF:ipInDiscards=$database:ipInDiscards:AVERAGE", + "DEF:ipOutDiscards=$database:ipOutDiscards:AVERAGE", + "DEF:ipOutNoRoutes=$database:ipInDiscards:AVERAGE", + "COMMENT:Packets/sec Current Average Maximum\\n", + "LINE1.25:ipForwDatagrams#cc0000:ForwDgrams ", + "GPRINT:ipForwDatagrams:LAST:%6.2lf%s", + "GPRINT:ipForwDatagrams:AVERAGE: %6.2lf%s", + "GPRINT:ipForwDatagrams:MAX: %6.2lf%s\\n", + "LINE1.25:ipInDelivers#00cc00:InDelivers ", + "GPRINT:ipInDelivers:LAST:%6.2lf%s", + "GPRINT:ipInDelivers:AVERAGE: %6.2lf%s", + "GPRINT:ipInDelivers:MAX: %6.2lf%s\\n", + "LINE1.25:ipInReceives#006600:InReceives ", + "GPRINT:ipInReceives:LAST:%6.2lf%s", + "GPRINT:ipInReceives:AVERAGE: %6.2lf%s", + "GPRINT:ipInReceives:MAX: %6.2lf%s\\n", + "LINE1.25:ipOutRequests#0000cc:OutRequests", + "GPRINT:ipOutRequests:LAST:%6.2lf%s", + "GPRINT:ipOutRequests:AVERAGE: %6.2lf%s", + "GPRINT:ipOutRequests:MAX: %6.2lf%s\\n", + "LINE1.25:ipInDiscards#cccc00:InDiscards ", + "GPRINT:ipInDiscards:LAST:%6.2lf%s", + "GPRINT:ipInDiscards:AVERAGE: %6.2lf%s", + "GPRINT:ipInDiscards:MAX: %6.2lf%s\\n", + "LINE1.25:ipOutDiscards#330033:OutDiscards", + "GPRINT:ipOutDiscards:LAST:%6.2lf%s", + "GPRINT:ipOutDiscards:AVERAGE: %6.2lf%s", + "GPRINT:ipOutDiscards:MAX: %6.2lf%s\\n", + "LINE1.25:ipOutNoRoutes#660000:OutNoRoutes", + "GPRINT:ipOutNoRoutes:LAST:%6.2lf%s", + "GPRINT:ipOutNoRoutes:AVERAGE: %6.2lf%s", + "GPRINT:ipOutNoRoutes:MAX: %6.2lf%s\\n" + ); + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", "--font-render-mode", "normal");} + $opts = array_merge($optsa, $optsb); + $ret = rrd_graph("$imgfile", $opts, count($opts)); + if( !is_array($ret) ) { + $err = rrd_error(); echo "rrd_graph() ERROR: $err\n"; return FALSE; + } else { + return $imgfile; + } +} + +function icmp_graph ($rrd, $graph, $from, $to, $width, $height) { + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--alt-autoscale-max", "-E", "-l 0", + "DEF:icmpInMsgs=$database:icmpInMsgs:AVERAGE", + "DEF:icmpOutMsgs=$database:icmpOutMsgs:AVERAGE", + "DEF:icmpInErrors=$database:icmpInErrors:AVERAGE", + "DEF:icmpOutErrors=$database:icmpOutErrors:AVERAGE", + "DEF:icmpInEchos=$database:icmpInEchos:AVERAGE", + "DEF:icmpOutEchos=$database:icmpOutEchos:AVERAGE", + "DEF:icmpInEchoReps=$database:icmpInEchoReps:AVERAGE", + "DEF:icmpOutEchoReps=$database:icmpOutEchoReps:AVERAGE", + "COMMENT:Packets/sec Current Average Maximum\\n", + "LINE1.25:icmpInMsgs#00cc00:InMsgs ", + "GPRINT:icmpInMsgs:LAST:%6.2lf%s", + "GPRINT:icmpInMsgs:AVERAGE: %6.2lf%s", + "GPRINT:icmpInMsgs:MAX: %6.2lf%s\\n", + "LINE1.25:icmpOutMsgs#006600:OutMsgs ", + "GPRINT:icmpOutMsgs:LAST:%6.2lf%s", + "GPRINT:icmpOutMsgs:AVERAGE: %6.2lf%s", + "GPRINT:icmpOutMsgs:MAX: %6.2lf%s\\n", + "LINE1.25:icmpInErrors#cc0000:InErrors ", + "GPRINT:icmpInErrors:LAST:%6.2lf%s", + "GPRINT:icmpInErrors:AVERAGE: %6.2lf%s", + "GPRINT:icmpInErrors:MAX: %6.2lf%s\\n", + "LINE1.25:icmpOutErrors#660000:OutErrors ", + "GPRINT:icmpOutErrors:LAST:%6.2lf%s", + "GPRINT:icmpOutErrors:AVERAGE: %6.2lf%s", + "GPRINT:icmpOutErrors:MAX: %6.2lf%s\\n", + "LINE1.25:icmpInEchos#0066cc:InEchos ", + "GPRINT:icmpInEchos:LAST:%6.2lf%s", + "GPRINT:icmpInEchos:AVERAGE: %6.2lf%s", + "GPRINT:icmpInEchos:MAX: %6.2lf%s\\n", + "LINE1.25:icmpOutEchos#003399:OutEchos ", + "GPRINT:icmpOutEchos:LAST:%6.2lf%s", + "GPRINT:icmpOutEchos:AVERAGE: %6.2lf%s", + "GPRINT:icmpOutEchos:MAX: %6.2lf%s\\n", + "LINE1.25:icmpInEchoReps#cc00cc:InEchoReps ", + "GPRINT:icmpInEchoReps:LAST:%6.2lf%s", + "GPRINT:icmpInEchoReps:AVERAGE: %6.2lf%s", + "GPRINT:icmpInEchoReps:MAX: %6.2lf%s\\n", + "LINE1.25:icmpOutEchoReps#990099:OutEchoReps", + "GPRINT:icmpOutEchoReps:LAST:%6.2lf%s", + "GPRINT:icmpOutEchoReps:AVERAGE: %6.2lf%s", + "GPRINT:icmpOutEchoReps:MAX: %6.2lf%s\\n" + ); + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", "--font-render-mode", "normal");} + $opts = array_merge($optsa, $optsb); + $ret = rrd_graph("$imgfile", $opts, count($opts)); + if( !is_array($ret) ) { + $err = rrd_error(); echo "rrd_graph() ERROR: $err\n"; return FALSE; + } else { + return $imgfile; + } +} + +function tcp_graph ($rrd, $graph, $from, $to, $width, $height) { + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--alt-autoscale-max", "-E", "-l 0", + "DEF:tcpActiveOpens=$database:tcpActiveOpens:AVERAGE", + "DEF:tcpPassiveOpens=$database:tcpPassiveOpens:AVERAGE", + "DEF:tcpAttemptFails=$database:tcpAttemptFails:AVERAGE", + "DEF:tcpEstabResets=$database:tcpEstabResets:AVERAGE", + "DEF:tcpInSegs=$database:tcpInSegs:AVERAGE", + "DEF:tcpOutSegs=$database:tcpOutSegs:AVERAGE", + "DEF:tcpRetransSegs=$database:tcpRetransSegs:AVERAGE", + "COMMENT:Packets/sec Current Average Maximum\\n", + "LINE1.25:tcpActiveOpens#00cc00:ActiveOpens ", + "GPRINT:tcpActiveOpens:LAST:%6.2lf%s", + "GPRINT:tcpActiveOpens:AVERAGE: %6.2lf%s", + "GPRINT:tcpActiveOpens:MAX: %6.2lf%s\\n", + "LINE1.25:tcpPassiveOpens#006600:PassiveOpens", + "GPRINT:tcpPassiveOpens:LAST:%6.2lf%s", + "GPRINT:tcpPassiveOpens:AVERAGE: %6.2lf%s", + "GPRINT:tcpPassiveOpens:MAX: %6.2lf%s\\n", + "LINE1.25:tcpAttemptFails#cc0000:AttemptFails", + "GPRINT:tcpAttemptFails:LAST:%6.2lf%s", + "GPRINT:tcpAttemptFails:AVERAGE: %6.2lf%s", + "GPRINT:tcpAttemptFails:MAX: %6.2lf%s\\n", + "LINE1.25:tcpEstabResets#660000:EstabResets ", + "GPRINT:tcpEstabResets:LAST:%6.2lf%s", + "GPRINT:tcpEstabResets:AVERAGE: %6.2lf%s", + "GPRINT:tcpEstabResets:MAX: %6.2lf%s\\n", + "LINE1.25:tcpInSegs#0066cc:InSegs ", + "GPRINT:tcpInSegs:LAST:%6.2lf%s", + "GPRINT:tcpInSegs:AVERAGE: %6.2lf%s", + "GPRINT:tcpInSegs:MAX: %6.2lf%s\\n", + "LINE1.25:tcpOutSegs#003399:OutSegs ", + "GPRINT:tcpOutSegs:LAST:%6.2lf%s", + "GPRINT:tcpOutSegs:AVERAGE: %6.2lf%s", + "GPRINT:tcpOutSegs:MAX: %6.2lf%s\\n", + "LINE1.25:tcpRetransSegs#cc00cc:RetransSegs ", + "GPRINT:tcpRetransSegs:LAST:%6.2lf%s", + "GPRINT:tcpRetransSegs:AVERAGE: %6.2lf%s", + "GPRINT:tcpRetransSegs:MAX: %6.2lf%s\\n", + ); + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", "--font-render-mode", "normal");} + $opts = array_merge($optsa, $optsb); + $ret = rrd_graph("$imgfile", $opts, count($opts)); + if( !is_array($ret) ) { + $err = rrd_error(); echo "rrd_graph() ERROR: $err\n"; return FALSE; + } else { + return $imgfile; + } +} + +function udp_graph ($rrd, $graph, $from, $to, $width, $height) { + global $rrdtool; global $installdir; + $database = "rrd/" . $rrd; + $imgfile = "graphs/" . "$graph"; + $optsa = array( "--start", $from, "--end", $to, "--width", $width, "--height", $height, "--alt-autoscale-max", "-E", "-l 0", + "DEF:udpInDatagrams=$database:udpInDatagrams:AVERAGE", + "DEF:udpOutDatagrams=$database:udpOutDatagrams:AVERAGE", + "DEF:udpInErrors=$database:udpInErrors:AVERAGE", + "DEF:udpNoPorts=$database:udpNoPorts:AVERAGE", + "COMMENT:Packets/sec Current Average Maximum\\n", + "LINE1.25:udpInDatagrams#00cc00:InDatagrams ", + "GPRINT:udpInDatagrams:LAST:%6.2lf%s", + "GPRINT:udpInDatagrams:AVERAGE: %6.2lf%s", + "GPRINT:udpInDatagrams:MAX: %6.2lf%s\\n", + "LINE1.25:udpOutDatagrams#006600:OutDatagrams", + "GPRINT:udpOutDatagrams:LAST:%6.2lf%s", + "GPRINT:udpOutDatagrams:AVERAGE: %6.2lf%s", + "GPRINT:udpOutDatagrams:MAX: %6.2lf%s\\n", + "LINE1.25:udpInErrors#cc0000:InErrors ", + "GPRINT:udpInErrors:LAST:%6.2lf%s", + "GPRINT:udpInErrors:AVERAGE: %6.2lf%s", + "GPRINT:udpInErrors:MAX: %6.2lf%s\\n", + "LINE1.25:udpNoPorts#660000:NoPorts ", + "GPRINT:udpNoPorts:LAST:%6.2lf%s", + "GPRINT:udpNoPorts:AVERAGE: %6.2lf%s", + "GPRINT:udpNoPorts:MAX: %6.2lf%s\\n", + ); + if($width <= "300") {$optsb = array("--font", "LEGEND:7:$installdir/DejaVuSansMono.ttf", "--font", "AXIS:6:$installdir/DejaVuSansMono.ttf", "--font-render-mode", "normal");} + $opts = array_merge($optsa, $optsb); + $ret = rrd_graph("$imgfile", $opts, count($opts)); + if( !is_array($ret) ) { + $err = rrd_error(); echo "rrd_graph() ERROR: $err\n"; return FALSE; + } else { + return $imgfile; + } +} + + +function fixIOSFeatures($features){ + $features = str_replace("ADVSECURITYK9", "Advanced Security Crypto", $features); + $features = str_replace("K91P", "Provider Crypto", $features); + $features = str_replace("K4P", "Provider Crypto", $features); + $features = str_replace("ADVIPSERVICESK9_WAN", "Adv IP Services Crypto + WAN", $features); + $features = str_replace("ADVIPSERVICESK9", "Adv IP Services Crypto", $features); + $features = str_replace("ADVIPSERVICES", "Adv IP Services", $features); + $features = str_replace("IK9P", "IP Plus Crypto", $features); + $features = str_replace("SPSERVICESK9", "SP Services Crypto", $features); + $features = str_replace("PK9SV", "Provider Crypto", $features); + $features = str_replace("IS", "IP Plus", $features); + $features = str_replace("IPSERVICESK9", "IP Services Crypto", $features); + $features = str_replace("BROADBAND", "Broadband", $features); + $features = str_replace("IPBASE", "IP Base", $features); + $features = str_replace("IPSERVICE", "IP Services", $features); + $features = preg_replace("/^P$/", "Service Provider", $features); + $features = str_replace("IK9S", "IP Plus Crypto", $features); + $features = str_replace("I6Q4L2", "Layer 2", $features); + $features = str_replace("I6K2L2Q4", "Layer 2 Crypto", $features); + $features = str_replace("C3H2S", "Layer 2 SI/EI", $features); + return $features; +} + +function fixIOSHardware($hardware){ + + $hardware = preg_replace("/C([0-9]+)/", "Cisco \\1", $hardware); + $hardware = str_replace("cat4000","Catalyst 4000", $hardware); + $hardware = str_replace("s3223_rp","Cisco Catalyst 6500 SUP32", $hardware); + $hardware = str_replace("s222_rp","Cisco Catalyst 6500 SUP2", $hardware); + $hardware = str_replace("c6sup2_rp","Cisco Catalyst 6500 SUP2", $hardware); + $hardware = str_replace("s72033_rp","Cisco Catalyst 6500 SUP720 ", $hardware); + $hardware = str_replace("RSP","Cisco 7500", $hardware); + $hardware = str_replace("C3200XL", "Cisco Catalyst 3200XL", $hardware); + $hardware = str_replace("C3550", "Cisco Catalyst 3550", $hardware); + $hardware = str_replace("C2950", "Cisco Catalyst 2950", $hardware); + + return $hardware; + +} + +function updateHost ($host, $community, $snmpver) +{ +# $soft = `snmpget -O vq -$snmpver -c $community $host sysDescr.0 | grep IOS | sed s/Cisco\ IOS\ Software\,// | sed s/\"\ //g | sed s/IOS\ \(tm\)\ // | sed s/\,\ RELEASE\ SOFTWARE.*// | sed s/.*\ Software\ // | sed s/\,\ /\|\|/ | sed s/\Version\ // | sed s/,\ EARLY\ DEPLOYMENT\ RELEASE\ SOFTWARE\ .*//`; + $sysdescr = `snmpget -O vq -$snmpver -c $community $host sysDescr.0`; + $sysdecr = str_replace("\"","", $sysdescr); + $location = str_replace("\"","", `snmpget -O vq -v2c -c $community $host sysLocation.0`); + list ($features, $version) = explode('||', $soft); + $features = str_replace("(","", $features); + $features = str_replace(")","", $features); + $version = str_replace("\n","", $version); + $version = trim($version); + $location = trim($location); + list ($hardware, $features) = explode("-", $features); + $hardware = fixIOSHardware($hardware); + $features = fixIOSFeatures($features); + $sql = "UPDATE `devices` SET `hardware` = '$hardware', `features` = '$features', `version` = '$version', `sysdesc` = '$sysdescr', `location` = '$location' WHERE `hostname` = '$host'"; +# echo("$sql \n"); +# mysql_query($sql); +} + +function getHostOS($host, $community, $snmpver) { + $sysDescr = trim(`snmpget -O qv -$snmpver -c $community $host sysDescr.0`); + if ($sysDescr == "") {$sysDescr = trim(`snmpget -O qv -$snmpver -c $community $host 1.3.6.1.2.1.7526.2.4`);} + echo("\nsnmpget -O qv -$snmpver -c $community $host sysDescr.0\n$sysDescr\n"); + if (strstr($sysDescr, "IOS") !== false) { $os = "IOS"; } + if (strstr($sysDescr, "FreeBSD") !== false) { $os = "FreeBSD"; } + if (strstr($sysDescr, "DragonFly")) { $os = "DragonFly"; } + if (strstr($sysDescr, "NetBSD") !== false) { $os = "NetBSD"; } + if (strstr($sysDescr, "OpenBSD") !== false) { $os = "OpenBSD"; } + if (strstr($sysDescr, "Linux") !== false) { $os = "Linux"; } + if (strstr($sysDescr, "Windows")) { $os = "Windows"; } + if (strstr($sysDescr, "ProCurve")) { $os = "ProCurve"; } + if (strstr($sysDescr, "m0n0wall")) { $os = "m0n0wall"; } + if (strstr($sysDescr, "Voswall")) { $os = "Voswall"; } + if (strstr($sysDescr, "snom")) { $os = "Snom"; } + return $os; +} + + +function createHost ($host, $community, $snmpver){ + $host = trim(strtolower($host)); + $host_os = getHostOS($host, $community, $snmpver); + global $valid_os; + $nullhost = 1; + echo("$host -> $host_os
"); + foreach($valid_os as $os) { + if ($os == $host_os) { + $nullhost = '0'; + } + } + if($nullhost == '0') { + $sql = mysql_query("INSERT INTO `devices` (`hostname`, `community`, `os`, `status`) VALUES ('$host', '$community', '$host_os', '1')"); + echo("Created host : $host\n"); + } else { + echo("Not added bad host : $host\n"); + } +} + +function createInterface ($host, $if, $ifIndex, $up,$up_admin,$speed,$duplex,$mac,$name){ + $sql = "INSERT INTO `interfaces` (`host`,`if`,`ifIndex`, `up`,`up_admin`,`speed`,`duplex`,`mac`,`name`)"; + $sql = $sql . " VALUES ('$host', '$if','$ifIndex','$up','$up_admin','$speed','$duplex','$mac',\"$name\")"; + mysql_query($sql); +} + +function updateInterfaceStatus ($id,$ifOperStatus,$ifAdminStatus,$speed,$duplex,$mac,$ifAlias) { + $sql = "UPDATE `interfaces` SET `up` = '$ifOperStatus', `up_admin` = '$ifAdminStatus', `speed` = '$speed', "; + $sql .= "`duplex` = '$duplex', `mac` = '$mac', `name` = \"$ifAlias\" WHERE `id` = '$id'"; + mysql_query($sql); + echo("$sql\n"); +} + +function updateInterface ($host, $if, $ifIndex, $up, $up_admin, $speed, $duplex, $mac, $name){ + $sql = "UPDATE `interfaces` SET `up` = '$up',`up_admin` = '$up_admin',`speed` = '$speed',`duplex` = '$duplex',`mac` = '$mac',`name` = \"$name\""; + $sql .= " WHERE `host` = '$host' AND `if` = '$if'"; + mysql_query($sql); +} + +function isDomainResolves($domain){ + return gethostbyname($domain) != $domain; +} + +function hoststatus($id) { + $sql = mysql_query("SELECT `status` FROM `devices` WHERE `id` = '$id'"); + $result = @mysql_result($sql, 0); + return $result; +} + +function gethostbyid($id) { + $sql = mysql_query("SELECT `hostname` FROM `devices` WHERE `id` = '$id'"); + $result = @mysql_result($sql, 0); + return $result; +} + +function getifhost($id) { + $sql = mysql_query("SELECT `host` from `interfaces` WHERE `id` = '$id'"); + $result = @mysql_result($sql, 0); + return $result; +} + +function getifindexbyid($id) { + $sql = mysql_query("SELECT `ifIndex` FROM `interfaces` WHERE `id` = '$id'"); + $result = @mysql_result($sql, 0); + return $result; +} + +function getifbyid($id) { + $sql = mysql_query("SELECT `if` FROM `interfaces` WHERE `id` = '$id'"); + $result = @mysql_result($sql, 0); + return $result; +} + +function getidbyname($domain){ + $sql = mysql_query("SELECT `id` FROM `devices` WHERE `hostname` = '$domain'"); + $result = @mysql_result($sql, 0); + return $result; +} + +function gethostosbyid($id) { + $sql = mysql_query("SELECT `os` FROM `devices` WHERE `id` = '$id'"); + $result = @mysql_result($sql, 0); + return $result; +} + +function match_network ($nets, $ip, $first=false) { + $return = false; + if (!is_array ($nets)) $nets = array ($nets); + foreach ($nets as $net) { + $rev = (preg_match ("/^\!/", $net)) ? true : false; + $net = preg_replace ("/^\!/", "", $net); + $ip_arr = explode('/', $net); + $net_long = ip2long($ip_arr[0]); + $x = ip2long($ip_arr[1]); + $mask = long2ip($x) == $ip_arr[1] ? $x : 0xffffffff << (32 - $ip_arr[1]); + $ip_long = ip2long($ip); + if ($rev) { + if (($ip_long & $mask) == ($net_long & $mask)) return false; + } else { + if (($ip_long & $mask) == ($net_long & $mask)) $return = true; + if ($first && $return) return true; + } + } + return $return; +} + +?> diff --git a/includes/generic.php b/includes/generic.php new file mode 100755 index 0000000000..d03d2a226d --- /dev/null +++ b/includes/generic.php @@ -0,0 +1,48 @@ + diff --git a/includes/graphing.php b/includes/graphing.php new file mode 100644 index 0000000000..190ae4fcc5 --- /dev/null +++ b/includes/graphing.php @@ -0,0 +1,43 @@ + diff --git a/includes/ios.php b/includes/ios.php new file mode 100755 index 0000000000..854c5d1ff0 --- /dev/null +++ b/includes/ios.php @@ -0,0 +1,88 @@ + diff --git a/includes/procurve-graphing.php b/includes/procurve-graphing.php new file mode 100755 index 0000000000..948faeda1c --- /dev/null +++ b/includes/procurve-graphing.php @@ -0,0 +1,64 @@ + diff --git a/includes/services/dns/check.inc b/includes/services/dns/check.inc new file mode 100644 index 0000000000..04663fafec --- /dev/null +++ b/includes/services/dns/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/ftp/check.inc b/includes/services/ftp/check.inc new file mode 100644 index 0000000000..3d0558c2d7 --- /dev/null +++ b/includes/services/ftp/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/http/check.inc b/includes/services/http/check.inc new file mode 100644 index 0000000000..dee474273b --- /dev/null +++ b/includes/services/http/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/imap/check.inc b/includes/services/imap/check.inc new file mode 100644 index 0000000000..9837d7694c --- /dev/null +++ b/includes/services/imap/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/mysql/check.inc b/includes/services/mysql/check.inc new file mode 100644 index 0000000000..44338c5a05 --- /dev/null +++ b/includes/services/mysql/check.inc @@ -0,0 +1,15 @@ + diff --git a/includes/services/pop/check.inc b/includes/services/pop/check.inc new file mode 100644 index 0000000000..285523d7a3 --- /dev/null +++ b/includes/services/pop/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/simap/check.inc b/includes/services/simap/check.inc new file mode 100644 index 0000000000..baf08d8037 --- /dev/null +++ b/includes/services/simap/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/smtp/check.inc b/includes/services/smtp/check.inc new file mode 100644 index 0000000000..b5dd39ccae --- /dev/null +++ b/includes/services/smtp/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/spop/check.inc b/includes/services/spop/check.inc new file mode 100644 index 0000000000..97dabc7054 --- /dev/null +++ b/includes/services/spop/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/ssh/check.inc b/includes/services/ssh/check.inc new file mode 100644 index 0000000000..9bf618c0e6 --- /dev/null +++ b/includes/services/ssh/check.inc @@ -0,0 +1,13 @@ + diff --git a/includes/services/telnet/check.inc b/includes/services/telnet/check.inc new file mode 100644 index 0000000000..cddba2da96 --- /dev/null +++ b/includes/services/telnet/check.inc @@ -0,0 +1,16 @@ + diff --git a/includes/snom-graphing.php b/includes/snom-graphing.php new file mode 100644 index 0000000000..06152a2e7e --- /dev/null +++ b/includes/snom-graphing.php @@ -0,0 +1,36 @@ + diff --git a/includes/snom.php b/includes/snom.php new file mode 100755 index 0000000000..727d1d7a29 --- /dev/null +++ b/includes/snom.php @@ -0,0 +1,49 @@ + diff --git a/includes/unix-graphing.php b/includes/unix-graphing.php new file mode 100755 index 0000000000..555badadc6 --- /dev/null +++ b/includes/unix-graphing.php @@ -0,0 +1,627 @@ + diff --git a/includes/unix.php b/includes/unix.php new file mode 100755 index 0000000000..cfa8bb7b1e --- /dev/null +++ b/includes/unix.php @@ -0,0 +1,195 @@ + diff --git a/interface-ips.php b/interface-ips.php new file mode 100755 index 0000000000..324acd5b9c --- /dev/null +++ b/interface-ips.php @@ -0,0 +1,39 @@ +#!/usr/bin/php + diff --git a/interface-ips.sh b/interface-ips.sh new file mode 100755 index 0000000000..5d369ec0e0 --- /dev/null +++ b/interface-ips.sh @@ -0,0 +1,11 @@ +./interface-ips.php 1 & +./interface-ips.php 2 & +./interface-ips.php 3 & +./interface-ips.php 4 & +./interface-ips.php 5 & +./interface-ips.php 6 & +./interface-ips.php 7 & +./interface-ips.php 8 & +./interface-ips.php 9 & +./interface-ips.php 0 & + diff --git a/ips.php b/ips.php new file mode 100755 index 0000000000..0e467ef584 --- /dev/null +++ b/ips.php @@ -0,0 +1,45 @@ +#!/usr/bin/php + diff --git a/ips.sh b/ips.sh new file mode 100755 index 0000000000..6fbbe834ee --- /dev/null +++ b/ips.sh @@ -0,0 +1,11 @@ +./ips.php 1 & +./ips.php 2 & +./ips.php 3 & +./ips.php 4 & +./ips.php 5 & +./ips.php 6 & +./ips.php 7 & +./ips.php 8 & +./ips.php 9 & +./ips.php 0 & + diff --git a/map.php b/map.php new file mode 100755 index 0000000000..209402f8e1 --- /dev/null +++ b/map.php @@ -0,0 +1,91 @@ +#!/usr/bin/php + \"$dst\" [taillabel=\"$dif\" headlabel=\"$sif\" arrowhead=none arrowtail=none $info];\n"); + echo("\"$src\" -> \"$dst\" [ arrowhead=none arrowtail=none $info];\n"); + $linkdone[] = "$src $link_data[sif] $dst $link_data[dif]"; + $x++; + } +} + +echo("}"); + +?> diff --git a/mysql-schema.sql b/mysql-schema.sql new file mode 100644 index 0000000000..786d69c46b --- /dev/null +++ b/mysql-schema.sql @@ -0,0 +1,348 @@ +-- MySQL dump 10.9 +-- +-- Host: localhost Database: observer-dev +-- ------------------------------------------------------ +-- Server version 4.1.15-Debian_1ubuntu5-log + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `adjacencies` +-- + +DROP TABLE IF EXISTS `adjacencies`; +CREATE TABLE `adjacencies` ( + `adj_id` int(11) NOT NULL auto_increment, + `network_id` int(11) NOT NULL default '0', + `interface_id` int(11) NOT NULL default '0', + PRIMARY KEY (`adj_id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `adjacencies` +-- + + +/*!40000 ALTER TABLE `adjacencies` DISABLE KEYS */; +LOCK TABLES `adjacencies` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `adjacencies` ENABLE KEYS */; + +-- +-- Table structure for table `alerts` +-- + +DROP TABLE IF EXISTS `alerts`; +CREATE TABLE `alerts` ( + `id` int(11) NOT NULL auto_increment, + `importance` int(11) NOT NULL default '0', + `device_id` int(11) NOT NULL default '0', + `message` text NOT NULL, + `time_logged` timestamp NOT NULL default CURRENT_TIMESTAMP, + `alerted` smallint(6) NOT NULL default '0', + KEY `id` (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `alerts` +-- + + +/*!40000 ALTER TABLE `alerts` DISABLE KEYS */; +LOCK TABLES `alerts` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `alerts` ENABLE KEYS */; + +-- +-- Table structure for table `customers` +-- + +DROP TABLE IF EXISTS `customers`; +CREATE TABLE `customers` ( + `username` char(64) NOT NULL default '', + `password` char(32) NOT NULL default '', + `string` char(64) NOT NULL default '', + `level` tinyint(4) NOT NULL default '0', + UNIQUE KEY `username` (`username`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `customers` +-- + + +/*!40000 ALTER TABLE `customers` DISABLE KEYS */; +LOCK TABLES `customers` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `customers` ENABLE KEYS */; + +-- +-- Table structure for table `devices` +-- + +DROP TABLE IF EXISTS `devices`; +CREATE TABLE `devices` ( + `id` int(11) NOT NULL auto_increment, + `hostname` varchar(64) NOT NULL default '', + `ip` varchar(16) NOT NULL default '', + `community` varchar(32) NOT NULL default 'public', + `snmpver` char(3) NOT NULL default 'v2c', + `monowall` tinyint(4) NOT NULL default '0', + `version` text NOT NULL, + `hardware` text NOT NULL, + `features` text NOT NULL, + `sysdesc` text, + `location` text, + `os` varchar(16) NOT NULL default '', + `status` tinyint(4) NOT NULL default '0', + `ignore` tinyint(4) NOT NULL default '0', + `uptime` int(11) NOT NULL default '0', + `lastchange` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, + `purpose` text NOT NULL, + `apache` tinyint(4) NOT NULL default '0', + `courier` tinyint(4) NOT NULL default '0', + `postfix` tinyint(4) NOT NULL default '0', + `temp` tinyint(4) NOT NULL default '0', + `type` varchar(16) default NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `hostname` (`hostname`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `devices` +-- + + +/*!40000 ALTER TABLE `devices` DISABLE KEYS */; +LOCK TABLES `devices` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `devices` ENABLE KEYS */; + +-- +-- Table structure for table `eventlog` +-- + +DROP TABLE IF EXISTS `eventlog`; +CREATE TABLE `eventlog` ( + `id` int(11) NOT NULL default '0', + `host` int(11) NOT NULL default '0', + `interface` int(11) default NULL, + `datetime` datetime NOT NULL default '0000-00-00 00:00:00', + `message` text NOT NULL, + `type` int(11) NOT NULL default '0' +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `eventlog` +-- + + +/*!40000 ALTER TABLE `eventlog` DISABLE KEYS */; +LOCK TABLES `eventlog` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `eventlog` ENABLE KEYS */; + +-- +-- Table structure for table `interfaces` +-- + +DROP TABLE IF EXISTS `interfaces`; +CREATE TABLE `interfaces` ( + `id` int(11) NOT NULL auto_increment, + `host` int(11) NOT NULL default '0', + `if` varchar(64) NOT NULL default '', + `ifIndex` int(11) NOT NULL default '0', + `ifSpeed` text, + `up` varchar(12) NOT NULL default '', + `up_admin` varchar(12) default NULL, + `ifDuplex` varchar(12) default NULL, + `ifMtu` int(11) default NULL, + `ifType` text, + `name` text, + `ifPhysAddress` text, + `lastchange` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `host` (`host`), + KEY `snmpid` (`ifIndex`), + KEY `if_2` (`if`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `interfaces` +-- + + +/*!40000 ALTER TABLE `interfaces` DISABLE KEYS */; +LOCK TABLES `interfaces` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `interfaces` ENABLE KEYS */; + +-- +-- Table structure for table `ipaddr` +-- + +DROP TABLE IF EXISTS `ipaddr`; +CREATE TABLE `ipaddr` ( + `id` int(11) NOT NULL auto_increment, + `addr` varchar(32) NOT NULL default '', + `cidr` smallint(6) NOT NULL default '0', + `network` varchar(64) NOT NULL default '', + `interface_id` int(11) NOT NULL default '0', + PRIMARY KEY (`id`), + KEY `addr` (`addr`,`cidr`,`interface_id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `ipaddr` +-- + + +/*!40000 ALTER TABLE `ipaddr` DISABLE KEYS */; +LOCK TABLES `ipaddr` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `ipaddr` ENABLE KEYS */; + +-- +-- Table structure for table `links` +-- + +DROP TABLE IF EXISTS `links`; +CREATE TABLE `links` ( + `id` int(11) NOT NULL auto_increment, + `src_if` int(11) default NULL, + `dst_if` int(11) default NULL, + `active` tinyint(4) NOT NULL default '1', + `cdp` int(11) default NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `links` +-- + + +/*!40000 ALTER TABLE `links` DISABLE KEYS */; +LOCK TABLES `links` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `links` ENABLE KEYS */; + +-- +-- Table structure for table `networks` +-- + +DROP TABLE IF EXISTS `networks`; +CREATE TABLE `networks` ( + `id` int(11) NOT NULL auto_increment, + `cidr` varchar(32) NOT NULL default '', + PRIMARY KEY (`id`), + UNIQUE KEY `cidr_2` (`cidr`), + FULLTEXT KEY `cidr` (`cidr`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `networks` +-- + + +/*!40000 ALTER TABLE `networks` DISABLE KEYS */; +LOCK TABLES `networks` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `networks` ENABLE KEYS */; + +-- +-- Table structure for table `services` +-- + +DROP TABLE IF EXISTS `services`; +CREATE TABLE `services` ( + `service_id` int(11) NOT NULL auto_increment, + `service_host` int(11) NOT NULL default '0', + `service_ip` text, + `service_type` text NOT NULL, + `service_desc` text NOT NULL, + `service_param` text NOT NULL, + `service_port` text, + `service_hostname` text, + `service_status` tinyint(4) NOT NULL default '2', + `service_message` text NOT NULL, + `service_changed` int(11) NOT NULL default '0', + `service_checked` int(11) NOT NULL default '0', + `service_ignore` tinyint(4) NOT NULL default '0', + PRIMARY KEY (`service_id`), + KEY `service_host` (`service_host`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `services` +-- + + +/*!40000 ALTER TABLE `services` DISABLE KEYS */; +LOCK TABLES `services` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `services` ENABLE KEYS */; + +-- +-- Table structure for table `storage` +-- + +DROP TABLE IF EXISTS `storage`; +CREATE TABLE `storage` ( + `storage_id` int(11) NOT NULL auto_increment, + `host_id` int(11) NOT NULL default '0', + `hrStorageIndex` int(11) NOT NULL default '0', + `hrStorageDescr` text NOT NULL, + `hrStorageSize` int(11) NOT NULL default '0', + `hrStorageAllocationUnits` int(11) NOT NULL default '0', + PRIMARY KEY (`storage_id`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `storage` +-- + + +/*!40000 ALTER TABLE `storage` DISABLE KEYS */; +LOCK TABLES `storage` WRITE; +UNLOCK TABLES; +/*!40000 ALTER TABLE `storage` ENABLE KEYS */; + +-- +-- Table structure for table `users` +-- + +DROP TABLE IF EXISTS `users`; +CREATE TABLE `users` ( + `username` char(30) NOT NULL default '', + `password` char(32) NOT NULL default '', + `descr` char(30) NOT NULL default '', + `level` tinyint(4) NOT NULL default '0', + UNIQUE KEY `username` (`username`) +) ENGINE=MyISAM DEFAULT CHARSET=latin1; + +-- +-- Dumping data for table `users` +-- + + +/*!40000 ALTER TABLE `users` DISABLE KEYS */; +LOCK TABLES `users` WRITE; +INSERT INTO `users` VALUES ('admin','6033c66e583283ac','Default User',10); +UNLOCK TABLES; +/*!40000 ALTER TABLE `users` ENABLE KEYS */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + diff --git a/poll-device-netstats.php b/poll-device-netstats.php new file mode 100755 index 0000000000..67fa7cdeb1 --- /dev/null +++ b/poll-device-netstats.php @@ -0,0 +1,40 @@ + diff --git a/poll-device.php b/poll-device.php new file mode 100755 index 0000000000..98315c28e3 --- /dev/null +++ b/poll-device.php @@ -0,0 +1,220 @@ +#!/usr/bin/php += '3') { + echo("$ciscomodel"); + $newhardware = $ciscomodel; + } + + } + pollDeviceIOS(); + break; + case "ProCurve": + $sysDescr = str_replace(", ", ",", $sysDescr); + list($newhardware, $newfeatures, $newversion) = explode(",", $sysDescr); + list($newversion) = explode("(", $newversion); + if(!strstr($ciscomodel, " ")) { + echo("$ciscomodel"); + $newhardware = str_replace("\"", "", $ciscomodel); + } + pollDeviceHP(); + break; + case "Snom": + $sysDescr = `snmpget -Oqv -$snmpver -c $community $hostname 1.3.6.1.2.1.7526.2.4`; + $sysDescr = str_replace("-", " ", $sysDescr); + $sysDescr = str_replace("\"", "", $sysDescr); + list($newhardware, $newfeatures, $newversion) = explode(" ", $sysDescr); + pollDeviceSnom(); + break; + default: + pollDevice(); + } + $newlocation = str_replace("\"","", $sysLocation); + } else { + $newstatus = '0'; + } + + $uptimerrd = "rrd/" . $hostname . "-uptime.rrd"; + if(!is_file($uptimerrd)) { + $woo = `rrdtool create $uptimerrd \ + DS:uptime:GAUGE:600:0:U \ + RRA:AVERAGE:0.5:1:600 \ + RRA:AVERAGE:0.5:6:700 \ + RRA:AVERAGE:0.5:24:775 \ + RRA:AVERAGE:0.5:288:797`; + } + rrd_update($uptimerrd, "N:$newuptime"); + + if ( $sysDescr && $sysDescr != $old_sysDescr ) { + $update = "`sysDescr` = '$sysDescr'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'New sysDescr - $sysDescr')"); + } + if ( $newlocation && $location != $newlocation ) { + $update = "`location` = '$newlocation'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed location from $location to $newlocation')"); + } + if ( $newversion && $version != $newversion ) { + $update .= $seperator . "`version` = '$newversion'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed version from $version to $newversion')"); + } + if ( $newfeatures && $newfeatures != $features ) { + $update .= $seperator . "`features` = '$newfeatures'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed features from $features to $newfeatures')"); + } + if ( $newhardware && $newhardware != $hardware ) { + $update .= $seperator . "`hardware` = '$newhardware'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Changed hardware from $hardware to $newhardware')"); + } + if ( $newuptime && $uptime != $newuptime ) { + $update .= $seperator . "`uptime` = '$newuptime'"; + $seperator = ", "; + } + if ( $newuptime && $newuptime < $uptime ) { + $update .= $seperator . "`lastchange` = NOW()"; + $seperator = ", "; + } elseif($status != $newstatus) { + $update .= $seperator . "`lastchange` = NOW()"; + $seperator = ", "; + } + if( $status != $newstatus ) { + $update .= $seperator . "`status` = '$newstatus'"; + $seperator = ", "; + if ($newstatus == '1') { $stat = "Up"; + mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('0', '$id', 'Device is up\n')"); + } else { + $stat = "Down"; + mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('9', '$id', 'Device is down\n')"); + } + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Device status changed to $stat')"); + } + if ($update) { + $update_query = "UPDATE `devices` SET "; + $update_query .= $update; + $update_query .= " WHERE `id` = '$id'"; + echo("Updating $hostname\n$update_query\n\n"); + $update_result = mysql_query($update_query); + } else { + echo("No Changes to $hostname \n\n"); + } +} + +?> diff --git a/poll-ifstatus.php b/poll-ifstatus.php new file mode 100755 index 0000000000..dd50f1c7c0 --- /dev/null +++ b/poll-ifstatus.php @@ -0,0 +1,75 @@ +#!/usr/local/bin/php + diff --git a/poll-ifstatus.sh b/poll-ifstatus.sh new file mode 100755 index 0000000000..b468cfec05 --- /dev/null +++ b/poll-ifstatus.sh @@ -0,0 +1,14 @@ +#!/usr/local/bin/bash + +cd /usr/local/network +./poll-ifstatus.php 1 & +./poll-ifstatus.php 2 & +./poll-ifstatus.php 3 & +./poll-ifstatus.php 4 & +./poll-ifstatus.php 5 & +./poll-ifstatus.php 6 & +./poll-ifstatus.php 7 & +./poll-ifstatus.php 8 & +./poll-ifstatus.php 9 & +./poll-ifstatus.php 0 & + diff --git a/poll-interface.php b/poll-interface.php new file mode 100755 index 0000000000..0d2a106add --- /dev/null +++ b/poll-interface.php @@ -0,0 +1,148 @@ +#!/usr/bin/php + $ifDescr')"); + } + + if ( $old_alias != $ifAlias ) { + $update .= $seperator . "`name` = \"$ifAlias\""; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Desc: $old_alias -> $ifAlias')"); + } + if ( $old_up != $ifOperStatus && $ifOperStatus != "" ) { + $update .= $seperator . "`up` = '$ifOperStatus'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Interface went $ifOperStatus')"); + } + if ( $old_up_admin != $ifAdminStatus && $ifAdminStatus != "" ) { + $update .= $seperator . "`up_admin` = '$ifAdminStatus'"; + $seperator = ", "; + if($ifAdminStatus == "up") { $admin = "enabled"; } else { $admin = "disabled"; } + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Interface $admin')"); + } + if ( $old_duplex != $ifDuplex && $ifDuplex != "" ) { + $update .= $seperator . "`ifDuplex` = '$ifDuplex'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Duplex changed to $ifDuplex')"); + } + if ( $old_type != $ifType && $ifType != "" ) { + $update .= $seperator . "`ifType` = '$ifType'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Type changed to $ifType')"); + } + if ( $old_mtu != $ifMtu && $ifMtu != "" ) { + $update .= $seperator . "`ifMtu` = '$ifMtu'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'MTU changed to $ifMtu')"); + } + if ( $old_physaddress != $ifPhysAddress && $ifPhysAddress != "" ) { + $update .= $seperator . "`ifPhysAddress` = '$ifPhysAddress'"; + $seperator = ", "; + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'MAC changed to $ifPhysAddress')"); + } + + if ( $old_speed != $ifSpeed && $ifSpeed != "" ) { + $update .= $seperator . "`ifSpeed` = '$ifSpeed'"; + $seperator = ", "; + $prev = humanspeed($old_speed); + $now = humanspeed($ifSpeed); + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) values ($interface[host], $interface[sqlid], NOW(), 'Speed changed from $prev -> $now')"); + } + + if ($update) { + $update_query = "UPDATE `interfaces` SET "; + $update_query .= $update; + $update_query .= " WHERE `id` = '$id'"; + echo("Updating : $hostname $ifDescr\n$update_query\n\n"); + $update_result = mysql_query($update_query); + } else { + echo("Not Updating : $hostname $ifDescr ( $old_if )\n\n"); + } + + if($ifOperStatus == "up") { + $snmp_data = `snmpget -O qv -v2c -c $community $hostname ifHCInOctets.$ifIndex ifHCOutOctets.$ifIndex ifInErrors.$ifIndex ifOutErrors.$ifIndex \ + ifInUcastPkts.$ifIndex ifOutUcastPkts.$ifIndex ifInNUcastPkts.$ifIndex ifOutNUcastPkts.$ifIndex`; + $snmp_data = str_replace("Wrong Type (should be Counter32): ","", $snmp_data); + $snmp_data = str_replace("No Such Instance currently exists at this OID","", $snmp_data); + list($ifHCInOctets, $ifHCOutOctets, $ifInErrors, $ifOutErrors, $ifInUcastPkts, $ifOutUcastPkts, $ifInNUcastPkts, $ifOutNUcastPkts) = explode("\n", $snmp_data); + if($ifHCInOctets == "" || strpos($ifHCInOctets, "No") !== FALSE ) { + $fixit = `snmpget -O qv -v2c -c $community $hostname ifInOctets.$ifIndex ifOutOctets.$ifIndex`; + list ($ifHCInOctets, $ifHCOutOctets) = explode("\n", $fixit); + } + $woo = "N:$ifHCInOctets:$ifHCOutOctets:$ifInErrors:$ifOutErrors:$ifInUcastPkts:$ifOutUcastPkts:$ifInNUcastPkts:$ifOutNUcastPkts"; + $ret = rrd_update("$rrdfile", $woo); + } else { + echo("Interface $hostname $old_if is down\n"); + } +} + +mysql_query("UPDATE interfaces set ifPhysAddress = '' WHERE ifPhysAddress = 'No Such Instance currently exists at this OID'"); + +?> diff --git a/poll-os.php b/poll-os.php new file mode 100755 index 0000000000..78acabfc7d --- /dev/null +++ b/poll-os.php @@ -0,0 +1,28 @@ +#!/usr/bin/php + diff --git a/poll-reachability.php b/poll-reachability.php new file mode 100755 index 0000000000..ac674607c8 --- /dev/null +++ b/poll-reachability.php @@ -0,0 +1,53 @@ +#!/usr/bin/php + $hostname\n"); + + $status = `$fping $hostname | cut -d " " -f 3`; + $status = trim($status); + + if($status == "alive") { + $pos = `snmpget -$snmpver -c $community -t 1 $hostname sysDescr.0`; + if($pos == '') { + $status='0'; + $posb = `snmpget -$snmpver -c $community -t 1 $hostname 1.3.6.1.2.1.7526.2.4`; + if($posb == '') { } else { $status='1'; } + } else { + $status='1'; + } + } else { + $status='0'; + } + + echo("$old_status => $status \n"); + + + if($status != $old_status) { + mysql_query("UPDATE `devices` SET `status`= '$status' WHERE `id` = '$id'"); + if ($status == '1') { + $stat = "Up"; + mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('0', '$id', 'Device is up\n')"); + } else { + $stat = "Down"; + mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('9', '$id', 'Device is down\n')"); + } + mysql_query("INSERT INTO eventlog (host, interface, datetime, message) VALUES ('$id', NULL, NOW(), 'Device status changed to $stat')"); + echo("Status Changed!\n"); + } +} +?> diff --git a/poll-temperatures.php b/poll-temperatures.php new file mode 100755 index 0000000000..494c6742dd --- /dev/null +++ b/poll-temperatures.php @@ -0,0 +1,36 @@ +#!/usr/bin/php + diff --git a/process-syslog.php b/process-syslog.php new file mode 100755 index 0000000000..9dc4185784 --- /dev/null +++ b/process-syslog.php @@ -0,0 +1,60 @@ +#!/usr/bin/php + diff --git a/scan-snmp.php b/scan-snmp.php new file mode 100755 index 0000000000..52c9602cf3 --- /dev/null +++ b/scan-snmp.php @@ -0,0 +1,21 @@ +#!/usr/bin/php + diff --git a/scan-snmp.sh b/scan-snmp.sh new file mode 100755 index 0000000000..e0cd0ec78c --- /dev/null +++ b/scan-snmp.sh @@ -0,0 +1,11 @@ +./scan-snmp.php 0 & +./scan-snmp.php 1 & +./scan-snmp.php 2 & +./scan-snmp.php 3 & +./scan-snmp.php 4 & +./scan-snmp.php 5 & +./scan-snmp.php 6 & +./scan-snmp.php 7 & +./scan-snmp.php 8 & +./scan-snmp.php 9 & + diff --git a/scripts/distro b/scripts/distro new file mode 100755 index 0000000000..5596ed7e3a --- /dev/null +++ b/scripts/distro @@ -0,0 +1,47 @@ +#!/bin/sh +# Detects which OS and if it is Linux then it will detect which Linux Distribution. + +OS=`uname -s` +REV=`uname -r` +MACH=`uname -m` + +GetVersionFromFile() +{ + VERSION=`cat $1 | tr "\n" ' ' | sed s/.*VERSION.*=\ // ` + } + + if [ "${OS}" = "SunOS" ] ; then + OS=Solaris + ARCH=`uname -p` + OSSTR="${OS} ${REV}(${ARCH} `uname -v`)" + elif [ "${OS}" = "AIX" ] ; then + OSSTR="${OS} `oslevel` (`oslevel -r`)" + elif [ "${OS}" = "Linux" ] ; then + KERNEL=`uname -r` + if [ -f /etc/redhat-release ] ; then + DIST='RedHat' + PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//` + REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//` + elif [ -f /etc/SuSE-release ] ; then + DIST=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//` + REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //` + elif [ -f /etc/mandrake-release ] ; then + DIST='Mandrake' + PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//` + REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//` + elif [ -f /etc/debian_version ] ; then + DIST="Debian `cat /etc/debian_version`" + REV="" + fi + if [ -f /etc/UnitedLinux-release ] ; then + DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]" + fi + if [ -f /etc/lsb-release ] ; then + DIST="`cat /etc/lsb-release | grep DISTRIB_ID | cut -d "=" -f2`" + REV="`cat /etc/lsb-release | grep DISTRIB_RELEASE | cut -d "=" -f2`" + fi +# OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})" + OSSTR="${DIST} ${REV}" + fi + echo ${OSSTR} + diff --git a/test.php b/test.php new file mode 100755 index 0000000000..e798b841bb --- /dev/null +++ b/test.php @@ -0,0 +1,18 @@ +#!/usr/bin/php + +