WHAT THE FUCK
git-svn-id: http://www.observium.org/svn/observer/trunk@3058 61d68cd4-352d-0410-923a-c4978735b2b8
@@ -1,245 +0,0 @@
|
||||
For more granular updates check:
|
||||
|
||||
http://www.observium.org/websvn/listing.php?repname=observer
|
||||
|
||||
SVN
|
||||
|
||||
* Smokeping integration
|
||||
* Fixed Cisco VLAN tracking
|
||||
* Much improved devices/ports browsing
|
||||
* Some improvements to map
|
||||
|
||||
0.10.5.2248 ( 5th May 2011 )
|
||||
|
||||
* Improve poller/discovery
|
||||
* Improve option bar option highlighting
|
||||
* Add support for OSPF discovery
|
||||
* Add support for CEF switching statistics from CISCO-CEF-MIB
|
||||
* Add support for UDP6 transport (and others) for SNMP.
|
||||
* Improved Microsoft Windows detection.
|
||||
* Juniper ScreenOS CPU/Memory.
|
||||
* Click to zoom for graphs.
|
||||
* Force10 support (hardware, os, version, temp).
|
||||
* Mikrotik RouterOS fixes.
|
||||
* Fixes to port type and customer detection.
|
||||
* Improved base URL detection. (*REMOVE* $config['base_url'] from your config.php).
|
||||
* Add graphing of VPN statistics on Cisco IOS/ASA.
|
||||
* Migrate entire graphing system to new graphing structure with per-graphtype authentication.
|
||||
* Add more UNIX statistics graphing from UCD-MIB.
|
||||
* Add support for XUPS-MIB for Eaton devices
|
||||
* Add support for JunOS BGP prefix counters
|
||||
* Add support for Ingrasys iPoMan 1200 series PDUs
|
||||
* Add support for Socomec Net Vision UPS systems
|
||||
* Add support for ServerTech Sentry3 power systems
|
||||
* Add support for VMWare ESX hosts, and listing their virtual machines
|
||||
* Add support for listing libvirt virtual machines
|
||||
* MySQL and nginx application pollers
|
||||
* Add support for IPMI polling on servers
|
||||
* Add a new discovery parameter to only discover new devices, this can be run every 5 minutes
|
||||
to speed up discovery of added devices through the webinterface
|
||||
* Make a distinction between 'ignore' and 'disable' for ports, like for devices
|
||||
* Allow overriding sysLocation and sysContact
|
||||
|
||||
Release 0.10.7.1 ( 19th July 2010 )
|
||||
|
||||
* Minor bugfix release
|
||||
|
||||
Release 0.10.7 ( 18th July 2010 )
|
||||
|
||||
* Project name has changed to Observium
|
||||
* rrdcached support
|
||||
* Support of ADSL-LINE-MIB and new ports display mode designed
|
||||
for service providers with DSLAMs and MSANs
|
||||
* Discovery of new device/os types :
|
||||
Apple Airport, Axis Camera, Motorola Netopia, APC Switched PDU,
|
||||
Extreme Extremeware, Redback, ZyXEL ZyWALL, DELL DRAC,
|
||||
Dell PowerVault, Allied Telesis, Cisco NX-OS, MGE Evolution UPS
|
||||
HP JetDirect printers, APC STS/ATS, Mikrotic RouterOS,
|
||||
AKCP SensorProbe3
|
||||
* New structure for device graphing to aid 3rd party addons
|
||||
* Temperature detection from CISCO-ENTITY-SENSOR-MIB
|
||||
* Graphing of statistics from DISKIO-MIB
|
||||
* Ongoing unification of all sensors into one 'sensors' framework
|
||||
* Detection and polling of frequency, voltage and amperage stats
|
||||
for many UPSes and power switching hardware
|
||||
* Detection of Extremeware / XOS versions and hardware
|
||||
* Detection of several Allied Telesis devices and their versions
|
||||
and hardware
|
||||
* Added a lot of MIBs
|
||||
|
||||
Release 0.10.6 ( 21st June 2010 )
|
||||
|
||||
* Changed netstats (icmp, udp, tcp, snmp, ip) stats collection
|
||||
* Implemented new application monitoring system
|
||||
* Implemented new includes-based graphing system
|
||||
* Improvements to eventlogging code
|
||||
* Replaced interfaces polling code (2x speed improvement on average!)
|
||||
|
||||
* Removed, cleaned up or replaced a lot of old and unused code.
|
||||
|
||||
* Added support for IPv6 BGP sessions on JunOS
|
||||
* Added support for Dell Powerconnect and HP Procurve switches
|
||||
* Added support for Supermicro SuperoDoctor temperature support
|
||||
* Added support for LLDP discovery
|
||||
* Added support for Q-BRIDGE-MIB VLANs (basically for non-cisco HW)
|
||||
* Added support for LMSensors and Supermicro Temp/Fan/Voltages
|
||||
* Replaced old image-based percentage bar with new CSS bar
|
||||
* Added Foundry/Brocade support
|
||||
* Added Juniper JunOSe support
|
||||
|
||||
* And more...
|
||||
|
||||
Release 0.6.0 ( 28th August 2009 )
|
||||
|
||||
* Changed IPv6 database structure and discovery *** DATABASE CHANGE ***
|
||||
* Added CollectD integration code
|
||||
* Added fixed mib loading to SNMP commands
|
||||
* Replaced IPv4 and IPv6 discovery code
|
||||
* Added support for CISCO-PROCESS-MIB for per-CPU graphing
|
||||
* Added support for CISCO-ENHANCED-MEMORY-POOL-MIB for per-pool graphing
|
||||
|
||||
Release 0.5.1 ( 25 March 2009 )
|
||||
|
||||
* Primarily bugfixes to 0.5.0
|
||||
* Removed GPL'd code and added downloader helper scripts instead
|
||||
* Added Pseudowire menu entry and configuration option
|
||||
* Fixed device adding scripts and added port option to web interface
|
||||
* Fixed interface packets/bits/errors links
|
||||
* Fixed some non-absolute links
|
||||
* Fixed device deletion script
|
||||
|
||||
Release 0.5.0 ( 24 March 2009 )
|
||||
|
||||
* Cleaned up a lot of hardcoded paths
|
||||
* Cleaned up BGP session polling
|
||||
* Added CDP-based device link map
|
||||
* Added sysName tracking for more accurate CDP linking
|
||||
* Added more search features for syslog, device list and inventory
|
||||
* Replaced old syslog system with new version, without pipes
|
||||
* Added more Pseudowire/X-Connect tracking information
|
||||
* Fixed a lot of URLs to be absolute URLs built from base_url
|
||||
* Fixed some mod_rewrite rules
|
||||
* Added basic MAC accounting polling
|
||||
* Added config display and syntax colouring for RANCID-collected IOS configs
|
||||
|
||||
Release 0.4.1 ( 20th Nov 2008 )
|
||||
|
||||
* Cleaned up some configuration settings
|
||||
* Added more connection type rewrites
|
||||
* Added ability to change device names
|
||||
* Cleaned up IPv6 and CDP discovery
|
||||
* Security fixes
|
||||
|
||||
Release 0.4.0 ( 11th Nov 2008 )
|
||||
|
||||
* Much prettier front page
|
||||
* Tidied up service checking layout
|
||||
* Added MPLS VRF tracking
|
||||
* Added Pseudowire/X-Connect tracking
|
||||
* Basic front page customisation
|
||||
* Fixed aggregate graphs
|
||||
* IPv6 address tracking
|
||||
* View for ports with errors
|
||||
* Added some JunOS support
|
||||
|
||||
Release 0.3.2.1 ( 27th March 2008 )
|
||||
|
||||
* Minor bugfix to interface discovery engine.
|
||||
|
||||
Release 0.3.2 ( 26th March 2008 )
|
||||
|
||||
* Added BGP peer detection and watching
|
||||
* Cleaned up the front page and made it more useful
|
||||
* Added better syslog support
|
||||
* Added some Juniper Netscreen support
|
||||
* Wrote a better OS detection system
|
||||
* Added some billing features
|
||||
* Rewrote and restructured a lot of the discovery
|
||||
* Rewrote some polling stuff
|
||||
|
||||
... This release is greatly improved, and threatens
|
||||
to actually work properly for people other than me!
|
||||
|
||||
Release 0.3.1 ( 30th November 2007 )
|
||||
|
||||
* Fixed a great many things and made it prettier!
|
||||
|
||||
This release took so long that I've largely forgotten
|
||||
what's been changed. Again!
|
||||
|
||||
Release 0.3.0-pre1 ( 24th June 2007 )
|
||||
|
||||
* Added VLAN features for cisco devices
|
||||
* Added scripts to check for interface errors
|
||||
* Added extraction of current interface rates from rrd files
|
||||
* Added some syslog stuff
|
||||
* Added email notification for device reboots
|
||||
|
||||
.. Lots of other updates, most of which i've forgotten about!
|
||||
|
||||
Release 0.2.5
|
||||
|
||||
* Added new CDP detection code and proper CDP link removal
|
||||
* Added service addition page
|
||||
* Added device overview
|
||||
* Added more interface pages
|
||||
* Added syslogging using syslog-ng
|
||||
* Added temperature monitoring and discovery
|
||||
* Added TCP/IP/UDP/ICMP statistics collection and graphing
|
||||
* Fixed some graphs
|
||||
* Tidied up some font sizes
|
||||
* Added stylesheet variable into config.php to allow custom files to be used
|
||||
|
||||
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
|
||||
@@ -1,24 +0,0 @@
|
||||
Please see http://www.observium.org for up to date installation instructions.
|
||||
|
||||
Please also contact us through the mailing list or on IRC if you run into any issues.
|
||||
|
||||
-------
|
||||
|
||||
Some notes about how to set up your systems, which have not found their way
|
||||
onto the wiki just yet:
|
||||
|
||||
Customer port parsing
|
||||
=====================
|
||||
|
||||
Set your port description to:
|
||||
|
||||
Cust: CustomerName {CircuitDesc} (OptionalNotes) [Speed]
|
||||
|
||||
Transit/peering/core port parsing
|
||||
=================================
|
||||
|
||||
Set your port description to:
|
||||
|
||||
Transit: whateveryoulike
|
||||
Peering: whateveryoulike
|
||||
Core: whateveryoulike
|
||||
@@ -1,41 +0,0 @@
|
||||
Copyright (C) 2006-2011 Adam Armstrong <[email protected]>
|
||||
|
||||
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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Please see LICENSES/GPLv3-LICENSE.txt for usage requirements and restrictions.
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Observium is an autodiscovering PHP/MySQL/SNMP based network monitoring which includes
|
||||
support for a wide range of network hardware and operating systems including Cisco,
|
||||
Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more.
|
||||
|
||||
Observium has grown out of a lack of easy to configure network monitoring platforms.
|
||||
It is intended to provide a more navigable interface to the health and performance of
|
||||
your network. Its design goals include collecting as much historical data about devices
|
||||
as possible, being completely autodiscovered with little or no manual intervention,
|
||||
and having a very intuitive interface.
|
||||
|
||||
Observium is not intended to replace an up/down alerting system, but rather to
|
||||
complement it with an easy to manage, intuitive representation of historical and
|
||||
current performance statistics, configuration visualisation and syslog capture.
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
Please see http://www.observium.org.
|
||||
|
||||
Please email [email protected] with any feature requests, bug reports or just to tell me
|
||||
that you're using observer!
|
||||
@@ -1,89 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage cli
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
chdir(dirname($argv[0]));
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
if (isset($argv[1]) && $argv[1])
|
||||
{
|
||||
$host = strtolower($argv[1]);
|
||||
$community = $argv[2];
|
||||
$snmpver = strtolower($argv[3]);
|
||||
|
||||
if (is_numeric($argv[4]))
|
||||
{
|
||||
$port = $argv[4];
|
||||
}
|
||||
else
|
||||
{
|
||||
$port = 161;
|
||||
}
|
||||
|
||||
if (@!$argv[5])
|
||||
{
|
||||
$transport = 'udp';
|
||||
}
|
||||
else
|
||||
{
|
||||
$transport = $argv[5];
|
||||
}
|
||||
|
||||
if ($community)
|
||||
{
|
||||
$config['snmp']['community'] = array($community);
|
||||
}
|
||||
|
||||
if ($snmpver)
|
||||
{
|
||||
$snmpversions[] = $snmpver;
|
||||
}
|
||||
else
|
||||
{
|
||||
$snmpversions = array('v2c','v1');
|
||||
}
|
||||
|
||||
while (!$device_id && count($snmpversions))
|
||||
{
|
||||
$snmpver = array_shift($snmpversions);
|
||||
$device_id = addHost($host, $snmpver, $port, $transport);
|
||||
}
|
||||
|
||||
if ($device_id)
|
||||
{
|
||||
$device = device_by_id_cache($device_id);
|
||||
echo("Added device ".$device['hostname']." (".$device_id.")\n");
|
||||
}
|
||||
} else {
|
||||
print Console_Color::convert("
|
||||
Observium v".$config['version']." Add Host Tool
|
||||
|
||||
Usage: ./addhost.php <%Whostname%n> [community] [v1|v2c] [port] [" . join("|",$config['snmp']['transports']) . "]
|
||||
|
||||
%rRemember to run discovery for the host afterwards.%n
|
||||
|
||||
");
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,65 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage cli
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
chdir(dirname($argv[0]));
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
if (file_exists('html/includes/authentication/' . $config['auth_mechanism'] . '.inc.php'))
|
||||
{
|
||||
include('html/includes/authentication/' . $config['auth_mechanism'] . '.inc.php');
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("ERROR: no valid auth_mechanism defined.\n");
|
||||
exit();
|
||||
}
|
||||
|
||||
if (auth_usermanagement())
|
||||
{
|
||||
if (isset($argv[1]) && isset($argv[2]) && isset($argv[3]))
|
||||
{
|
||||
if (!user_exists($argv[1]))
|
||||
{
|
||||
if (adduser($argv[1],$argv[2],$argv[3],@$argv[4]))
|
||||
{
|
||||
echo("User ".$argv[1]." added successfully\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("User ".$argv[1]." already exists!\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("Add User Tool\nUsage: ./adduser.php <username> <password> <level 1-10> [email]\n");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo("Auth module does not allow adding users!\n");
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,45 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage alerts
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
foreach (dbFetchRows("SELECT *, A.id AS id FROM `alerts` AS A, `devices` AS D WHERE A.device_id = D.device_id AND alerted = '0'") as $alert)
|
||||
{
|
||||
$id = $alert['id'];
|
||||
$host = $alert['hostname'];
|
||||
$date = $alert['time_logged'];
|
||||
$msg = $alert['message'];
|
||||
$alert_text .= "$date $host $msg";
|
||||
|
||||
dbUpdate(array('alerted' => '1'), 'alerts', '`id` = ?' array($id))
|
||||
|
||||
}
|
||||
|
||||
if ($alert_text)
|
||||
{
|
||||
echo("$alert_text");
|
||||
# `echo '$alert_text' | gnokii --sendsms <NUMBER>`;
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,51 +0,0 @@
|
||||
<?php
|
||||
|
||||
$query = "SELECT * FROM entPhysical WHERE device_id = '" . $device['device_id'] . "' AND entPhysicalClass = 'sensor'";
|
||||
$sensors = mysql_query($query);
|
||||
while ($sensor = mysql_fetch_assoc($sensors))
|
||||
{
|
||||
echo("Checking Entity Sensor " . $sensor['entPhysicalName'] . " - " . $sensor['cempsensorName']);
|
||||
|
||||
$oid = $sensor['entPhysicalIndex'];
|
||||
|
||||
$sensor_cmd = $config['snmpget'] . " -M ".$config['mibdir']." -m CISCO-ENTITY-SENSOR-MIB -O Uqnv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'];
|
||||
$sensor_cmd .= " entSensorValue.$oid entSensorStatus.$oid";
|
||||
|
||||
$sensor_data = trim(shell_exec($sensor_cmd));
|
||||
|
||||
# echo("$sensor_data");
|
||||
|
||||
list($entSensorValue, $entSensorStatus) = explode("\n", $sensor_data);
|
||||
|
||||
$rrd = $config['rrd_dir'] . "/" . $device['hostname'] . "/" . safename("ces-" . $oid . ".rrd");
|
||||
|
||||
if (!is_file($rrd))
|
||||
{
|
||||
rrdtool_create($rrd,"--step 300 \
|
||||
DS:value:GAUGE:600:-1000:U \
|
||||
RRA:AVERAGE:0.5:1:2304 \
|
||||
RRA:AVERAGE:0.5:6:1536 \
|
||||
RRA:AVERAGE:0.5:24:2268 \
|
||||
RRA:AVERAGE:0.5:288:1890 \
|
||||
RRA:MAX:0.5:1:2304 \
|
||||
RRA:MAX:0.5:6:1536 \
|
||||
RRA:MAX:0.5:24:2268 \
|
||||
RRA:MAX:0.5:288:1890 \
|
||||
RRA:MIN:0.5:1:2304 \
|
||||
RRA:MIN:0.5:6:1536 \
|
||||
RRA:MIN:0.5:24:2268 \
|
||||
RRA:MIN:0.5:288:1890");
|
||||
}
|
||||
|
||||
$entSensorValue = entPhysical_scale($entSensorValue, $sensor['entSensorScale']);
|
||||
|
||||
$updatecmd = $config['rrdtool'] ." update $rrd N:$entSensorValue";
|
||||
shell_exec($updatecmd);
|
||||
|
||||
$update_query = "UPDATE `entPhysical` SET entSensorValue='$entSensorValue', entSensorStatus='$entSensorStatus' WHERE `entPhysical_id` = '".$sensor['entPhysical_id']."'";
|
||||
mysql_query($update_query);
|
||||
|
||||
echo($entSensorValue . " - " . $entSensorStatus . "\n");
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,35 +0,0 @@
|
||||
<?php
|
||||
|
||||
$sensor = mysql_fetch_assoc(mysql_query("SELECT * FROM entPhysical as E, devices as D WHERE entPhysical_id = '".mres($_GET['a'])."' and D.device_id = E.device_id"));
|
||||
|
||||
switch ($sensor['entSensorType'])
|
||||
{
|
||||
case 'celsius':
|
||||
case 'watts':
|
||||
case 'voltsDC':
|
||||
case 'dBm':
|
||||
case 'amperes':
|
||||
$scale_min = "0";
|
||||
break;
|
||||
}
|
||||
|
||||
include("includes/graphs/common.inc.php");
|
||||
|
||||
$rrd_filename = $config['rrd_dir'] . "/" . $sensor['hostname'] . "/" . safename("ces-" . $sensor['entPhysicalIndex'] . ".rrd");
|
||||
|
||||
$type = str_pad($sensor['entSensorType'], 8);
|
||||
$type = substr($type,0,8);
|
||||
|
||||
$rrd_options .= " DEF:avg=$rrd_filename:value:AVERAGE";
|
||||
$rrd_options .= " DEF:min=$rrd_filename:value:MIN";
|
||||
$rrd_options .= " DEF:max=$rrd_filename:value:MAX";
|
||||
$rrd_options .= " COMMENT:' Last Min Max Ave\\n'";
|
||||
$rrd_options .= " AREA:max#a5a5a5";
|
||||
$rrd_options .= " AREA:min#ffffff";
|
||||
$rrd_options .= " LINE1.25:avg#aa2200:'".$type."'";
|
||||
$rrd_options .= " GPRINT:avg:AVERAGE:%5.2lf%s";
|
||||
$rrd_options .= " GPRINT:max:MAX:%5.2lf%s";
|
||||
$rrd_options .= " GPRINT:max:MAX:%5.2lf%s";
|
||||
$rrd_options .= " GPRINT:avg:LAST:%5.2lf%s";
|
||||
|
||||
?>
|
||||
@@ -1,39 +0,0 @@
|
||||
<?php
|
||||
|
||||
print_optionbar_start();
|
||||
|
||||
unset ($sep);
|
||||
$query = mysql_query("SELECT `entSensorType` FROM `entPhysical` WHERE device_id = '".$device['device_id']."' AND entSensorType != '' AND entSensorType NOT LIKE 'No%' GROUP BY `entSensorType` ORDER BY `entSensorType`");
|
||||
while ($data = mysql_fetch_assoc($query))
|
||||
{
|
||||
$type = $data['entSensorType'];
|
||||
if (!$_GET['opta']) { $_GET['opta'] = $type; }
|
||||
echo($sep);
|
||||
if ($_GET['opta'] == $type) { echo("<strong>"); }
|
||||
echo("<a href='device/" . $device['device_id'] . "/ciscosensors/" . $type . "/'>" . htmlspecialchars($type) ."</a>\n");
|
||||
if ($_GET['opta'] == $type) { echo("</strong>"); }
|
||||
$sep = ' | ';
|
||||
}
|
||||
|
||||
unset ($sep);
|
||||
|
||||
print_optionbar_end();
|
||||
|
||||
$query = mysql_query("SELECT * FROM `entPhysical` WHERE device_id = '".$device['device_id']."' and entSensorType = '".$_GET['opta']."' ORDER BY `entPhysicalName`");
|
||||
while ($data = mysql_fetch_assoc($query))
|
||||
{
|
||||
if ($data['entSensorMeasuredEntity'])
|
||||
{
|
||||
$measured = mysql_fetch_assoc(mysql_query("SELECT * FROM entPhysical WHERE device_id = '".$device['device_id']."' AND entPhysicalIndex = '".$data['entSensorMeasuredEntity']."'"));
|
||||
}
|
||||
|
||||
echo("<div><h3>".$measured['entPhysicalName']." ".$data['entPhysicalName']."</h3>");
|
||||
$graph_type = "cisco_entity_sensor";
|
||||
$args = "&a=".$data['entPhysical_id'];
|
||||
|
||||
include("includes/print-device-graph.php");
|
||||
|
||||
echo("</div>");
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,13 +0,0 @@
|
||||
|
||||
<?php
|
||||
|
||||
$total = mysql_result(mysql_query("SELECT count(*) FROM `bgpPeers`"),0);
|
||||
$up = mysql_result(mysql_query("SELECT count(*) FROM `bgpPeers` WHERE `bgpPeerState` = 'established'"),0);
|
||||
$stop = mysql_result(mysql_query("SELECT count(*) FROM `bgpPeers` WHERE `bgpPeerAdminStatus` = 'stop'"),0);
|
||||
|
||||
echo('
|
||||
<div>
|
||||
<span style="device-list">Sessions: '.$total.' Up: '.$up.' Down: '.($total-$up) . ($stop != 0 ? ' ( Shutdown: '.$stop.' )' : '') . '</span>
|
||||
</div>');
|
||||
|
||||
?>
|
||||
@@ -1,162 +0,0 @@
|
||||
<?php
|
||||
|
||||
/* FIXME: dead file */
|
||||
|
||||
if ($device['os_group'] == "ios") {
|
||||
$portifIndex = array();
|
||||
$cmd = ($device['snmpver'] == 'v1' ? $config['snmpwalk'] : $config['snmpbulkwalk']) . " -M ".$config['mibdir']. " -CI -m CISCO-STACK-MIB -O q -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " portIfIndex";
|
||||
#echo("$cmd");
|
||||
$portifIndex_output = trim(shell_exec($cmd));
|
||||
foreach (explode("\n", $portifIndex_output) as $entry){
|
||||
$entry = str_replace("CISCO-STACK-MIB::portIfIndex.", "", $entry);
|
||||
list($slotport, $ifIndex) = explode(" ", $entry);
|
||||
$portifIndex[$ifIndex] = $slotport;
|
||||
}
|
||||
if ($debug) { print_r($portifIndex); }
|
||||
}
|
||||
|
||||
$interface_query = mysql_query("SELECT * FROM `ports` $where");
|
||||
while ($interface = mysql_fetch_assoc($interface_query)) {
|
||||
|
||||
if (!$device) { $device = mysql_fetch_assoc(mysql_query("SELECT * FROM `devices` WHERE `device_id` = '" . $interface['device_id'] . "'")); }
|
||||
|
||||
unset($ifAdminStatus, $ifOperStatus, $ifAlias, $ifDescr);
|
||||
|
||||
$interface['hostname'] = $device['hostname'];
|
||||
$interface['device_id'] = $device['device_id'];
|
||||
|
||||
if ($device['status'] == '1') {
|
||||
|
||||
unset($update);
|
||||
unset($update_query);
|
||||
unset($seperator);
|
||||
|
||||
echo("Looking at " . $interface['ifDescr'] . " on " . $device['hostname'] . "\n");
|
||||
|
||||
$snmp_cmd = $config['snmpget'] . " -M ".$config['mibdir'] . " -m IF-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'];
|
||||
$snmp_cmd .= " ifAdminStatus." . $interface['ifIndex'] . " ifOperStatus." . $interface['ifIndex'] . " ifAlias." . $interface['ifIndex'] . " ifName." . $interface['ifIndex'];
|
||||
$snmp_cmd .= " ifDescr." . $interface['ifIndex'];
|
||||
|
||||
$snmp_output = trim(shell_exec($snmp_cmd));
|
||||
$snmp_output = str_replace("No Such Object available on this agent at this OID", "", $snmp_output);
|
||||
$snmp_output = str_replace("No Such Instance currently exists at this OID", "", $snmp_output);
|
||||
$snmp_output = str_replace("\"", "", $snmp_output);
|
||||
|
||||
list($ifAdminStatus, $ifOperStatus, $ifAlias, $ifName, $ifDescr) = explode("\n", $snmp_output);
|
||||
|
||||
$ifAdminStatus = translate_ifAdminStatus ($ifAdminStatus);
|
||||
$ifOperStatus = translate_ifOperStatus ($ifOperStatus);
|
||||
|
||||
if ($ifAlias == " ") { $ifAlias = str_replace(" ", "", $ifAlias); }
|
||||
$ifAlias = trim(str_replace("\"", "", $ifAlias));
|
||||
$ifAlias = trim($ifAlias);
|
||||
$ifDescr = trim(str_replace("\"", "", $ifDescr));
|
||||
$ifDescr = trim($ifDescr);
|
||||
|
||||
$ifIndex = $interface['ifIndex'];
|
||||
if ($portifIndex[$ifIndex]) {
|
||||
if ($device['os'] == "CatOS") {
|
||||
$cmd = $config['snmpget'] . " -M ".$config['mibdir'] . " -m CISCO-STACK-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'] . " portName." . $portifIndex[$ifIndex];
|
||||
$ifAlias = trim(shell_exec($cmd));
|
||||
}
|
||||
}
|
||||
|
||||
if ($config['os'][$device[os]]['ifname']) { $ifDescr = $ifName; }
|
||||
|
||||
$rrdfile = $host_rrd . "/" . safename($interface['ifIndex'] . ".rrd");
|
||||
|
||||
if (!is_file($rrdfile)) {
|
||||
rrdtool_create($rrdfile,"DS:INOCTETS:COUNTER:600:0:12500000000 \
|
||||
DS:OUTOCTETS:COUNTER:600:0:12500000000 \
|
||||
DS:INERRORS:COUNTER:600:0:12500000000 \
|
||||
DS:OUTERRORS:COUNTER:600:0:12500000000 \
|
||||
DS:INUCASTPKTS:COUNTER:600:0:12500000000 \
|
||||
DS:OUTUCASTPKTS:COUNTER:600:0:12500000000 \
|
||||
DS:INNUCASTPKTS:COUNTER:600:0:12500000000 \
|
||||
DS:OUTNUCASTPKTS:COUNTER:600:0:12500000000 \
|
||||
RRA:AVERAGE:0.5:1:600 \
|
||||
RRA:AVERAGE:0.5:6:700 \
|
||||
RRA:AVERAGE:0.5:24:775 \
|
||||
RRA:AVERAGE:0.5:288:797 \
|
||||
RRA:MAX:0.5:1:600 \
|
||||
RRA:MAX:0.5:6:700 \
|
||||
RRA:MAX:0.5:24:775 \
|
||||
RRA:MAX:0.5:288:797");
|
||||
}
|
||||
|
||||
if (file_exists("includes/polling/interface-" . $device['os'] . ".php") ) { include("includes/polling/interface-" . $device['os'] . ".php"); }
|
||||
|
||||
if ($interface['ifDescr'] != $ifDescr && $ifDescr != "" ) {
|
||||
$update .= $seperator . "`ifDescr` = '$ifDescr'";
|
||||
$seperator = ", ";
|
||||
eventlog("ifDescr -> $ifDescr", $interface['device_id'], $interface['interface_id']);
|
||||
}
|
||||
|
||||
if ($interface['ifName'] != $ifName && $ifName != "" ) {
|
||||
$update .= $seperator . "`ifName` = '$ifName'";
|
||||
$seperator = ", ";
|
||||
eventlog("ifName -> $ifName", $interface['device_id'], $interface['interface_id']);
|
||||
}
|
||||
|
||||
if ($interface['ifAlias'] != $ifAlias && $ifAlias != "" ) {
|
||||
$update .= $seperator . "`ifAlias` = '".mres($ifAlias)."'";
|
||||
$seperator = ", ";
|
||||
eventlog("ifAlias -> $ifAlias", $interface['device_id'], $interface['interface_id']);
|
||||
}
|
||||
if ($interface['ifOperStatus'] != $ifOperStatus && $ifOperStatus != "" ) {
|
||||
$update .= $seperator . "`ifOperStatus` = '$ifOperStatus'";
|
||||
$seperator = ", ";
|
||||
eventlog("Interface went $ifOperStatus", $interface['device_id'], $interface['interface_id']);
|
||||
}
|
||||
if ($interface['ifAdminStatus'] != $ifAdminStatus && $ifAdminStatus != "" ) {
|
||||
$update .= $seperator . "`ifAdminStatus` = '$ifAdminStatus'";
|
||||
$seperator = ", ";
|
||||
if ($ifAdminStatus == "up") { $admin = "enabled"; } else { $admin = "disabled"; }
|
||||
eventlog("Interface $admin", $interface['device_id'], $interface['interface_id']);
|
||||
}
|
||||
|
||||
if ($update) {
|
||||
$update_query = "UPDATE `ports` SET ";
|
||||
$update_query .= $update;
|
||||
$update_query .= " WHERE `interface_id` = '" . $interface['interface_id'] . "'";
|
||||
#echo("Updating : " . $device['hostname'] . " $ifDescr\nSQL :$update_query\n\n");
|
||||
$update_result = mysql_query($update_query);
|
||||
} else {
|
||||
# echo("Not Updating : " . $device['hostname'] ." $ifDescr ( " . $interface['ifDescr'] . " )\n\n");
|
||||
}
|
||||
|
||||
if ($ifOperStatus == "up") {
|
||||
|
||||
$snmp_data_cmd = $config['snmpget'] . " -M ".$config['mibdir'] . " -m IF-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'];
|
||||
$snmp_data_cmd .= " ifHCInOctets." . $interface['ifIndex'] . " ifHCOutOctets." . $interface['ifIndex'] . " ifInErrors." . $interface['ifIndex'];
|
||||
$snmp_data_cmd .= " ifOutErrors." . $interface['ifIndex'] . " ifInUcastPkts." . $interface['ifIndex'] . " ifOutUcastPkts." . $interface['ifIndex'];
|
||||
$snmp_data_cmd .= " ifInNUcastPkts." . $interface['ifIndex'] . " ifOutNUcastPkts." . $interface['ifIndex'];
|
||||
|
||||
$snmp_data = shell_exec($snmp_data_cmd);
|
||||
|
||||
$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 ) {
|
||||
|
||||
$octets_cmd = $config['snmpget'] . " -M ".$config['mibdir'] . " -m IF-MIB -O qv -" . $device['snmpver'] . " -c " . $device['community'] . " " . $device['hostname'].":".$device['port'];
|
||||
$octets_cmd .= " ifInOctets." . $interface['ifIndex'] . " ifOutOctets." . $interface['ifIndex'];
|
||||
$octets = shell_exec($octets_cmd);
|
||||
list ($ifHCInOctets, $ifHCOutOctets) = explode("\n", $octets);
|
||||
}
|
||||
$woo = "N:$ifHCInOctets:$ifHCOutOctets:$ifInErrors:$ifOutErrors:$ifInUcastPkts:$ifOutUcastPkts:$ifInNUcastPkts:$ifOutNUcastPkts";
|
||||
$ret = rrdtool_update("$rrdfile", $woo);
|
||||
|
||||
} else {
|
||||
#echo("Interface " . $device['hostname'] . " " . $interface['ifDescr'] . " is down\n");
|
||||
}
|
||||
}
|
||||
|
||||
$rates = interface_rates ($rrdfile);
|
||||
mysql_query("UPDATE `ports` SET in_rate = '" . $rates['in'] . "', out_rate = '" . $rates['out'] . "' WHERE interface_id= '" . $interface['interface_id'] . "'");
|
||||
|
||||
}
|
||||
|
||||
unset($portifIndex);
|
||||
|
||||
?>
|
||||
@@ -1,63 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
$device_query = mysql_query("SELECT * FROM `devices` WHERE `device_id` LIKE '%" . $argv[1] . "' AND disabled = '0' ORDER BY `device_id` DESC");
|
||||
|
||||
while ($device = mysql_fetch_assoc($device_query))
|
||||
{
|
||||
$port = $device['port'];
|
||||
|
||||
echo($device['hostname']. " ");
|
||||
|
||||
if (isPingable($device['hostname']))
|
||||
{
|
||||
$pos = snmp_get($device, "sysDescr.0", "-Oqv", "SNMPv2-MIB");
|
||||
echo($device['protocol'].":".$device['hostname'].":".$device['port']." - ".$device['community']." ".$device['snmpver'].": ");
|
||||
if ($pos == '')
|
||||
{
|
||||
$status='0';
|
||||
} else {
|
||||
$status='1';
|
||||
}
|
||||
} else {
|
||||
$status='0';
|
||||
}
|
||||
|
||||
if ($status == '1')
|
||||
{
|
||||
echo("Up\n");
|
||||
} else {
|
||||
echo("Down\n");
|
||||
}
|
||||
|
||||
if ($status != $device['status'])
|
||||
{
|
||||
mysql_query("UPDATE `devices` SET `status`= '$status' WHERE `device_id` = '" . $device['device_id'] . "'");
|
||||
|
||||
if ($status == '1')
|
||||
{
|
||||
$stat = "Up";
|
||||
mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('0', '" . $device['device_id'] . "', 'Device is up\n')");
|
||||
if ($config['alerts']['email']['enable'])
|
||||
{
|
||||
notify($device, "Device Up: " . $device['hostname'], "Device Up: " . $device['hostname'] . " at " . date($config['timestamp_format']));
|
||||
}
|
||||
} else {
|
||||
$stat = "Down";
|
||||
mysql_query("INSERT INTO alerts (importance, device_id, message) VALUES ('9', '" . $device['device_id'] . "', 'Device is down\n')");
|
||||
if ($config['alerts']['email']['enable'])
|
||||
{
|
||||
notify($device, "Device Down: " . $device['hostname'], "Device Down: " . $device['hostname'] . " at " . date($config['timestamp_format']));
|
||||
}
|
||||
}
|
||||
|
||||
log_event("Device status changed to $stat", $device, strtolower($stat));
|
||||
echo("Status Changed!\n");
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?php
|
||||
|
||||
# FIXME there's a delete port function in the functions... merge?!
|
||||
function delete_port($interface_id)
|
||||
{
|
||||
$ipaddrs = mysql_query("SELECT * FROM `ipaddr` WHERE `interface_id` = '$interface_id'");
|
||||
while ($ipaddr = mysql_fetch_assoc($ipaddrs))
|
||||
{
|
||||
echo("<div style='padding-left:8px; font-weight: normal;'>Deleting IPv4 address " . $ipaddr['addr'] . "/" . $ipaddr['cidr']);
|
||||
mysql_query("DELETE FROM addr WHERE id = '".$addr['id']."'");
|
||||
echo("</div>");
|
||||
}
|
||||
|
||||
$ip6addr = mysql_query("SELECT * FROM `ip6addr` WHERE `interface_id` = '$interface_id'");
|
||||
while ($ip6addr = mysql_fetch_assoc($ip6addrs))
|
||||
{
|
||||
echo("<div style='padding-left:8px; font-weight: normal;'>Deleting IPv6 address " . $ip6addr['ip6_comp_addr'] . "/" . $ip6addr['ip6_prefixlen']);
|
||||
mysql_query("DELETE FROM ip6addr WHERE ip6_addr_id = '".$ip6addr['ip6_addr_id']."'");
|
||||
echo("</div>");
|
||||
}
|
||||
|
||||
$ip6addr = mysql_query("SELECT * FROM `ip6addr` WHERE `interface_id` = '$interface_id'");
|
||||
while ($ip6addr = mysql_fetch_assoc($ip6addrs))
|
||||
{
|
||||
echo("<div style='padding-left:8px; font-weight: normal;'>Deleting IPv6 address " . $ip6addr['ip6_comp_addr'] . "/" . $ip6addr['ip6_prefixlen']);
|
||||
mysql_query("DELETE FROM ip6addr WHERE ip6_addr_id = '".$ip6addr['ip6_addr_id']."'");
|
||||
echo("</div>");
|
||||
}
|
||||
|
||||
mysql_query("DELETE FROM `pseudowires` WHERE `interface_id` = '$interface_id'");
|
||||
mysql_query("DELETE FROM `mac_accounting` WHERE `interface_id` = '$interface_id'");
|
||||
mysql_query("DELETE FROM `links` WHERE `local_interface_id` = '$interface_id'");
|
||||
mysql_query("DELETE FROM `links` WHERE `remote_interface_id` = '$interface_id'");
|
||||
mysql_query("DELETE FROM `ports_perms` WHERE `interface_id` = '$interface_id'");
|
||||
mysql_query("DELETE FROM `ports` WHERE `interface_id` = '$interface_id'");
|
||||
}
|
||||
|
||||
$ports = mysql_query("SELECT * FROM `ports` WHERE `deleted` = '1'");
|
||||
while ($port = mysql_fetch_assoc($ports))
|
||||
{
|
||||
echo("<div style='font-weight: bold;'>Deleting port " . $port['interface_id'] . " - " . $port['ifDescr']);
|
||||
delete_port($port['interface_id']);
|
||||
echo("</div>");
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,26 +0,0 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
$search = $argv[1] . "$";
|
||||
|
||||
$data = trim(`cat ips-scanned.txt | grep alive | cut -d" " -f 1 | egrep $search`);
|
||||
|
||||
foreach (explode("\n", $data) as $ip)
|
||||
{
|
||||
$snmp = shell_exec("snmpget -t 0.2 -v2c -c ".$config['community']." $ip sysName.0");
|
||||
if (strstr($snmp, "STRING"))
|
||||
{
|
||||
$hostname = trim(str_replace("SNMPv2-MIB::sysName.0 = STRING: ","", $snmp));
|
||||
if (mysql_result(mysql_query("SELECT COUNT(device_id) FROM devices WHERE hostname = '$hostname'"),0) == '0')
|
||||
{
|
||||
if (gethostbyname($hostname) == gethostbyname($hostname.".".$config['mydomain'])) { $hostname = $hostname . ".".$config['mydomain']; }
|
||||
addHost($hostname, $community, 'v2c');
|
||||
echo("Adding $hostname \n");
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,66 +0,0 @@
|
||||
<?php
|
||||
|
||||
$class = 'temperature';
|
||||
$unit = 'C';
|
||||
|
||||
$query = "SELECT * FROM sensors WHERE sensor_class='$class' AND device_id = '" . $device['device_id'] . "' AND poller_type='snmp'";
|
||||
$sensor_data = mysql_query($query);
|
||||
|
||||
while ($sensor = mysql_fetch_assoc($sensor_data))
|
||||
{
|
||||
echo("Checking temp " . $sensor['sensor_descr'] . "... ");
|
||||
|
||||
for ($i = 0;$i < 5;$i++) # Try 5 times to get a valid temp reading
|
||||
{
|
||||
if ($debug) echo("Attempt $i ");
|
||||
$sensor_value = snmp_get($device, $sensor['sensor_oid'], "-OUqnv", "SNMPv2-MIB");
|
||||
$sensor_value = trim(str_replace("\"", "", $sensor_value));
|
||||
|
||||
if ($sensor_value != 9999) break; # TME sometimes sends 999.9 when it is right in the middle of an update;
|
||||
sleep(1); # Give the TME some time to reset
|
||||
}
|
||||
|
||||
if ($sensor['sensor_divisor']) { $sensor_value = $sensor_value / $sensor['sensor_divisor']; }
|
||||
if ($sensor['sensor_multiplier']) { $sensor_value = $sensor_value * $sensor['sensor_multiplier']; }
|
||||
|
||||
$old_rrd_file = $config['rrd_dir'] . "/" . $device['hostname'] . "/$class-" . safename($sensor['sensor_type']."-".$sensor['sensor_index']) . ".rrd";
|
||||
|
||||
$rrd_file = get_sensor_rrd($device, $sensor);
|
||||
|
||||
if (is_file($old_rrd_file)) { rename($old_rrd_file, $rrd_file); }
|
||||
|
||||
if (!is_file($rrd_file))
|
||||
{
|
||||
rrdtool_create($rrd_file,"--step 300 \
|
||||
DS:sensor:GAUGE:600:-273:1000 \
|
||||
RRA:AVERAGE:0.5:1:600 \
|
||||
RRA:AVERAGE:0.5:6:700 \
|
||||
RRA:AVERAGE:0.5:24:775 \
|
||||
RRA:AVERAGE:0.5:288:797 \
|
||||
RRA:MAX:0.5:1:600 \
|
||||
RRA:MAX:0.5:6:700 \
|
||||
RRA:MAX:0.5:24:775 \
|
||||
RRA:MAX:0.5:288:797\
|
||||
RRA:MIN:0.5:1:600 \
|
||||
RRA:MIN:0.5:6:700 \
|
||||
RRA:MIN:0.5:24:775 \
|
||||
RRA:MIN:0.5:288:797");
|
||||
}
|
||||
|
||||
echo("$sensor_value $unit\n");
|
||||
|
||||
rrdtool_update($rrd_file,"N:$sensor_value");
|
||||
|
||||
if ($sensor['sensor_limit_low'] != "" && $sensor['sensor_current'] < $sensor['sensor_limit'] && $sensor_value >= $sensor['sensor_limit'])
|
||||
{
|
||||
$msg = "Temp Alarm: " . $device['hostname'] . " " . $sensor['sensor_descr'] . " is " . $sensor_value . " (Limit " . $sensor['sensor_limit'];
|
||||
$msg .= ") at " . date($config['timestamp_format']);
|
||||
notify($device, "Temp Alarm: " . $device['hostname'] . " " . $sensor['sensor_descr'], $msg);
|
||||
echo("Alerting for " . $device['hostname'] . " " . $sensor['sensor_descr'] . "\n");
|
||||
log_event('Temperature ' . $sensor['sensor_descr'] . " over threshold: " . $sensor_value . " " . html_entity_decode('°') . "$unit (>= " . $sensor['sensor_limit'] . " " . html_entity_decode('°') . "$unit)", $device, $class, $sensor['sensor_id']);
|
||||
}
|
||||
|
||||
mysql_query("UPDATE sensors SET sensor_current = '$sensor_value' WHERE sensor_class='$class' AND sensor_id = '" . $sensor['sensor_id'] . "'");
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,386 +0,0 @@
|
||||
<?php
|
||||
|
||||
## FIXME not used, do we still need this?
|
||||
|
||||
function mailerrorgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
$period = $to - $from;
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height ";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
|
||||
$range = $to - $from;
|
||||
$points_per_sample = 3;
|
||||
$xpoints = '540';
|
||||
$step = $range*$points_per_sample/$xpoints;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd . "-mailstats.rrd";
|
||||
|
||||
$options .= " DEF:rejected=$database:reject:AVERAGE";
|
||||
$options .= " DEF:mrejected=$database:reject:MAX";
|
||||
$options .= " CDEF:rrejected=rejected,60,*";
|
||||
$options .= " CDEF:drejected=rejected,UN,0,rejected,IF,$step,*";
|
||||
$options .= " CDEF:srejected=PREV,UN,drejected,PREV,IF,drejected,+";
|
||||
$options .= " CDEF:rmrejected=mrejected,60,*";
|
||||
$options .= " DEF:bounced=$database:bounced:AVERAGE";
|
||||
$options .= " DEF:mbounced=$database:bounced:MAX";
|
||||
$options .= " CDEF:rbounced=bounced,60,*";
|
||||
$options .= " CDEF:dbounced=bounced,UN,0,bounced,IF,$step,*";
|
||||
$options .= " CDEF:sbounced=PREV,UN,dbounced,PREV,IF,dbounced,+";
|
||||
$options .= " CDEF:rmbounced=mbounced,60,*";
|
||||
$options .= " DEF:virus=$database:virus:AVERAGE";
|
||||
$options .= " DEF:mvirus=$database:virus:MAX";
|
||||
$options .= " CDEF:rvirus=virus,60,*";
|
||||
$options .= " CDEF:dvirus=virus,UN,0,virus,IF,$step,*";
|
||||
$options .= " CDEF:svirus=PREV,UN,dvirus,PREV,IF,dvirus,+";
|
||||
$options .= " CDEF:rmvirus=mvirus,60,*";
|
||||
$options .= " DEF:spam=$database:spam:AVERAGE";
|
||||
$options .= " DEF:mspam=$database:spam:MAX";
|
||||
$options .= " CDEF:rspam=spam,60,*";
|
||||
$options .= " CDEF:dspam=spam,UN,0,spam,IF,$step,*";
|
||||
$options .= " CDEF:sspam=PREV,UN,dspam,PREV,IF,dspam,+";
|
||||
$options .= " CDEF:rmspam=mspam,60,*";
|
||||
$options .= " COMMENT:Errors\ \ \ \ \ \ \ Total\ \ \ \ \ \ Average\ \ \ \ \ Maximum\\\\n";
|
||||
$options .= " LINE1.25:rrejected#cc0000:reject";
|
||||
$options .= " GPRINT:srejected:MAX:\ %6.0lf";
|
||||
$options .= " GPRINT:rrejected:AVERAGE:\ \ %5.2lf/min";
|
||||
$options .= " GPRINT:rmrejected:MAX:\ %5.2lf/min\\\\l";
|
||||
$options .= " AREA:rbounced#0000cc:bounce";
|
||||
$options .= " GPRINT:sbounced:MAX:\ %6.0lf";
|
||||
$options .= " GPRINT:rbounced:AVERAGE:\ \ %5.2lf/min";
|
||||
$options .= " GPRINT:rmbounced:MAX:\ %5.2lf/min\\\\l";
|
||||
$options .= " STACK:rvirus#000000:virus\ ";
|
||||
$options .= " GPRINT:svirus:MAX:\ %6.0lf";
|
||||
$options .= " GPRINT:rvirus:AVERAGE:\ \ %5.2lf/min";
|
||||
$options .= " GPRINT:rmvirus:MAX:\ %5.2lf/min\\\\l";
|
||||
$options .= " STACK:rspam#00cc00:spam\ \ ";
|
||||
$options .= " GPRINT:sspam:MAX:\ %6.0lf";
|
||||
$options .= " GPRINT:rspam:AVERAGE:\ \ %5.2lf/min";
|
||||
$options .= " GPRINT:rmspam:MAX:\ %5.2lf/min\\\\l";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
function mailsgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
|
||||
$period = $to - $from;
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height ";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$range = $to - $from;
|
||||
$points_per_sample = 3;
|
||||
$xpoints = '540';
|
||||
$step = $range*$points_per_sample/$xpoints;
|
||||
$rrd = $config['rrd_dir'] . "/" . $rrd;
|
||||
$options .= " DEF:sent=$rrd:sent:AVERAGE";
|
||||
$options .= " DEF:msent=$rrd:sent:MAX";
|
||||
$options .= " CDEF:rsent=sent,60,*";
|
||||
$options .= " CDEF:rmsent=msent,60,*";
|
||||
$options .= " CDEF:dsent=sent,UN,0,sent,IF,$step,*";
|
||||
$options .= " CDEF:ssent=PREV,UN,dsent,PREV,IF,dsent,+";
|
||||
$options .= " DEF:recv=$rrd:rcvd:AVERAGE";
|
||||
$options .= " DEF:mrecv=$rrd:rcvd:MAX";
|
||||
$options .= " CDEF:rrecv=recv,60,*";
|
||||
$options .= " CDEF:rmrecv=mrecv,60,*";
|
||||
$options .= " CDEF:drecv=recv,UN,0,recv,IF,$step,*";
|
||||
$options .= " CDEF:srecv=PREV,UN,drecv,PREV,IF,drecv,+";
|
||||
$options .= " COMMENT:Mails\ \ \ \ \ \ Total\ \ \ \ \ \ \ Average\ \ \ \ \ Maximum\\\\n";
|
||||
$options .= " AREA:rsent#00c000:sent";
|
||||
$options .= " LINE1.25:rsent#005000:";
|
||||
$options .= " GPRINT:ssent:MAX:\ \ %6.0lf";
|
||||
$options .= " GPRINT:rsent:AVERAGE:\ \ %5.2lf/min";
|
||||
$options .= " GPRINT:rmsent:MAX:\ %5.2lf/min\\\\l";
|
||||
$options .= " LINE1.25:rrecv#cc0000:rcvd";
|
||||
$options .= " GPRINT:srecv:MAX:\ \ %6.0lf";
|
||||
$options .= " GPRINT:rrecv:AVERAGE:\ \ %5.2lf/min";
|
||||
$options .= " GPRINT:rmrecv:MAX:\ %5.2lf/min\\\\l";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
function memgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height -b 1024";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$options .= " DEF:atotalswap=$database:totalswap:AVERAGE";
|
||||
$options .= " DEF:aavailswap=$database:availswap:AVERAGE";
|
||||
$options .= " DEF:atotalreal=$database:totalreal:AVERAGE";
|
||||
$options .= " DEF:aavailreal=$database:availreal:AVERAGE";
|
||||
$options .= " DEF:atotalfree=$database:totalfree:AVERAGE";
|
||||
$options .= " DEF:ashared=$database:shared:AVERAGE";
|
||||
$options .= " DEF:abuffered=$database:buffered:AVERAGE";
|
||||
$options .= " DEF:acached=$database:cached:AVERAGE";
|
||||
$options .= " CDEF:totalswap=atotalswap,1024,*";
|
||||
$options .= " CDEF:availswap=aavailswap,1024,*";
|
||||
$options .= " CDEF:totalreal=atotalreal,1024,*";
|
||||
$options .= " CDEF:availreal=aavailreal,1024,*";
|
||||
$options .= " CDEF:totalfree=atotalfree,1024,*";
|
||||
$options .= " CDEF:shared=ashared,1024,*";
|
||||
$options .= " CDEF:buffered=abuffered,1024,*";
|
||||
$options .= " CDEF:cached=acached,1024,*";
|
||||
$options .= " CDEF:usedreal=totalreal,availreal,-";
|
||||
$options .= " CDEF:usedswap=totalswap,availswap,-";
|
||||
$options .= " CDEF:cusedswap=usedswap,-1,*";
|
||||
$options .= " CDEF:cdeftot=availreal,shared,buffered,usedreal,cached,usedswap,+,+,+,+,+";
|
||||
$options .= " COMMENT:Bytes\ \ \ \ \ \ \ Current\ \ \ \ Average\ \ \ \ \ Maximum\\n";
|
||||
$options .= " LINE1:usedreal#d0b080:";
|
||||
$options .= " AREA:usedreal#f0e0a0:used";
|
||||
$options .= " GPRINT:usedreal:LAST:\ \ \ %7.2lf%sB";
|
||||
$options .= " GPRINT:usedreal:AVERAGE:%7.2lf%sB";
|
||||
$options .= " GPRINT:usedreal:MAX:%7.2lf%sB\\\\n";
|
||||
$options .= " STACK:availreal#e5e5e5:free";
|
||||
$options .= " GPRINT:availreal:LAST:\ \ \ %7.2lf%sB";
|
||||
$options .= " GPRINT:availreal:AVERAGE:%7.2lf%sB";
|
||||
$options .= " GPRINT:availreal:MAX:%7.2lf%sB\\\\n";
|
||||
$options .= " LINE1:usedreal#d0b080:";
|
||||
$options .= " AREA:shared#afeced::";
|
||||
$options .= " AREA:buffered#cc0000::STACK";
|
||||
$options .= " AREA:cached#ffaa66::STACK";
|
||||
$options .= " LINE1.25:shared#008fea:shared";
|
||||
$options .= " GPRINT:shared:LAST:\ %7.2lf%sB";
|
||||
$options .= " GPRINT:shared:AVERAGE:%7.2lf%sB";
|
||||
$options .= " GPRINT:shared:MAX:%7.2lf%sB\\\\n";
|
||||
$options .= " LINE1.25:buffered#ff1a00:buffers:STACK";
|
||||
$options .= " GPRINT:buffered:LAST:%7.2lf%sB";
|
||||
$options .= " GPRINT:buffered:AVERAGE:%7.2lf%sB";
|
||||
$options .= " GPRINT:buffered:MAX:%7.2lf%sB\\\\n";
|
||||
$options .= " LINE1.25:cached#ea8f00:cached:STACK";
|
||||
$options .= " GPRINT:cached:LAST:\ %7.2lf%sB";
|
||||
$options .= " GPRINT:cached:AVERAGE:%7.2lf%sB";
|
||||
$options .= " GPRINT:cached:MAX:%7.2lf%sB\\\\n";
|
||||
$options .= " LINE1:totalreal#050505:";
|
||||
$options .= " AREA:cusedswap#C3D9FF:swap";
|
||||
$options .= " LINE1.25:cusedswap#356AA0:";
|
||||
$options .= " GPRINT:usedswap:LAST:\ \ \ %7.2lf%sB";
|
||||
$options .= " GPRINT:usedswap:AVERAGE:%7.2lf%sB";
|
||||
$options .= " GPRINT:usedswap:MAX:%7.2lf%sB\\\\n";
|
||||
$options .= " LINE1:totalreal#050505:total";
|
||||
$options .= " GPRINT:totalreal:AVERAGE:\ \ %7.2lf%sB";
|
||||
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
function loadgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
|
||||
$period = $to - $from;
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height ";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$options .= " DEF:1min=$database:1min:AVERAGE";
|
||||
$options .= " DEF:5min=$database:5min:AVERAGE";
|
||||
$options .= " DEF:15min=$database:15min:AVERAGE";
|
||||
$options .= " CDEF:a=1min,100,/";
|
||||
$options .= " CDEF:b=5min,100,/";
|
||||
$options .= " CDEF:c=15min,100,/";
|
||||
$options .= " CDEF:cdefd=a,b,c,+,+";
|
||||
$options .= " COMMENT:Load\ Average\ \ Current\ \ \ \ Average\ \ \ \ Maximum\\\\n";
|
||||
$options .= " AREA:a#ffeeaa:1\ Min:";
|
||||
$options .= " LINE1:a#c5aa00:";
|
||||
$options .= " GPRINT:a:LAST:\ \ \ \ %7.2lf";
|
||||
$options .= " GPRINT:a:AVERAGE:\ \ %7.2lf";
|
||||
$options .= " GPRINT:a:MAX:\ \ %7.2lf\\\\n";
|
||||
$options .= " LINE1.25:b#ea8f00:5\ Min:";
|
||||
$options .= " GPRINT:b:LAST:\ \ \ \ %7.2lf";
|
||||
$options .= " GPRINT:b:AVERAGE:\ \ %7.2lf";
|
||||
$options .= " GPRINT:b:MAX:\ \ %7.2lf\\\\n";
|
||||
$options .= " LINE1.25:c#cc0000:15\ Min";
|
||||
$options .= " GPRINT:c:LAST:\ \ \ %7.2lf";
|
||||
$options .= " GPRINT:c:AVERAGE:\ \ %7.2lf";
|
||||
$options .= " GPRINT:c:MAX:\ \ %7.2lf\\\\n";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
|
||||
function usersgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
|
||||
$period = $to - $from;
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height -l 0";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$options .= " DEF:users=$database:users:AVERAGE";
|
||||
$options .= " COMMENT:Users\ \ \ \ \ \ \ Cur\ \ \ \ \ Ave\ \ \ \ \ \ Min\ \ \ \ \ Max\\\\n";
|
||||
$options .= " AREA:users#CDEB8B:";
|
||||
$options .= " LINE1.25:users#008C00:\ ";
|
||||
$options .= " GPRINT:users:LAST:\ \ \ \ %6.2lf";
|
||||
$options .= " GPRINT:users:AVERAGE:%6.2lf";
|
||||
$options .= " GPRINT:users:MIN:%6.2lf";
|
||||
$options .= " GPRINT:users:MAX:%6.2lf\\\\n";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
function procsgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
$period = $to - $from;
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height -l 0";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$options .= " DEF:procs=$database:procs:AVERAGE";
|
||||
$options .= " COMMENT:Processes\ \ \ \ Cur\ \ \ \ \ Ave\ \ \ \ \ \ Min\ \ \ \ \ Max\\\\n";
|
||||
$options .= " AREA:procs#CDEB8B:";
|
||||
$options .= " LINE1.25:procs#008C00:\ ";
|
||||
$options .= " GPRINT:procs:LAST:\ \ \ \ %6.2lf";
|
||||
$options .= " GPRINT:procs:AVERAGE:%6.2lf";
|
||||
$options .= " GPRINT:procs:MIN:%6.2lf";
|
||||
$options .= " GPRINT:procs:MAX:%6.2lf\\\\n";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function cpugraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
$period = $to - $from;
|
||||
$options = "-l 0 --alt-autoscale-max -E --start $from --end $to --width $width --height $height ";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$options .= " DEF:user=$database:user:AVERAGE";
|
||||
$options .= " DEF:nice=$database:nice:AVERAGE";
|
||||
$options .= " DEF:system=$database:system:AVERAGE";
|
||||
$options .= " DEF:idle=$database:idle:AVERAGE";
|
||||
$options .= " CDEF:total=user,nice,system,idle,+,+,+";
|
||||
$options .= " CDEF:user_perc=user,total,/,100,*";
|
||||
$options .= " CDEF:nice_perc=nice,total,/,100,*";
|
||||
$options .= " CDEF:system_perc=system,total,/,100,*";
|
||||
$options .= " CDEF:idle_perc=idle,total,/,100,*";
|
||||
$options .= " COMMENT:Usage\ \ \ \ \ \ \ Current\ \ \ \ \ Average\ \ \ \ Maximum\\\\n";
|
||||
$options .= " AREA:user_perc#c02020:user";
|
||||
$options .= " GPRINT:user_perc:LAST:\ \ \ \ \ %5.2lf%%";
|
||||
$options .= " GPRINT:user_perc:AVERAGE:\ \ \ %5.2lf%%";
|
||||
$options .= " GPRINT:user_perc:MAX:\ \ \ %5.2lf%%\\\\n";
|
||||
$options .= " AREA:nice_perc#008f00:nice:STACK";
|
||||
$options .= " GPRINT:nice_perc:LAST:\ \ \ \ \ %5.2lf%%";
|
||||
$options .= " GPRINT:nice_perc:AVERAGE:\ \ \ %5.2lf%%";
|
||||
$options .= " GPRINT:nice_perc:MAX:\ \ \ %5.2lf%%\\\\n";
|
||||
$options .= " AREA:system_perc#ea8f00:system:STACK";
|
||||
$options .= " GPRINT:system_perc:LAST:\ \ \ %5.2lf%%";
|
||||
$options .= " GPRINT:system_perc:AVERAGE:\ \ \ %5.2lf%%";
|
||||
$options .= " GPRINT:system_perc:MAX:\ \ \ %5.2lf%%\\\\n";
|
||||
$options .= " AREA:idle_perc#f5f5e5:idle:STACK";
|
||||
$options .= " GPRINT:idle_perc:LAST:\ \ \ \ \ %5.2lf%%";
|
||||
$options .= " GPRINT:idle_perc:AVERAGE:\ \ \ %5.2lf%%";
|
||||
$options .= " GPRINT:idle_perc:MAX:\ \ \ %5.2lf%%\\\\n";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
function couriergraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
$period = $to - $from;
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height ";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$points_per_sample = 3;
|
||||
$range = $to - $from;
|
||||
$options .= " DEF:pop3d_login=$database:pop3:AVERAGE";
|
||||
$options .= " DEF:mpop3d_login=$database:pop3:MAX";
|
||||
$options .= " DEF:imapd_login=$database:imap:AVERAGE";
|
||||
$options .= " DEF:mimapd_login=$database:imap:MAX";
|
||||
$options .= " CDEF:rpop3d_login=pop3d_login,60,*";
|
||||
$options .= " CDEF:vpop3d_login=pop3d_login,UN,0,pop3d_login,IF,$range,*";
|
||||
$options .= " CDEF:rmpop3d_login=mpop3d_login,60,*";
|
||||
$options .= " CDEF:rimapd_login=imapd_login,60,*";
|
||||
$options .= " CDEF:vimapd_login=imapd_login,UN,0,imapd_login,IF,$range,*";
|
||||
$options .= " CDEF:rmimapd_login=mimapd_login,60,*";
|
||||
$options .= " DEF:pop3d_ssl_login=$database:pop3ssl:AVERAGE";
|
||||
$options .= " DEF:mpop3d_ssl_login=$database:pop3ssl:MAX";
|
||||
$options .= " DEF:imapd_ssl_login=$database:imapssl:AVERAGE";
|
||||
$options .= " DEF:mimapd_ssl_login=$database:imapssl:MAX";
|
||||
$options .= " CDEF:rpop3d_ssl_login=pop3d_ssl_login,60,*";
|
||||
$options .= " CDEF:vpop3d_ssl_login=pop3d_ssl_login,UN,0,pop3d_ssl_login,IF,$range,*";
|
||||
$options .= " CDEF:rmpop3d_ssl_login=mpop3d_ssl_login,60,*";
|
||||
$options .= " CDEF:rimapd_ssl_login=imapd_ssl_login,60,*";
|
||||
$options .= " CDEF:rmimapd_ssl_login=mimapd_ssl_login,60,*";
|
||||
$options .= " CDEF:vimapd_ssl_login=imapd_ssl_login,UN,0,imapd_ssl_login,IF,$range,*";
|
||||
$options .= " COMMENT:Logins\ \ \ \ \ \ \ \ \ Total\ \ \ \ Average\ \ \ \ Maximum\\\\n";
|
||||
$options .= " LINE1.25:rpop3d_login#BB0000:pop3";
|
||||
$options .= " GPRINT:vpop3d_login:AVERAGE:\ \ \ \ \ %6.0lf";
|
||||
$options .= " GPRINT:rpop3d_login:AVERAGE:%5.2lf/min";
|
||||
$options .= " GPRINT:rmpop3d_login:MAX:%5.2lf/min\\\\l";
|
||||
$options .= " LINE1.25:rimapd_login#009900:imap";
|
||||
$options .= " GPRINT:vimapd_login:AVERAGE:\ \ \ \ \ %6.0lf";
|
||||
$options .= " GPRINT:rimapd_login:AVERAGE:%5.2lf/min";
|
||||
$options .= " GPRINT:rmimapd_login:MAX:%5.2lf/min\\\\l";
|
||||
$options .= " LINE1.25:rpop3d_ssl_login#000000:pop3-ssl";
|
||||
$options .= " GPRINT:vpop3d_ssl_login:AVERAGE:\ %6.0lf";
|
||||
$options .= " GPRINT:rpop3d_ssl_login:AVERAGE:%5.2lf/min";
|
||||
$options .= " GPRINT:rmpop3d_ssl_login:MAX:%5.2lf/min\\\\l";
|
||||
$options .= " LINE1.25:rimapd_ssl_login#000099:imap-ssl";
|
||||
$options .= " GPRINT:vimapd_ssl_login:AVERAGE:\ %6.0lf";
|
||||
$options .= " GPRINT:rimapd_ssl_login:AVERAGE:%5.2lf/min";
|
||||
$options .= " GPRINT:rmimapd_ssl_login:MAX:%5.2lf/min\\\\l";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
function apachehitsgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height -l 0";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$options .= " DEF:hits=$database:hits:AVERAGE";
|
||||
$options .= " COMMENT:\ \ \ \ \ \ \ \ \ \ \ \ Current\ \ \ \ \ Average\ \ \ \ \ Maximum\\\\n";
|
||||
$options .= " AREA:hits#ff9933:";
|
||||
$options .= " LINE1.25:hits#FF6600:Hits";
|
||||
$options .= " GPRINT:hits:LAST:\ %6.2lf/sec";
|
||||
$options .= " GPRINT:hits:AVERAGE:%6.2lf/sec";
|
||||
$options .= " GPRINT:hits:MAX:%6.2lf/sec\\\\n";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
function unixfsgraph ($id, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height -b 1024 -l 0";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$hostname = gethostbyid($device);
|
||||
$iter = "1";
|
||||
$sql = mysql_query("SELECT * FROM storage where storage_id = '$id'");
|
||||
$options .= "COMMENT:\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Size\ \ \ \ \ \ Used\ \ \ \ %age\l";
|
||||
while($fs = mysql_fetch_array($sql)) {
|
||||
$hostname = gethostbyid($fs['device_id']);
|
||||
if($iter=="1") {$colour="CC0000";} elseif($iter=="2") {$colour="008C00";} elseif($iter=="3") {$colour="4096EE";
|
||||
} elseif($iter=="4") {$colour="73880A";} elseif($iter=="5") {$colour="D01F3C";} elseif($iter=="6") {$colour="36393D";
|
||||
} elseif($iter=="7") {$colour="FF0084"; $iter = "0"; }
|
||||
$descr = str_pad($fs[storage_descr], 14);
|
||||
$descr = substr($descr,0,14);
|
||||
$text = str_replace("/", "_", $fs['storage_descr']);
|
||||
$rrd = $config['rrd_dir'] . "/$hostname/storage-$text.rrd";
|
||||
$options .= " DEF:$fs[storage_id]=$rrd:used:AVERAGE";
|
||||
$options .= " DEF:$fs[storage_id]s=$rrd:size:AVERAGE";
|
||||
$options .= " DEF:$fs[storage_id]p=$rrd:perc:AVERAGE";
|
||||
$options .= " LINE1.25:$fs[storage_id]p#" . $colour . ":'$descr'";
|
||||
$options .= " GPRINT:$fs[storage_id]s:LAST:%6.2lf%SB";
|
||||
$options .= " GPRINT:$fs[storage_id]:LAST:%6.2lf%SB";
|
||||
$options .= " GPRINT:$fs[storage_id]p:LAST:%5.2lf%%\\\\l";
|
||||
$iter++;
|
||||
}
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
|
||||
|
||||
function apachebitsgraphUnix ($rrd, $graph, $from, $to, $width, $height, $title, $vertical) {
|
||||
global $config, $installdir;
|
||||
$database = $config['rrd_dir'] . "/" . $rrd;
|
||||
$options = "--alt-autoscale-max -E --start $from --end $to --width $width --height $height -l 0";
|
||||
if($width <= "300") { $options .= " --font LEGEND:7:".$config['mono_font']." --font AXIS:6:".$config['mono_font']." --font-render-mode normal "; }
|
||||
$options .= " DEF:bits=$database:bits:AVERAGE";
|
||||
$options .= " COMMENT:\ \ \ \ \ \ \ \ \ \ \ \ Current\ \ \ \ \ Average\ \ \ \ \ Maximum\\\\n";
|
||||
$options .= " AREA:bits#cccc00:";
|
||||
$options .= " LINE1.25:bits#9900:Bits";
|
||||
$options .= " GPRINT:bits:LAST:\ %6.2lf/sec";
|
||||
$options .= " GPRINT:bits:AVERAGE:%6.2lf/sec";
|
||||
$options .= " GPRINT:bits:MAX:%6.2lf/sec\\\\n";
|
||||
shell_exec($config['rrdtool'] . " graph $graph $options");
|
||||
return $graph;
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
<?php
|
||||
|
||||
$class = 'voltage';
|
||||
$class_text = "Voltage";
|
||||
$unit = 'V';
|
||||
|
||||
foreach (dbFetchRows("SELECT * FROM `sensors` WHERE `sensor_class` = ? AND `device_id` = ? AND `poller_type` = 'snmp'", array($class, $device['device_id'])) as $sensor)
|
||||
{
|
||||
echo("Checking ".$class." " . $sensor['sensor_descr'] . ": ");
|
||||
|
||||
$sensor_value = snmp_get($device, $sensor['sensor_oid'], "-OUqnv", "SNMPv2-MIB");
|
||||
|
||||
if ($sensor['sensor_divisor']) { $sensor_value = $sensor_value / $sensor['sensor_divisor']; }
|
||||
if ($sensor['sensor_multiplier']) { $sensor_value = $sensor_value * $sensor['sensor_multiplier']; }
|
||||
|
||||
$old_rrd_file = $config['rrd_dir'] . "/" . $device['hostname'] . "/$class-" . safename($sensor['sensor_type']."-".$sensor['sensor_index']) . ".rrd";
|
||||
$rrd_file = get_sensor_rrd($device, $sensor);
|
||||
|
||||
if (is_file($old_rrd_file)) { rename($old_rrd_file, $rrd_file); }
|
||||
|
||||
if (!is_file($rrd_file))
|
||||
{
|
||||
rrdtool_create($rrd_file,"--step 300 \
|
||||
DS:sensor:GAUGE:600:-273:1000 \
|
||||
RRA:AVERAGE:0.5:1:1200 \
|
||||
RRA:MIN:0.5:12:2400 \
|
||||
RRA:MAX:0.5:12:2400 \
|
||||
RRA:AVERAGE:0.5:12:2400");
|
||||
}
|
||||
|
||||
echo("$sensor_value $unit\n");
|
||||
|
||||
rrdtool_update($rrd_file,"N:$sensor_value");
|
||||
|
||||
if ($sensor['sensor_limit_low'] != "" && $sensor['sensor_current'] > $sensor['sensor_limit_low'] && $sensor_value <= $sensor['sensor_limit_low'])
|
||||
{
|
||||
$msg = $class_text . " Alarm: " . $device['hostname'] . " " . $sensor['sensor_descr'] . " is " . $sensor_value . "$unit (Limit " . $sensor['sensor_limit'];
|
||||
$msg .= "$unit) at " . date($config['timestamp_format']);
|
||||
notify($device, $class_text" Alarm: " . $device['hostname'] . " " . $sensor['sensor_descr'], $msg);
|
||||
echo("Alerting for " . $device['hostname'] . " " . $sensor['sensor_descr'] . "\n");
|
||||
log_event($class_text.' '.$sensor['sensor_descr'] . " under threshold: " . $sensor_value . " $unit (< " . $sensor['sensor_limit_low'] . " $unit)", $device, $class, $sensor['sensor_id']);
|
||||
}
|
||||
else if ($sensor['sensor_limit'] != "" && $sensor['sensor_current'] < $sensor['sensor_limit'] && $sensor_value >= $sensor['sensor_limit'])
|
||||
{
|
||||
$msg = $class_text." Alarm: " . $device['hostname'] . " " . $sensor['sensor_descr'] . " is " . $sensor_value . "$unit (Limit " . $sensor['sensor_limit'];
|
||||
$msg .= "$unit) at " . date($config['timestamp_format']);
|
||||
notify($device, $class_text." Alarm: " . $device['hostname'] . " " . $sensor['sensor_descr'], $msg);
|
||||
echo("Alerting for " . $device['hostname'] . " " . $sensor['sensor_descr'] . "\n");
|
||||
log_event($class_text." ". $sensor['sensor_descr'] . " above threshold: " . $sensor_value . " $unit (> " . $sensor['sensor_limit'] . " $unit)", $device, $class, $sensor['sensor_id']);
|
||||
}
|
||||
dbUpdate(array('sensor_current' => $sensor_value), 'sensors', '`sensor_id` = ', array($sensor['sensor_id']));
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,153 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage billing
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
#$debug=1;
|
||||
|
||||
chdir(dirname($argv[0]));
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
$options = getopt("r");
|
||||
|
||||
if (isset($options['r'])) { echo("Clearing history table.\n"); mysql_query("TRUNCATE TABLE `bill_history`"); }
|
||||
|
||||
foreach (dbFetchRows("SELECT * FROM `bills` ORDER BY `bill_id`") as $bill)
|
||||
{
|
||||
echo(str_pad($bill['bill_id']." ".$bill['bill_name'], 30)." \n");
|
||||
|
||||
$i=0;
|
||||
while ($i <= 24)
|
||||
{
|
||||
unset($class);
|
||||
unset($rate_data);
|
||||
$day_data = getDates($bill['bill_day'], $i);
|
||||
|
||||
$datefrom = $day_data['0'];
|
||||
$dateto = $day_data['1'];
|
||||
|
||||
$check = dbFetchRow("SELECT * FROM `bill_history` WHERE bill_id = ? AND bill_datefrom = ? AND bill_dateto = ? LIMIT 1", array($bill['bill_id'], $datefrom, $dateto));
|
||||
|
||||
$period = getPeriod($bill['bill_id'],$datefrom,$dateto);
|
||||
|
||||
$date_updated = str_replace("-", "", str_replace(":", "", str_replace(" ", "", $check['updated'])));
|
||||
|
||||
if ($period > 0 && $dateto > $date_updated)
|
||||
{
|
||||
$rate_data = getRates($bill['bill_id'],$datefrom,$dateto);
|
||||
$rate_95th = $rate_data['rate_95th'];
|
||||
$dir_95th = $rate_data['dir_95th'];
|
||||
$total_data = $rate_data['total_data'];
|
||||
$rate_average = $rate_data['rate_average'];
|
||||
|
||||
if ($bill['bill_type'] == "cdr")
|
||||
{
|
||||
$type = "CDR";
|
||||
$allowed = $bill['bill_cdr'];
|
||||
$used = $rate_data['rate_95th'];
|
||||
$allowed_text = format_si($allowed)."bps";
|
||||
$used_text = format_si($used)."bps";
|
||||
$overuse = $used - $allowed;
|
||||
$overuse = (($overuse <= 0) ? "0" : $overuse);
|
||||
$percent = round(($rate_data['rate_95th'] / $bill['bill_cdr']) * 100,2);
|
||||
} elseif ($bill['bill_type'] == "quota") {
|
||||
$type = "Quota";
|
||||
$allowed = $bill['bill_quota'];
|
||||
$used = $rate_data['total_data'];
|
||||
$allowed_text = format_bytes_billing($allowed);
|
||||
$used_text = format_bytes_billing($used);
|
||||
$overuse = $used - $allowed;
|
||||
$overuse = (($overuse <= 0) ? "0" : $overuse);
|
||||
$percent = round(($rate_data['total_data'] / $bill['bill_quota']) * 100,2);
|
||||
}
|
||||
|
||||
echo(strftime("%x @ %X", strtotime($datefrom))." to ".strftime("%x @ %X", strtotime($dateto))." ".str_pad($type,8)." ".str_pad($allowed_text,10)." ".str_pad($used_text,10)." ".$percent."%");
|
||||
|
||||
if ($i == '0')
|
||||
{
|
||||
$update = array('rate_95th' => $rate_data['rate_95th'],
|
||||
'rate_95th_in' => $rate_data['rate_95th_in'],
|
||||
'rate_95th_out' => $rate_data['rate_95th_out'],
|
||||
'dir_95th' => $rate_data['dir_95th'],
|
||||
'total_data' => $rate_data['total_data'],
|
||||
'total_data_in' => $rate_data['total_data_in'],
|
||||
'total_data_out' => $rate_data['total_data_out'],
|
||||
'rate_average' => $rate_data['rate_average'],
|
||||
'rate_average_in' => $rate_data['rate_average_in'],
|
||||
'rate_average_out' => $rate_data['rate_average_out'],
|
||||
'bill_last_calc' => array('NOW()') );
|
||||
|
||||
dbUpdate($update, 'bills', '`bill_id` = ?', array($bill['bill_id']));
|
||||
echo(" Updated! ");
|
||||
}
|
||||
|
||||
if ($check['bill_id'] == $bill['bill_id'])
|
||||
{
|
||||
$update = array('rate_95th' => $rate_data['rate_95th'],
|
||||
'rate_95th_in' => $rate_data['rate_95th_in'],
|
||||
'rate_95th_out' => $rate_data['rate_95th_out'],
|
||||
'dir_95th' => $rate_data['dir_95th'],
|
||||
'rate_average' => $rate_data['rate_average'],
|
||||
'rate_average_in' => $rate_data['rate_average_in'],
|
||||
'rate_average_out' => $rate_data['rate_average_out'],
|
||||
'traf_total' => $rate_data['total_data'],
|
||||
'traf_in' => $rate_data['total_data_in'],
|
||||
'traf_out' => $rate_data['total_data_out'],
|
||||
'bill_used' => $used,
|
||||
'bill_overuse' => $overuse,
|
||||
'bill_percent' => $percent,
|
||||
'updated' => array('NOW()'));
|
||||
|
||||
dbUpdate($update, 'bill_history', '`bill_hist_id` = ?', array($check['bill_hist_id']));
|
||||
echo(" Updated history! ");
|
||||
} else {
|
||||
$update = array('rate_95th' => $rate_data['rate_95th'],
|
||||
'rate_95th_in' => $rate_data['rate_95th_in'],
|
||||
'rate_95th_out' => $rate_data['rate_95th_out'],
|
||||
'dir_95th' => $rate_data['dir_95th'],
|
||||
'rate_average' => $rate_data['rate_average'],
|
||||
'rate_average_in' => $rate_data['rate_average_in'],
|
||||
'rate_average_out' => $rate_data['rate_average_out'],
|
||||
'traf_total' => $rate_data['total_data'],
|
||||
'traf_in' => $rate_data['total_data_in'],
|
||||
'traf_out' => $rate_data['total_data_out'],
|
||||
'bill_datefrom' => $datefrom,
|
||||
'bill_dateto' => $dateto,
|
||||
'bill_type' => $type,
|
||||
'bill_allowed' => $allowed,
|
||||
'bill_used' => $used,
|
||||
'bill_overuse' => $overuse,
|
||||
'bill_percent' => $percent,
|
||||
'bill_datefrom' => $datefrom,
|
||||
'bill_dateto' => $dateto,
|
||||
'bill_id' => $bill['bill_id'] );
|
||||
dbInsert($update, 'bill_history');
|
||||
echo(" Generated history! ");
|
||||
}
|
||||
echo("\n\n");
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,66 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage alerts
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
chdir(dirname($argv[0]));
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
include("html/includes/functions.inc.php");
|
||||
|
||||
## Check all of our interface RRD files for errors
|
||||
|
||||
if ($argv[1]) { $where = "AND `interface_id` = ?"; $params = array($argv[1]); }
|
||||
|
||||
$i = 0;
|
||||
$errored = 0;
|
||||
|
||||
foreach (dbFetchRows("SELECT * FROM `ports` AS I, `devices` AS D WHERE I.device_id = D.device_id $where", $params) as $interface)
|
||||
{
|
||||
$errors = $interface['ifInErrors_delta'] + $interface['ifOutErrors_delta'];
|
||||
if ($errors > '1')
|
||||
{
|
||||
$errored[] = generate_device_link($interface, $interface['hostname'] . " - " . $interface['ifDescr'] . " - " . $interface['ifAlias'] . " - " . $interface['ifInErrors_delta'] . " - " . $interface['ifOutErrors_delta']);
|
||||
$errored++;
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
echo("Checked $i interfaces\n");
|
||||
|
||||
if (is_array($errored))
|
||||
{ ## If there are errored ports
|
||||
$i = 0;
|
||||
$msg = "Interfaces with errors : \n\n";
|
||||
|
||||
foreach ($errored as $int)
|
||||
{
|
||||
$msg .= "$int\n"; ## Add a line to the report email warning about them
|
||||
$i++;
|
||||
}
|
||||
## Send the alert email
|
||||
notify($device, "Observium detected errors on $i interface" . ($i != 1 ? 's' : ''), $msg);
|
||||
}
|
||||
|
||||
echo("$errored interfaces with errors over the past 5 minutes.\n");
|
||||
|
||||
?>
|
||||
@@ -1,94 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage poller
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
chdir(dirname($argv[0]));
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
foreach (dbFetchRows("SELECT * FROM `devices` AS D, `services` AS S WHERE S.device_id = D.device_id ORDER by D.device_id DESC") as $service)
|
||||
{
|
||||
if ($service['status'] = "1")
|
||||
{
|
||||
unset($check, $service_status, $time, $status);
|
||||
$service_status = $service['service_status'];
|
||||
$service_type = strtolower($service['service_type']);
|
||||
$service_param = $service['service_param'];
|
||||
$checker_script = $config['install_dir'] . "/includes/services/" . $service_type . "/check.inc";
|
||||
|
||||
if (is_file($checker_script))
|
||||
{
|
||||
include($checker_script);
|
||||
}
|
||||
else
|
||||
{
|
||||
$status = "2";
|
||||
$check = "Error : Script not found ($checker_script)";
|
||||
}
|
||||
|
||||
$update = array();
|
||||
|
||||
if ($service_status != $status)
|
||||
{
|
||||
$update['service_changed'] = time();
|
||||
|
||||
if ($service['sysContact']) { $email = $service['sysContact']; } else { $email = $config['email_default']; }
|
||||
if ($status == "1")
|
||||
{
|
||||
$msg = "Service Up: " . $service['service_type'] . " on " . $service['hostname'];
|
||||
$msg .= " at " . date($config['timestamp_format']);
|
||||
notify($device, "Service Up: " . $service['service_type'] . " on " . $service['hostname'], $msg);
|
||||
}
|
||||
elseif ($status == "0")
|
||||
{
|
||||
$msg = "Service Down: " . $service['service_type'] . " on " . $service['hostname'];
|
||||
$msg .= " at " . date($config['timestamp_format']);
|
||||
notify($device, "Service Down: " . $service['service_type'] . " on " . $service['hostname'], $msg);
|
||||
}
|
||||
} else { unset($updated); }
|
||||
|
||||
$update = array_merge(array('service_status' => $status, 'service_message' => $check, 'service_checked' => time()), $update);
|
||||
dbUpdate($update, 'services', '`service_id` = ?', array($service['service_id']));
|
||||
unset($update);
|
||||
|
||||
} else {
|
||||
$status = "0";
|
||||
}
|
||||
|
||||
$rrd = $config['rrd_dir'] . "/" . $service['hostname'] . "/" . safename("service-" . $service['service_type'] . "-" . $service['service_id'] . ".rrd");
|
||||
|
||||
if (!is_file($rrd))
|
||||
{
|
||||
rrdtool_create($rrd,"--step 300 \
|
||||
DS:status:GAUGE:600:0:1 \
|
||||
RRA:AVERAGE:0.5:1:1200 \
|
||||
RRA:AVERAGE:0.5:12:2400");
|
||||
}
|
||||
|
||||
if ($status == "1" || $status == "0")
|
||||
{
|
||||
rrdtool_update($rrd,"N:".$status);
|
||||
}
|
||||
} # while
|
||||
|
||||
?>
|
||||
@@ -1,46 +0,0 @@
|
||||
<?php
|
||||
|
||||
## Have a look in defaults.inc.php for examples of settings you can set here. DO NOT EDIT defaults.inc.php!
|
||||
|
||||
### Database config
|
||||
$config['db_host'] = "localhost";
|
||||
$config['db_user'] = "USERNAME";
|
||||
$config['db_pass'] = "PASSWORD";
|
||||
$config['db_name'] = "observium";
|
||||
|
||||
### Memcached config - We use this to store realtime usage
|
||||
$config['memcached']['enable'] = FALSE;
|
||||
$config['memcached']['host'] = "localhost";
|
||||
$config['memcached']['port'] = 11211;
|
||||
|
||||
### Locations
|
||||
$config['install_dir'] = "/opt/observium";
|
||||
$config['html_dir'] = $config['install_dir'] . "/html";
|
||||
$config['rrd_dir'] = $config['install_dir'] . "/rrd";
|
||||
$config['log_file'] = $config['install_dir'] . "/observium.log";
|
||||
|
||||
### Thie should *only* be set if you want to *force* a particular hostname/port
|
||||
### It will prevent the web interface being usable form any other hostname
|
||||
#$config['base_url'] = "http://observium.company.com";
|
||||
|
||||
### Enable the below to use rrdcached. be sure rrd_dir is within the rrdcached dir
|
||||
### and that your web server has permission to talk to rrdcached.
|
||||
#$config['rrdcached'] = "unix:/var/run/rrdcached.sock";
|
||||
|
||||
### Default community
|
||||
$config['snmp']['community'] = array("public");
|
||||
|
||||
### Authentication Model
|
||||
$config['auth_mechanism'] = "mysql"; # default, other options: ldap, http-auth
|
||||
#$config['http_auth_guest'] = "guest"; # remember to configure this user if you use http-auth
|
||||
|
||||
### List of networks to allow scanning-based discovery
|
||||
$config['nets'][] = "172.22.0.0/16";
|
||||
$config['nets'][] = "192.168.0.0/24";
|
||||
|
||||
### Use the new Unix Agent (ALPHA)
|
||||
$config['poller_modules']['unix-agent'] = 0;
|
||||
|
||||
include("includes/static-config.php");
|
||||
|
||||
?>
|
||||
@@ -1,68 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
include("../includes/defaults.inc.php");
|
||||
include("../config.php");
|
||||
include("../includes/functions.php");
|
||||
|
||||
$link = mysql_connect($config['db_host'], $config['db_user'], $config['db_pass']);
|
||||
$db = mysql_select_db($config['db_name'], $link);
|
||||
|
||||
|
||||
$query = "SELECT * FROM ipv4_addresses AS A, ports as I, devices as D WHERE A.interface_id = I.interface_id AND I.device_id = D.device_id AND D.os = 'ios'";
|
||||
$data = mysql_query($query, $link);
|
||||
while($ip = mysql_fetch_array($data)) {
|
||||
unset($sub);
|
||||
$hostname = $ip['hostname'];
|
||||
|
||||
$real_hostname = $hostname;
|
||||
|
||||
$hostname = str_replace(".jerseytelecom.net", "", $hostname);
|
||||
|
||||
list($cc, $loc, $host) = explode(".", $hostname);
|
||||
if($host) {
|
||||
$hostname = "$host.$loc.$cc.v4.data.net.uk";
|
||||
} else {
|
||||
$host = $cc; unset ($cc);
|
||||
$hostname = "$host.v4.data.net.uk";
|
||||
}
|
||||
|
||||
$interface = $ip['ifDescr'];
|
||||
$address = $ip['ipv4_address'];
|
||||
$cidr = $ip['ipv4_prefixlen'];
|
||||
$interface = strtolower(makeshortif(fixifname($interface)));
|
||||
$interface = str_replace("/", "-", $interface);
|
||||
$interface = str_replace(":", "_", $interface);
|
||||
list($interface, $sub) = explode(".", $interface);
|
||||
if($sub) {
|
||||
$sub = str_replace(" ", "", $sub);
|
||||
$sub = str_replace("aal5", "", $sub);
|
||||
$interface = "$sub.$interface";
|
||||
}
|
||||
$hostip = trim(gethostbyname($real_hostname));
|
||||
|
||||
list($first, $second, $third, $fourth) = explode(".", $address);
|
||||
$revzone = "$third.$second.$first.in-addr.arpa";
|
||||
$reverse = "$fourth.$revzone";
|
||||
$dnsname = "$interface.$hostname";
|
||||
|
||||
$dns_list[] = str_pad($revzone, 24) . "|" . str_pad($reverse, 30)."IN ADDR ".str_pad($dnsname, 30);
|
||||
|
||||
}
|
||||
|
||||
sort ($dns_list);
|
||||
|
||||
foreach ($dns_list as $entry) {
|
||||
list($zone, $entry) = explode("|", $entry);
|
||||
$zone = trim($zone);
|
||||
|
||||
if($zone != $oldzone) { echo("\n$$zone\n------------------------------\n"); }
|
||||
|
||||
echo("$entry \n");
|
||||
|
||||
$oldzone = $zone;
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -1,157 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
|
||||
$dnsdblink = mysql_connect('localhost', 'user', 'pass');
|
||||
$dnsdb = mysql_select_db('tinydns', $dnsdblink);
|
||||
|
||||
$link = mysql_connect($config['db_host'], $config['db_user'], $config['db_pass']);
|
||||
$db = mysql_select_db($config['db_name'], $link);
|
||||
|
||||
|
||||
$query = "SELECT * FROM ipaddr AS A, ports as I, devices as D WHERE A.interface_id = I.interface_id AND I.device_id = D.device_id AND D.hostname LIKE '%.vostron.net' AND D.hostname NOT LIKE '%.cust.%' AND D.os = 'ios'";
|
||||
$data = mysql_query($query, $link);
|
||||
while($ip = mysql_fetch_array($data)) {
|
||||
unset($sub);
|
||||
$hostname = $ip['hostname'];
|
||||
|
||||
$real_hostname = $hostname;
|
||||
|
||||
$hostname = str_replace(".vostron.net", "", $hostname);
|
||||
list($loc, $host) = explode("-", $hostname);
|
||||
if($host) {
|
||||
$hostname = "$host.$loc.v4.vostron.net";
|
||||
} else {
|
||||
$host = $loc; unset ($loc);
|
||||
$hostname = "$host.v4.vostron.net";
|
||||
}
|
||||
|
||||
$interface = $ip['ifDescr'];
|
||||
$address = $ip['addr'];
|
||||
$cidr = $ip['cidr'];
|
||||
$interface = strtolower(makeshortif(fixifname($interface)));
|
||||
$interface = str_replace("/", "-", $interface);
|
||||
list($interface, $sub) = explode(".", $interface);
|
||||
if($sub) {
|
||||
$sub = str_replace(" ", "", $sub);
|
||||
$sub = str_replace("aal5", "", $sub);
|
||||
$interface = "$sub.$interface";
|
||||
}
|
||||
$hostip = trim(gethostbyname($real_hostname));
|
||||
if(strstr($hostname, ".vostron.net")) {
|
||||
list($first, $second, $third, $fourth) = explode(".", $address);
|
||||
$revzone = "$third.$second.$first.in-addr.arpa";
|
||||
$reverse = "$fourth.$revzone";
|
||||
$dnsname = "$interface.$hostname";
|
||||
$rev_sql = "SELECT `domain_id` FROM `domains` WHERE domain = '" . $revzone . "'";
|
||||
$rev_domain_id = @mysql_result(mysql_query($rev_sql, $dnsdblink),0);
|
||||
|
||||
|
||||
$rows_exist = mysql_result(mysql_query("SELECT COUNT(record_id) FROM `records` WHERE `host` = '$reverse'", $dnsdblink),0);
|
||||
|
||||
if($rows_exist > '1') { $rows_exist = 1; echo("DELETE FROM `records` WHERE `host` = '$reverse' LIMIT $rows_exist;\n"); }
|
||||
|
||||
if($address == $hostip) {
|
||||
if($rows_exist < '1') {
|
||||
$reverse_query = "INSERT INTO `records` (`host`, `ttl`, `type`, `val`, `domain_id`) ";
|
||||
$reverse_query .= "VALUES ('$reverse','38400','P','$real_hostname','$rev_domain_id')";
|
||||
} else {
|
||||
$reverse_query = "UPDATE `records` SET `val` = '$real_hostname' WHERE `host` = '".$reverse.".'";
|
||||
}
|
||||
} else {
|
||||
if($rows_exist < '1') {
|
||||
$reverse_query = "INSERT INTO `records` (`host`, `ttl`, `type`, `val`, `domain_id`) ";
|
||||
$reverse_query .= "VALUES ('$reverse','38400','P','$dnsname','$rev_domain_id')";
|
||||
} else {
|
||||
$reverse_query = "UPDATE `records` SET `val` = '".$dnsname.".' WHERE `host` = '".$reverse."'";
|
||||
}
|
||||
}
|
||||
|
||||
if($rev_domain_id) {
|
||||
echo("$reverse_query; \n");
|
||||
#mysql_query($reverse_query, $dnsdblink);
|
||||
} else {
|
||||
#echo("$hostname - $interface - $reverse FAILED\n");
|
||||
}
|
||||
|
||||
$i = 1;
|
||||
unset($exist);
|
||||
while ($i <= count($zoneupdated)) {
|
||||
$thiszone = "$revzone";
|
||||
if ($zoneupdated[$i] == $thiszone) { $exist = "yes"; }
|
||||
$i++;
|
||||
}
|
||||
if(!$exist) { $zoneupdated[] = "$revzone"; }
|
||||
|
||||
unset ($forward_query);
|
||||
|
||||
if($address != $hostip) {
|
||||
|
||||
$rows_exist = mysql_result(mysql_query("SELECT COUNT(record_id) FROM `records` WHERE `host` = '$dnsname'", $dnsdblink),0);
|
||||
if($rows_exist > '1') { $rows_exist--; echo("DELETE FROM `records` WHERE `host` = '$hostname' LIMIT $rows_exist;\n"); }
|
||||
|
||||
if($rows_exist < '1') {
|
||||
$forward_query = "INSERT INTO `records` (`host`, `ttl`, `type`, `val`, `domain_id`) ";
|
||||
$forward_query .= "VALUES ('$dnsname','38400','A','$address','381')";
|
||||
} elseif ($address != $hostip) {
|
||||
$forward_query = "UPDATE `records` SET `val` = '$address' WHERE `host` = '$dnsname'";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if($forward_query && $rev_domain_id) {
|
||||
echo("$forward_query; \n");
|
||||
}
|
||||
|
||||
|
||||
mysql_query($forward_query, $dnsdblink);
|
||||
# $i = 1;
|
||||
# unset($exist)
|
||||
# while ($i <= count($linkdone)) {
|
||||
# $thiszone = "$";
|
||||
# if ($zoneupdated[$i] == $thiszone) { $exist = "yes"; }
|
||||
# $i++;
|
||||
# }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
while ($i < count($zoneupdated)) {
|
||||
|
||||
# $sSQL = "update zones set name = '" . $name . "', ttl = " . $ttl . ", rdtype =
|
||||
# '" . $rdtype1 . "', rdata = '" . $rdata . "' where zoneid = " . $id;
|
||||
# $result = mysql_query($sSQL, $dnsdblink);
|
||||
|
||||
$domain = $zoneupdated[$i];
|
||||
|
||||
$sSQL = "select rdata, zoneid from zones where domain_name = '" . $domain . "' and rdtype = 'SOA'";
|
||||
# $result = mysql_query($sSQL, $dnsdblink);
|
||||
# $row = mysql_fetch_array($result);
|
||||
$soa = explode(" ", $row[0]);
|
||||
$year = substr($soa[2],0,4);
|
||||
$month = substr($soa[2],4,2);
|
||||
$day = substr($soa[2],6,2);
|
||||
$serial = substr($soa[2],8,2);
|
||||
$thisday = date("d",time());
|
||||
$thismonth = date("m",time());
|
||||
$thisyear = date("Y", time());
|
||||
if($day == $thisday && $month == $thismonth && $year = $thisyear) {
|
||||
$serial++;
|
||||
}
|
||||
else {
|
||||
$serial = "01";
|
||||
}
|
||||
$date = $thisyear . $thismonth . $thisday . sprintf("%02s",$serial);
|
||||
$rdata = $soa[0] . " " . $soa[1] . " " . $date . " " . $soa[3] . " " . $soa[4] . " " . $soa[5] . " " . $soa[6];
|
||||
$sSQL = "update zones set rdata = '" . $rdata . "' where zoneid = " . $row[1];
|
||||
# echo("$sSQL\n");
|
||||
# $result = mysql_query($sSQL, $dnsdblink);
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,46 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage cli
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
chdir(dirname($argv[0]));
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
# Remove a host and all related data from the system
|
||||
|
||||
if ($argv[1])
|
||||
{
|
||||
$host = strtolower($argv[1]);
|
||||
$id = getidbyname($host);
|
||||
if ($id)
|
||||
{
|
||||
echo(delete_device($id));
|
||||
echo("Removed $host\n");
|
||||
} else {
|
||||
echo("Host doesn't exist!\n");
|
||||
}
|
||||
} else {
|
||||
echo("Host Removal Tool\nUsage: ./delhost.php <hostname>\n");
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,140 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage discovery
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
chdir(dirname($argv[0]));
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
include("includes/discovery/functions.inc.php");
|
||||
|
||||
$start = utime();
|
||||
$runtime_stats = array();
|
||||
|
||||
### Observium Device Discovery
|
||||
|
||||
$options = getopt("h:m:i:n:d::a::q");
|
||||
|
||||
if (!isset($options['q']))
|
||||
{
|
||||
echo("Observium v".$config['version']." Discovery\n\n");
|
||||
}
|
||||
|
||||
if (isset($options['h']))
|
||||
{
|
||||
if ($options['h'] == "odd") { $options['n'] = "1"; $options['i'] = "2"; }
|
||||
elseif ($options['h'] == "even") { $options['n'] = "0"; $options['i'] = "2"; }
|
||||
elseif ($options['h'] == "all") { $where = " "; $doing = "all"; }
|
||||
elseif ($options['h'] == "new") { $where = "AND `last_discovered` IS NULL"; $doing = "new"; }
|
||||
elseif ($options['h'])
|
||||
{
|
||||
if (is_numeric($options['h']))
|
||||
{
|
||||
$where = "AND `device_id` = '".$options['h']."'";
|
||||
$doing = $options['h'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$where = "AND `hostname` LIKE '".str_replace('*','%',mres($options['h']))."'";
|
||||
$doing = $options['h'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($options['i']) && $options['i'] && isset($options['n']))
|
||||
{
|
||||
$where = "AND MOD(device_id,".$options['i'].") = '" . $options['n'] . "'";
|
||||
$doing = $options['n'] ."/".$options['i'];
|
||||
}
|
||||
|
||||
if (isset($options['d']))
|
||||
{
|
||||
echo("DEBUG!\n");
|
||||
$debug = TRUE;
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
ini_set('log_errors', 1);
|
||||
ini_set('error_reporting', 1);
|
||||
} else {
|
||||
$debug = FALSE;
|
||||
# ini_set('display_errors', 0);
|
||||
ini_set('display_startup_errors', 0);
|
||||
ini_set('log_errors', 0);
|
||||
# ini_set('error_reporting', 0);
|
||||
}
|
||||
|
||||
if (!$where)
|
||||
{
|
||||
echo("-h <device id> | <device hostname wildcard> Poll single device\n");
|
||||
echo("-h odd Poll odd numbered devices (same as -i 2 -n 0)\n");
|
||||
echo("-h even Poll even numbered devices (same as -i 2 -n 1)\n");
|
||||
echo("-h all Poll all devices\n");
|
||||
echo("-h new Poll all devices that have not had a discovery run before\n\n");
|
||||
echo("-i <instances> -n <number> Poll as instance <number> of <instances>\n");
|
||||
echo(" Instances start at 0. 0-3 for -n 4\n\n");
|
||||
echo("\n");
|
||||
echo("Debugging and testing options:\n");
|
||||
echo("-d Enable debugging output\n");
|
||||
echo("-m Specify single module to be run\n");
|
||||
echo("\n");
|
||||
echo("Invalid arguments!\n");
|
||||
exit;
|
||||
}
|
||||
|
||||
include("includes/sql-schema/update.php");
|
||||
|
||||
$discovered_devices = 0;
|
||||
|
||||
foreach (dbFetch("SELECT * FROM `devices` WHERE status = 1 AND disabled = 0 $where ORDER BY device_id DESC") as $device)
|
||||
{
|
||||
discover_device($device, $options);
|
||||
}
|
||||
|
||||
$end = utime(); $run = $end - $start;
|
||||
$proctime = substr($run, 0, 5);
|
||||
|
||||
if ($discovered_devices)
|
||||
{
|
||||
dbInsert(array('type' => 'discover', 'doing' => $doing, 'start' => $start, 'duration' => $proctime, 'devices' => $discovered_devices), 'perf_times');
|
||||
}
|
||||
|
||||
$string = $argv[0] . " $doing " . date("F j, Y, G:i") . " - $discovered_devices devices discovered in $proctime secs";
|
||||
if ($debug) echo("$string\n");
|
||||
|
||||
if($options['h'] != "new" && $config['version_check']) {
|
||||
include("includes/versioncheck.inc.php");
|
||||
}
|
||||
|
||||
if(!isset($options['q'])) {
|
||||
echo('MySQL: Cell['.($db_stats['fetchcell']+0).'/'.round($db_stats['fetchcell_sec']+0,2).'s]'.
|
||||
' Row['.($db_stats['fetchrow']+0). '/'.round($db_stats['fetchrow_sec']+0,2).'s]'.
|
||||
' Rows['.($db_stats['fetchrows']+0).'/'.round($db_stats['fetchrows_sec']+0,2).'s]'.
|
||||
' Column['.($db_stats['fetchcol']+0). '/'.round($db_stats['fetchcol_sec']+0,2).'s]'.
|
||||
' Update['.($db_stats['update']+0).'/'.round($db_stats['update_sec']+0,2).'s]'.
|
||||
' Insert['.($db_stats['insert']+0). '/'.round($db_stats['insert_sec']+0,2).'s]'.
|
||||
' Delete['.($db_stats['delete']+0). '/'.round($db_stats['delete_sec']+0,2).'s]');
|
||||
echo("\n");
|
||||
}
|
||||
|
||||
logfile($string);
|
||||
|
||||
?>
|
||||
@@ -1,55 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Observium Network Management and Monitoring System
|
||||
* Copyright (C) 2006-2011, Observium Developers - http://www.observium.org
|
||||
*
|
||||
* 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 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* See COPYING for more details.
|
||||
*
|
||||
* @package observium
|
||||
* @subpackage cli
|
||||
* @author Adam Armstrong <[email protected]>
|
||||
* @copyright (C) 2006 - 2012 Adam Armstrong
|
||||
* @license http://gnu.org/copyleft/gpl.html GNU GPL
|
||||
*
|
||||
*/
|
||||
|
||||
include("includes/defaults.inc.php");
|
||||
include("config.php");
|
||||
include("includes/functions.php");
|
||||
|
||||
$handle = fopen("ips.txt", "w");
|
||||
|
||||
foreach (dbFetchRows("SELECT * FROM `ipv4_networks`"))
|
||||
{
|
||||
$cidr = $data['ipv4_network'];
|
||||
list ($network, $bits) = explode("/", $cidr);
|
||||
if ($bits != '32' && $bits != '32' && $bits > '22')
|
||||
{
|
||||
$addr = Net_IPv4::parseAddress($cidr);
|
||||
$broadcast = $addr->broadcast;
|
||||
$ip = ip2long($network) + '1';
|
||||
$end = ip2long($broadcast);
|
||||
while ($ip < $end)
|
||||
{
|
||||
$ipdotted = long2ip($ip);
|
||||
if (dbFetchCell("SELECT COUNT(ipv4_address_id) FROM `ipv4_addresses` WHERE `ipv4_address` = ?", array($ipdotted)) == '0' && match_network($config['nets'], $ipdotted))
|
||||
{
|
||||
fputs($handle, $ipdotted . "\n");
|
||||
}
|
||||
$ip++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fclose($handle);
|
||||
|
||||
shell_exec("fping -t 100 -f ips.txt > ips-scanned.txt");
|
||||
|
||||
?>
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
./map.php > map.dot && unflatten -l5 -f map.dot | fdp -Tpng -o html/network-big.png && convert -resize 400x500 html/network-big.png html/network.png
|
||||
./map.php > map.dot && unflatten -l5 -f map.dot | dot -Tpng -o html/network-screen-big.png && convert -resize 900x2000 html/network-screen-big.png html/network-screen.png
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
# DO NOT CHANGE THIS FILE
|
||||
# If you need to change this file, you are doing something wrong.
|
||||
|
||||
Options FollowSymlinks Multiviews
|
||||
|
||||
RewriteEngine on
|
||||
RewriteBase /
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_URI} !\.(js|ico|txt|gif|jpg|png|css|php)
|
||||
RewriteRule ^(.*)$ index.php/$1/
|
||||
|
||||
AcceptPathInfo On
|
||||
@@ -1,33 +0,0 @@
|
||||
<?php
|
||||
|
||||
if ($_GET['debug'])
|
||||
{
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 0);
|
||||
ini_set('log_errors', 0);
|
||||
ini_set('allow_url_fopen', 0);
|
||||
ini_set('error_reporting', E_ALL);
|
||||
}
|
||||
|
||||
include_once("../includes/defaults.inc.php");
|
||||
include_once("../config.php");
|
||||
include_once("includes/functions.inc.php");
|
||||
include_once("../includes/dbFacile.php");
|
||||
include_once("../includes/common.php");
|
||||
|
||||
include_once("../includes/rewrites.php");
|
||||
include_once("includes/authenticate.inc.php");
|
||||
|
||||
if (!$_SESSION['authenticated']) { echo("unauthenticated"); exit; }
|
||||
|
||||
if (is_numeric($_GET['device_id']))
|
||||
{
|
||||
foreach (dbFetch("SELECT * FROM ports WHERE device_id = ?", array($_GET['device_id'])) as $interface)
|
||||
{
|
||||
$string = mres($interface['ifDescr']." - ".$interface['ifAlias']);
|
||||
echo("obj.options[obj.options.length] = new Option('".$string."','".$interface['interface_id']."');\n");
|
||||
#echo("obj.options[obj.options.length] = new Option('".$interface['ifDescr']." - ".$interface['ifAlias']."','".$interface['interface_id']."');\n");
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,257 +0,0 @@
|
||||
<?php
|
||||
|
||||
ini_set('allow_url_fopen', 0);
|
||||
ini_set('display_errors', 0);
|
||||
|
||||
if (strpos($_SERVER['REQUEST_URI'], "debug"))
|
||||
{
|
||||
$debug = "1";
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
ini_set('log_errors', 1);
|
||||
ini_set('error_reporting', E_ALL);
|
||||
} else {
|
||||
$debug = FALSE;
|
||||
ini_set('display_errors', 0);
|
||||
ini_set('display_startup_errors', 0);
|
||||
ini_set('log_errors', 0);
|
||||
ini_set('error_reporting', 0);
|
||||
}
|
||||
|
||||
include("../includes/defaults.inc.php");
|
||||
include("../config.php");
|
||||
include("../includes/functions.php");
|
||||
include("includes/functions.inc.php");
|
||||
include("includes/authenticate.inc.php");
|
||||
|
||||
if ($_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR']) { if (!$_SESSION['authenticated']) { echo("unauthenticated"); exit; } }
|
||||
require_once("includes/jpgraph/src/jpgraph.php");
|
||||
require_once("includes/jpgraph/src/jpgraph_line.php");
|
||||
require_once("includes/jpgraph/src/jpgraph_bar.php");
|
||||
require_once("includes/jpgraph/src/jpgraph_utils.inc.php");
|
||||
require_once("includes/jpgraph/src/jpgraph_date.php");
|
||||
|
||||
if (is_numeric($_GET['bill_id']))
|
||||
{
|
||||
if ($_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR'])
|
||||
{
|
||||
if (bill_permitted($_GET['bill_id']))
|
||||
{
|
||||
$bill_id = $_GET['bill_id'];
|
||||
} else {
|
||||
echo("Unauthorised Access Prohibited.");
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
$bill_id = $_GET['bill_id'];
|
||||
}
|
||||
} else {
|
||||
echo("Unauthorised Access Prohibited.");
|
||||
exit;
|
||||
}
|
||||
|
||||
$start = $_GET['from'];
|
||||
$end = $_GET['to'];
|
||||
$xsize = (is_numeric($_GET['x']) ? $_GET['x'] : "800" );
|
||||
$ysize = (is_numeric($_GET['y']) ? $_GET['y'] : "250" );
|
||||
//$count = (is_numeric($_GET['count']) ? $_GET['count'] : "0" );
|
||||
//$type = (isset($_GET['type']) ? $_GET['type'] : "date" );
|
||||
//$dur = $end - $start;
|
||||
//$datefrom = date('Ymthis', $start);
|
||||
//$dateto = date('Ymthis', $end);
|
||||
$imgtype = (isset($_GET['type']) ? $_GET['type'] : "historical" );
|
||||
$imgbill = (isset($_GET['imgbill']) ? $_GET['imgbill'] : false);
|
||||
$yaxistitle = "Bytes";
|
||||
|
||||
$in_data = array();
|
||||
$out_data = array();
|
||||
$tot_data = array();
|
||||
$allow_data = array();
|
||||
$ave_data = array();
|
||||
$overuse_data = array();
|
||||
$ticklabels = array();
|
||||
|
||||
if ($imgtype == "historical")
|
||||
{
|
||||
$i = "0";
|
||||
|
||||
foreach (dbFetchRows("SELECT * FROM `bill_history` WHERE `bill_id` = ? ORDER BY `bill_datefrom` DESC LIMIT 12", array($bill_id)) as $data)
|
||||
{
|
||||
$datefrom = strftime("%e %b %Y", strtotime($data['bill_datefrom']));
|
||||
$dateto = strftime("%e %b %Y", strtotime($data['bill_dateto']));
|
||||
$datelabel = $datefrom."\n".$dateto;
|
||||
$traf['in'] = $data['traf_in'];
|
||||
$traf['out'] = $data['traf_out'];
|
||||
$traf['total'] = $data['traf_total'];
|
||||
|
||||
if ($data['bill_type'] == "Quota")
|
||||
{
|
||||
$traf['allowed'] = $data['bill_allowed'];
|
||||
$traf['overuse'] = $data['bill_overuse'];
|
||||
} else {
|
||||
$traf['allowed'] = "0";
|
||||
$traf['overuse'] = "0";
|
||||
}
|
||||
|
||||
array_push($ticklabels, $datelabel);
|
||||
array_push($in_data, $traf['in']);
|
||||
array_push($out_data, $traf['out']);
|
||||
array_push($tot_data, $traf['total']);
|
||||
array_push($allow_data, $traf['allowed']);
|
||||
array_push($overuse_data, $traf['overuse']);
|
||||
$i++;
|
||||
//print_r($data);
|
||||
}
|
||||
|
||||
if ($i < 12)
|
||||
{
|
||||
$y = 12 - $i;
|
||||
for ($x=0;$x<$y;$x++)
|
||||
{
|
||||
$allowed = (($x == "0") ? $traf['allowed'] : "0" );
|
||||
array_push($in_data, "0");
|
||||
array_push($out_data, "0");
|
||||
array_push($tot_data, "0");
|
||||
array_push($allow_data, $allowed);
|
||||
array_push($overuse_data, "0");
|
||||
array_push($ticklabels, "");
|
||||
}
|
||||
}
|
||||
$yaxistitle = "Gigabytes";
|
||||
$graph_name = "Historical bandwidth over the last 12 billing periods";
|
||||
} else {
|
||||
$data = array();
|
||||
$average = 0;
|
||||
if ($imgtype == "day")
|
||||
{
|
||||
foreach (dbFetch("SELECT DISTINCT UNIX_TIMESTAMP(timestamp) as timestamp, SUM(delta) as traf_total, SUM(in_delta) as traf_in, SUM(out_delta) as traf_out FROM bill_data WHERE `bill_id` = ? AND `timestamp` >= FROM_UNIXTIME(?) AND `timestamp` <= FROM_UNIXTIME(?) GROUP BY DATE(timestamp) ORDER BY timestamp ASC", array($bill_id, $start, $end)) as $data)
|
||||
{
|
||||
$traf['in'] = (isset($data['traf_in']) ? $data['traf_in'] : 0);
|
||||
$traf['out'] = (isset($data['traf_out']) ? $data['traf_out'] : 0);
|
||||
$traf['total'] = (isset($data['traf_total']) ? $data['traf_total'] : 0);
|
||||
$datelabel = strftime("%e\n%b", $data['timestamp']);
|
||||
array_push($ticklabels, $datelabel);
|
||||
array_push($in_data, $traf['in']);
|
||||
array_push($out_data, $traf['out']);
|
||||
array_push($tot_data, $traf['total']);
|
||||
$average += $data['traf_total'];
|
||||
}
|
||||
$ave_count = count($tot_data);
|
||||
if ($imgbill != false)
|
||||
{
|
||||
$days = strftime("%e", date($end - $start)) - $ave_count - 1;
|
||||
for ($x=0;$x<$days;$x++)
|
||||
{
|
||||
array_push($ticklabels, "");
|
||||
array_push($in_data, 0);
|
||||
array_push($out_data, 0);
|
||||
array_push($tot_data, 0);
|
||||
}
|
||||
}
|
||||
} elseif ($imgtype == "hour")
|
||||
{
|
||||
foreach (dbFetch("SELECT DISTINCT UNIX_TIMESTAMP(timestamp) as timestamp, SUM(delta) as traf_total, SUM(in_delta) as traf_in, SUM(out_delta) as traf_out FROM bill_data WHERE `bill_id` = ? AND `timestamp` >= FROM_UNIXTIME(?) AND `timestamp` <= FROM_UNIXTIME(?) GROUP BY HOUR(timestamp) ORDER BY timestamp ASC", array($bill_id, $start, $end)) as $data)
|
||||
{
|
||||
$traf['in'] = (isset($data['traf_in']) ? $data['traf_in'] : 0);
|
||||
$traf['out'] = (isset($data['traf_out']) ? $data['traf_out'] : 0);
|
||||
$traf['total'] = (isset($data['traf_total']) ? $data['traf_total'] : 0);
|
||||
$datelabel = strftime("%H:%M", $data['timestamp']);
|
||||
array_push($ticklabels, $datelabel);
|
||||
array_push($in_data, $traf['in']);
|
||||
array_push($out_data, $traf['out']);
|
||||
array_push($tot_data, $traf['total']);
|
||||
$average += $data['traf_total'];
|
||||
}
|
||||
$ave_count = count($tot_data);
|
||||
}
|
||||
|
||||
$decimal = 0;
|
||||
$average = $average / $ave_count;
|
||||
for ($x=0;$x<=count($tot_data);$x++)
|
||||
{
|
||||
array_push($ave_data, $average);
|
||||
}
|
||||
$graph_name = date('M j g:ia', $start)." - ".date('M j g:ia', $end);
|
||||
}
|
||||
|
||||
// Create the graph. These two calls are always required
|
||||
$graph = new Graph($xsize, $ysize, $graph_name);
|
||||
$graph->img->SetImgFormat("png");
|
||||
|
||||
#$graph->SetScale("textlin",0,0,$start,$end);
|
||||
|
||||
$graph->SetScale("textlin");
|
||||
#$graph->title->Set("$graph_name");
|
||||
$graph->title->SetFont(FF_FONT2, FS_BOLD, 10);
|
||||
$graph->SetMarginColor("white");
|
||||
$graph->SetFrame(false);
|
||||
$graph->SetMargin("75", "30", "30", "65");
|
||||
$graph->legend->SetFont(FF_FONT1, FS_NORMAL);
|
||||
$graph->legend->SetLayout(LEGEND_HOR);
|
||||
$graph->legend->Pos("0.52", "0.91", "center");
|
||||
|
||||
$graph->xaxis->SetFont(FF_FONT1, FS_BOLD);
|
||||
$graph->xaxis->SetPos('min');
|
||||
$graph->xaxis->SetTitleMargin(30);
|
||||
$graph->xaxis->SetTickLabels($ticklabels);
|
||||
$graph->xgrid->Show(true,true);
|
||||
$graph->xgrid->SetColor('#e0e0e0','#efefef');
|
||||
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetTitleMargin(50);
|
||||
$graph->yaxis->title->SetFont(FF_FONT1, FS_NORMAL, 10);
|
||||
$graph->yaxis->title->Set("Bytes Transferred");
|
||||
$graph->yaxis->SetLabelFormatCallback('format_bytes_billing');
|
||||
$graph->ygrid->SetFill(true,'#[email protected]','#[email protected]');
|
||||
|
||||
// Create the bar plots
|
||||
$barplot_tot = new BarPlot($tot_data);
|
||||
$barplot_tot->SetLegend("Traffic total");
|
||||
$barplot_tot->SetColor('darkgray');
|
||||
$barplot_tot->SetFillColor('[email protected]');
|
||||
$barplot_tot->value->Show();
|
||||
$barplot_tot->value->SetFormatCallback('format_bytes_billing_short');
|
||||
|
||||
$barplot_in = new BarPlot($in_data);
|
||||
$barplot_in->SetLegend("Traffic In");
|
||||
$barplot_in->SetColor('darkgreen');
|
||||
$barplot_in->SetFillColor('[email protected]');
|
||||
$barplot_in->SetWeight(1);
|
||||
|
||||
$barplot_out = new BarPlot($out_data);
|
||||
$barplot_out->SetLegend("Traffic Out");
|
||||
$barplot_out->SetColor('darkblue');
|
||||
$barplot_out->SetFillColor('[email protected]');
|
||||
$barplot_out->SetWeight(1);
|
||||
|
||||
if ($imgtype == "historical")
|
||||
{
|
||||
$barplot_over = new BarPlot($overuse_data);
|
||||
$barplot_over->SetLegend("Traffic Overusage");
|
||||
$barplot_over->SetColor('darkred');
|
||||
$barplot_over->SetFillColor('[email protected]');
|
||||
$barplot_over->SetWeight(1);
|
||||
|
||||
$lineplot_allow = new LinePlot($allow_data);
|
||||
$lineplot_allow->SetLegend("Traffic Allowed");
|
||||
$lineplot_allow->SetColor('black');
|
||||
$lineplot_allow->SetWeight(1);
|
||||
|
||||
$gbplot = new GroupBarPlot(array($barplot_in, $barplot_tot, $barplot_out, $barplot_over));
|
||||
} else {
|
||||
$lineplot_allow = new LinePlot($ave_data);
|
||||
//$lineplot_allow->SetLegend("Average per ".$imgtype);
|
||||
$lineplot_allow->SetLegend("Average");
|
||||
$lineplot_allow->SetColor('black');
|
||||
$lineplot_allow->SetWeight(1);
|
||||
|
||||
$gbplot = new GroupBarPlot(array($barplot_in, $barplot_tot, $barplot_out));
|
||||
}
|
||||
|
||||
$graph->Add($gbplot);
|
||||
$graph->Add($lineplot_allow);
|
||||
|
||||
// Display the graph
|
||||
$graph->Stroke();
|
||||
|
||||
?>
|
||||
@@ -1,242 +0,0 @@
|
||||
<?php
|
||||
|
||||
ini_set('allow_url_fopen', 0);
|
||||
ini_set('display_errors', 0);
|
||||
|
||||
if (strpos($_SERVER['REQUEST_URI'], "debug"))
|
||||
{
|
||||
$debug = "1";
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 1);
|
||||
ini_set('log_errors', 1);
|
||||
ini_set('error_reporting', E_ALL);
|
||||
} else {
|
||||
$debug = FALSE;
|
||||
ini_set('display_errors', 0);
|
||||
ini_set('display_startup_errors', 0);
|
||||
ini_set('log_errors', 0);
|
||||
ini_set('error_reporting', 0);
|
||||
}
|
||||
|
||||
include("../includes/defaults.inc.php");
|
||||
include("../config.php");
|
||||
include("../includes/functions.php");
|
||||
include("includes/functions.inc.php");
|
||||
include("includes/authenticate.inc.php");
|
||||
|
||||
if ($_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR']) { if (!$_SESSION['authenticated']) { echo("unauthenticated"); exit; } }
|
||||
require("includes/jpgraph/src/jpgraph.php");
|
||||
include("includes/jpgraph/src/jpgraph_line.php");
|
||||
include("includes/jpgraph/src/jpgraph_utils.inc.php");
|
||||
include("includes/jpgraph/src/jpgraph_date.php");
|
||||
|
||||
if (is_numeric($_GET['bill_id']))
|
||||
{
|
||||
if ($_SERVER['REMOTE_ADDR'] != $_SERVER['SERVER_ADDR'])
|
||||
{
|
||||
if (bill_permitted($_GET['bill_id']))
|
||||
{
|
||||
$bill_id = $_GET['bill_id'];
|
||||
} else {
|
||||
echo("Unauthorised Access Prohibited.");
|
||||
exit;
|
||||
}
|
||||
} else {
|
||||
$bill_id = $_GET['bill_id'];
|
||||
}
|
||||
} else {
|
||||
echo("Unauthorised Access Prohibited.");
|
||||
exit;
|
||||
}
|
||||
|
||||
$start = $_GET[from];
|
||||
$end = $_GET[to];
|
||||
$xsize = $_GET[x];
|
||||
$ysize = $_GET[y];
|
||||
$count = $_GET[count];
|
||||
$count = $count + 0;
|
||||
$iter = 1;
|
||||
|
||||
if ($_GET[type]) { $type = $_GET[type]; } else { $type = "date"; }
|
||||
|
||||
$dur = $end - $start;
|
||||
|
||||
$datefrom = date('Ymthis', $start);
|
||||
$dateto = date('Ymthis', $end);
|
||||
|
||||
#$rate_data = getRates($bill_id,$datefrom,$dateto);
|
||||
$rate_data = dbFetchRow("SELECT * from `bills` WHERE `bill_id`= ? LIMIT 1", array($bill_id));
|
||||
$rate_95th = $rate_data['rate_95th'];
|
||||
$rate_average = $rate_data['rate_average'];
|
||||
|
||||
#$bi_a = dbFetchRow("SELECT * FROM bills WHERE bill_id = ?", array($bill_id));
|
||||
#$bill_name = $bi_a['bill_name'];
|
||||
$bill_name = $rate_data['bill_name'];
|
||||
|
||||
$dur = $end - $start;
|
||||
|
||||
$counttot = dbFetchCell("SELECT count(`delta`) FROM `bill_data` WHERE `bill_id` = ? AND `timestamp` >= FROM_UNIXTIME( ? ) AND `timestamp` <= FROM_UNIXTIME( ? )", array($bill_id, $start, $end));
|
||||
|
||||
$count = round($dur / 300 / (($ysize - 100) * 3), 0);
|
||||
if ($count <= 1) { $count = 2; }
|
||||
|
||||
#$count = round($counttot / 260, 0);
|
||||
#if ($count <= 1) { $count = 2; }
|
||||
|
||||
#$max = dbFetchCell("SELECT delta FROM bill_data WHERE bill_id = ? AND `timestamp` >= FROM_UNIXTIME( ? ) AND `timestamp` <= FROM_UNIXTIME( ? ) ORDER BY delta DESC LIMIT 0,1", array($bill_id, $start, $end));
|
||||
#if ($max > 1000000) { $div = "1000000"; $yaxis = "Mbit/sec"; } else { $div = "1000"; $yaxis = "Kbit/sec"; }
|
||||
|
||||
$i = '0';
|
||||
|
||||
foreach (dbFetch("SELECT *, UNIX_TIMESTAMP(timestamp) AS formatted_date FROM bill_data WHERE bill_id = ? AND `timestamp` >= FROM_UNIXTIME( ? ) AND `timestamp` <= FROM_UNIXTIME( ? ) ORDER BY timestamp ASC", array($bill_id, $start, $end)) as $row)
|
||||
{
|
||||
@$timestamp = $row['formatted_date'];
|
||||
if (!$first) { $first = $timestamp; }
|
||||
@$delta = $row['delta'];
|
||||
@$period = $row['period'];
|
||||
@$in_delta = $row['in_delta'];
|
||||
@$out_delta = $row['out_delta'];
|
||||
@$in_value = round($in_delta * 8 / $period, 2);
|
||||
@$out_value = round($out_delta * 8 / $period, 2);
|
||||
|
||||
@$last = $timestamp;
|
||||
|
||||
$iter_in += $in_delta;
|
||||
$iter_out += $out_delta;
|
||||
$iter_period += $period;
|
||||
|
||||
if ($iter == $count)
|
||||
{
|
||||
$out_data[$i] = round($iter_out * 8 / $iter_period, 2);
|
||||
$out_data_inv[$i] = $out_data[$i] * -1;
|
||||
$in_data[$i] = round($iter_in * 8 / $iter_period, 2);
|
||||
$tot_data[$i] = $out_data[$i] + $in_data[$i];
|
||||
$tot_data_inv[$i] = $tot_data[$i] * -1;
|
||||
|
||||
if ($tot_data[$i] > $max_value) { $max_value = $tot_data[$i]; }
|
||||
|
||||
$ticks[$i] = $timestamp;
|
||||
$per_data[$i] = $rate_95th;
|
||||
$ave_data[$i] = $rate_average;
|
||||
$iter = "1";
|
||||
$i++;
|
||||
unset($iter_out, $iter_in, $iter_period);
|
||||
}
|
||||
|
||||
$iter++;
|
||||
}
|
||||
|
||||
$graph_name = date('M j g:ia', $start) . " - " . date('M j g:ia', $last);
|
||||
|
||||
$n = count($ticks);
|
||||
$xmin = $ticks[0];
|
||||
$xmax = $ticks[$n-1];
|
||||
|
||||
$graph_name = date('M j g:ia', $xmin) . " - " . date('M j g:ia', $xmax);
|
||||
|
||||
$graph = new Graph($xsize, $ysize, $graph_name);
|
||||
$graph->img->SetImgFormat("png");
|
||||
|
||||
$graph->SetScale('datlin',0,0,$start,$end);
|
||||
|
||||
#$graph->title->Set("$graph_name");
|
||||
$graph->title->SetFont(FF_FONT2,FS_BOLD,10);
|
||||
$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
|
||||
|
||||
$graph->xaxis->SetTextLabelInterval(2);
|
||||
|
||||
$graph->xaxis->SetPos('min');
|
||||
#$graph->xaxis->SetLabelAngle(15);
|
||||
$graph->yaxis->HideZeroLabel(1);
|
||||
$graph->yaxis->SetFont(FF_FONT1);
|
||||
$graph->yaxis->SetLabelAngle(0);
|
||||
$graph->xaxis->title->SetFont(FF_FONT1,FS_NORMAL,10);
|
||||
$graph->yaxis->title->SetFont(FF_FONT1,FS_NORMAL,10);
|
||||
$graph->yaxis->SetTitleMargin(50);
|
||||
$graph->xaxis->SetTitleMargin(30);
|
||||
#$graph->xaxis->HideLastTickLabel();
|
||||
#$graph->xaxis->HideFirstTickLabel();
|
||||
#$graph->yaxis->scale->SetAutoMin(1);
|
||||
$graph->xaxis->title->Set($type);
|
||||
$graph->yaxis->title->Set("Bits per second");
|
||||
$graph->yaxis->SetLabelFormatCallback("format_si");
|
||||
|
||||
function TimeCallback($aVal) {
|
||||
global $dur;
|
||||
|
||||
if ($dur < 172800)
|
||||
{
|
||||
return Date('H:i',$aVal);
|
||||
} elseif ($dur < 604800) {
|
||||
return Date('D',$aVal);
|
||||
} else {
|
||||
return Date('j M',$aVal);
|
||||
}
|
||||
}
|
||||
|
||||
$graph->xaxis->SetLabelFormatCallback('TimeCallBack');
|
||||
|
||||
$graph->ygrid->SetFill(true,'#[email protected]','#[email protected]');
|
||||
$graph->xgrid->Show(true,true);
|
||||
$graph->xgrid->SetColor('#e0e0e0','#efefef');
|
||||
$graph->SetMarginColor('white');
|
||||
$graph->SetFrame(false);
|
||||
$graph->SetMargin(75,30,30,45);
|
||||
$graph->legend->SetFont(FF_FONT1,FS_NORMAL);
|
||||
|
||||
$lineplot = new LinePlot($tot_data, $ticks);
|
||||
$lineplot->SetLegend("Traffic total");
|
||||
$lineplot->SetColor("#d5d5d5");
|
||||
$lineplot->SetFillColor("#[email protected]");
|
||||
|
||||
#$lineplot2 = new LinePlot($tot_data_inv, $ticks);
|
||||
#$lineplot2->SetColor("#d5d5d5");
|
||||
#$lineplot2->SetFillColor("#[email protected]");
|
||||
|
||||
$lineplot_in = new LinePlot($in_data, $ticks);
|
||||
|
||||
$lineplot_in->SetLegend("Traffic In");
|
||||
$lineplot_in->SetColor('darkgreen');
|
||||
$lineplot_in->SetFillColor('[email protected]');
|
||||
$lineplot_in->SetWeight(1);
|
||||
|
||||
$lineplot_out = new LinePlot($out_data_inv, $ticks);
|
||||
$lineplot_out->SetLegend("Traffic Out");
|
||||
$lineplot_out->SetColor('darkblue');
|
||||
$lineplot_out->SetFillColor('[email protected]');
|
||||
$lineplot_out->SetWeight(1);
|
||||
|
||||
if ($_GET['95th'])
|
||||
{
|
||||
$lineplot_95th = new LinePlot($per_data, $ticks);
|
||||
$lineplot_95th ->SetColor("red");
|
||||
}
|
||||
|
||||
if ($_GET['ave'])
|
||||
{
|
||||
$lineplot_ave = new LinePlot($ave_data, $ticks);
|
||||
$lineplot_ave ->SetColor("red");
|
||||
}
|
||||
|
||||
$graph->legend->SetLayout(LEGEND_HOR);
|
||||
$graph->legend->Pos(0.52, 0.90, 'center');
|
||||
|
||||
$graph->Add($lineplot);
|
||||
#$graph->Add($lineplot2);
|
||||
|
||||
$graph->Add($lineplot_in);
|
||||
$graph->Add($lineplot_out);
|
||||
|
||||
if ($_GET['95th'])
|
||||
{
|
||||
$graph->Add($lineplot_95th);
|
||||
}
|
||||
|
||||
if ($_GET['ave'])
|
||||
{
|
||||
$graph->Add($lineplot_ave);
|
||||
}
|
||||
|
||||
$graph->stroke();
|
||||
|
||||
?>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -1,491 +0,0 @@
|
||||
/*!
|
||||
* Bootstrap v2.0.2
|
||||
*
|
||||
* Copyright 2012 Twitter, Inc
|
||||
* Licensed under the Apache License v2.0
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
||||
*/
|
||||
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
|
||||
.clearfix:after{clear:both;}
|
||||
.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}
|
||||
.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
|
||||
p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}
|
||||
.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
|
||||
h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
|
||||
h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
|
||||
h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
|
||||
h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;}
|
||||
h4,h5,h6{line-height:18px;}
|
||||
h4{font-size:14px;}h4 small{font-size:12px;}
|
||||
h5{font-size:12px;}
|
||||
h6{font-size:11px;color:#999999;text-transform:uppercase;}
|
||||
.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
|
||||
.page-header h1{line-height:1;}
|
||||
ul,ol{padding:0;margin:0 0 9px 25px;}
|
||||
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
|
||||
ul{list-style:disc;}
|
||||
ol{list-style:decimal;}
|
||||
li{line-height:18px;}
|
||||
ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
|
||||
dl{margin-bottom:18px;}
|
||||
dt,dd{line-height:18px;}
|
||||
dt{font-weight:bold;line-height:17px;}
|
||||
dd{margin-left:9px;}
|
||||
.dl-horizontal dt{float:left;clear:left;width:120px;text-align:right;}
|
||||
.dl-horizontal dd{margin-left:130px;}
|
||||
hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
|
||||
strong{font-weight:bold;}
|
||||
em{font-style:italic;}
|
||||
.muted{color:#999999;}
|
||||
abbr[title]{border-bottom:1px dotted #ddd;cursor:help;}
|
||||
abbr.initialism{font-size:90%;text-transform:uppercase;}
|
||||
blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
|
||||
blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
|
||||
blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
|
||||
q:before,q:after,blockquote:before,blockquote:after{content:"";}
|
||||
address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;}
|
||||
small{font-size:100%;}
|
||||
cite{font-style:normal;}
|
||||
code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
|
||||
pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12.025px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;word-wrap:break-word;}pre.prettyprint{margin-bottom:18px;}
|
||||
pre code{padding:0;color:inherit;background-color:transparent;border:0;}
|
||||
.pre-scrollable{max-height:340px;overflow-y:scroll;}
|
||||
.label{padding:1px 4px 2px;font-size:10.998px;font-weight:bold;line-height:13px;color:#ffffff;vertical-align:middle;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.label:hover{color:#ffffff;text-decoration:none;}
|
||||
.label-important{background-color:#b94a48;}
|
||||
.label-important:hover{background-color:#953b39;}
|
||||
.label-warning{background-color:#f89406;}
|
||||
.label-warning:hover{background-color:#c67605;}
|
||||
.label-success{background-color:#468847;}
|
||||
.label-success:hover{background-color:#356635;}
|
||||
.label-info{background-color:#3a87ad;}
|
||||
.label-info:hover{background-color:#2d6987;}
|
||||
.label-inverse{background-color:#333333;}
|
||||
.label-inverse:hover{background-color:#1a1a1a;}
|
||||
.badge{padding:1px 9px 2px;font-size:12.025px;font-weight:bold;white-space:nowrap;color:#ffffff;background-color:#999999;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px;}
|
||||
.badge:hover{color:#ffffff;text-decoration:none;cursor:pointer;}
|
||||
.badge-error{background-color:#b94a48;}
|
||||
.badge-error:hover{background-color:#953b39;}
|
||||
.badge-warning{background-color:#f89406;}
|
||||
.badge-warning:hover{background-color:#c67605;}
|
||||
.badge-success{background-color:#468847;}
|
||||
.badge-success:hover{background-color:#356635;}
|
||||
.badge-info{background-color:#3a87ad;}
|
||||
.badge-info:hover{background-color:#2d6987;}
|
||||
.badge-inverse{background-color:#333333;}
|
||||
.badge-inverse:hover{background-color:#1a1a1a;}
|
||||
table{max-width:100%;border-collapse:collapse;border-spacing:0;background-color:transparent;}
|
||||
.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;vertical-align:top;border-top:1px solid #dddddd;}
|
||||
.table th{font-weight:bold;}
|
||||
.table thead th{vertical-align:bottom;}
|
||||
.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0;}
|
||||
.table tbody+tbody{border-top:2px solid #dddddd;}
|
||||
.table-condensed th,.table-condensed td{padding:4px 5px;}
|
||||
.table-bordered{border:1px solid #dddddd;border-left:0;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th,.table-bordered td{border-left:1px solid #dddddd;}
|
||||
.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
|
||||
.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
|
||||
.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
|
||||
.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
|
||||
.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
|
||||
.table-striped tbody tr:nth-child(odd) td,.table-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;}
|
||||
.table tbody tr:hover td,.table tbody tr:hover th{background-color:#f5f5f5;}
|
||||
table .span1{float:none;width:44px;margin-left:0;}
|
||||
table .span2{float:none;width:124px;margin-left:0;}
|
||||
table .span3{float:none;width:204px;margin-left:0;}
|
||||
table .span4{float:none;width:284px;margin-left:0;}
|
||||
table .span5{float:none;width:364px;margin-left:0;}
|
||||
table .span6{float:none;width:444px;margin-left:0;}
|
||||
table .span7{float:none;width:524px;margin-left:0;}
|
||||
table .span8{float:none;width:604px;margin-left:0;}
|
||||
table .span9{float:none;width:684px;margin-left:0;}
|
||||
table .span10{float:none;width:764px;margin-left:0;}
|
||||
table .span11{float:none;width:844px;margin-left:0;}
|
||||
table .span12{float:none;width:924px;margin-left:0;}
|
||||
table .span13{float:none;width:1004px;margin-left:0;}
|
||||
table .span14{float:none;width:1084px;margin-left:0;}
|
||||
table .span15{float:none;width:1164px;margin-left:0;}
|
||||
table .span16{float:none;width:1244px;margin-left:0;}
|
||||
table .span17{float:none;width:1324px;margin-left:0;}
|
||||
table .span18{float:none;width:1404px;margin-left:0;}
|
||||
table .span19{float:none;width:1484px;margin-left:0;}
|
||||
table .span20{float:none;width:1564px;margin-left:0;}
|
||||
table .span21{float:none;width:1644px;margin-left:0;}
|
||||
table .span22{float:none;width:1724px;margin-left:0;}
|
||||
table .span23{float:none;width:1804px;margin-left:0;}
|
||||
table .span24{float:none;width:1884px;margin-left:0;}
|
||||
form{margin:0 0 18px;}
|
||||
fieldset{padding:0;margin:0;border:0;}
|
||||
legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;}legend small{font-size:13.5px;color:#999999;}
|
||||
label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px;}
|
||||
input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
|
||||
label{display:block;margin-bottom:5px;color:#333333;}
|
||||
input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.uneditable-textarea{width:auto;height:auto;}
|
||||
label input,label textarea,label select{display:block;}
|
||||
input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:0 \9;}
|
||||
input[type="image"]{border:0;}
|
||||
input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
|
||||
input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}
|
||||
select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}
|
||||
input[type="file"]{line-height:18px \9;}
|
||||
select{width:220px;background-color:#ffffff;}
|
||||
select[multiple],select[size]{height:auto;}
|
||||
input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
|
||||
textarea{height:auto;}
|
||||
input[type="hidden"]{display:none;}
|
||||
.radio,.checkbox{padding-left:18px;}
|
||||
.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
|
||||
.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
|
||||
.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
|
||||
.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
|
||||
input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}
|
||||
input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;}
|
||||
input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
|
||||
.input-mini{width:60px;}
|
||||
.input-small{width:90px;}
|
||||
.input-medium{width:150px;}
|
||||
.input-large{width:210px;}
|
||||
.input-xlarge{width:270px;}
|
||||
.input-xxlarge{width:530px;}
|
||||
input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}
|
||||
input,textarea,.uneditable-input{margin-left:0;}
|
||||
input.span12, textarea.span12, .uneditable-input.span12{width:930px;}
|
||||
input.span11, textarea.span11, .uneditable-input.span11{width:850px;}
|
||||
input.span10, textarea.span10, .uneditable-input.span10{width:770px;}
|
||||
input.span9, textarea.span9, .uneditable-input.span9{width:690px;}
|
||||
input.span8, textarea.span8, .uneditable-input.span8{width:610px;}
|
||||
input.span7, textarea.span7, .uneditable-input.span7{width:530px;}
|
||||
input.span6, textarea.span6, .uneditable-input.span6{width:450px;}
|
||||
input.span5, textarea.span5, .uneditable-input.span5{width:370px;}
|
||||
input.span4, textarea.span4, .uneditable-input.span4{width:290px;}
|
||||
input.span3, textarea.span3, .uneditable-input.span3{width:210px;}
|
||||
input.span2, textarea.span2, .uneditable-input.span2{width:130px;}
|
||||
input.span1, textarea.span1, .uneditable-input.span1{width:50px;}
|
||||
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#eeeeee;border-color:#ddd;cursor:not-allowed;}
|
||||
.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
|
||||
.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}
|
||||
.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
|
||||
.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
|
||||
.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}
|
||||
.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
|
||||
.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
|
||||
.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}
|
||||
.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
|
||||
input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
|
||||
.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#eeeeee;border-top:1px solid #ddd;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";}
|
||||
.form-actions:after{clear:both;}
|
||||
.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
|
||||
:-moz-placeholder{color:#999999;}
|
||||
::-webkit-input-placeholder{color:#999999;}
|
||||
.help-block,.help-inline{color:#555555;}
|
||||
.help-block{display:block;margin-bottom:9px;}
|
||||
.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
|
||||
.input-prepend,.input-append{margin-bottom:5px;}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{*margin-left:0;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}
|
||||
.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}
|
||||
.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #ffffff;vertical-align:middle;background-color:#eeeeee;border:1px solid #ccc;}
|
||||
.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
|
||||
.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}
|
||||
.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
|
||||
.input-append input,.input-append select .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
|
||||
.input-append .uneditable-input{border-left-color:#eee;border-right-color:#ccc;}
|
||||
.input-append .add-on,.input-append .btn{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
|
||||
.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
|
||||
.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
|
||||
.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
|
||||
.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
|
||||
.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;margin-bottom:0;}
|
||||
.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
|
||||
.form-search label,.form-inline label{display:inline-block;}
|
||||
.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
|
||||
.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
|
||||
.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px;}
|
||||
.control-group{margin-bottom:9px;}
|
||||
legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;}
|
||||
.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}
|
||||
.form-horizontal .control-group:after{clear:both;}
|
||||
.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right;}
|
||||
.form-horizontal .controls{margin-left:160px;*display:inline-block;*margin-left:0;*padding-left:20px;}
|
||||
.form-horizontal .help-block{margin-top:9px;margin-bottom:0;}
|
||||
.form-horizontal .form-actions{padding-left:160px;}
|
||||
.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 10px 4px;margin-bottom:0;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);vertical-align:middle;background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-ms-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(top, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);border:1px solid #cccccc;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;}
|
||||
.btn:active,.btn.active{background-color:#cccccc \9;}
|
||||
.btn:first-child{*margin-left:0;}
|
||||
.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
|
||||
.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
|
||||
.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;outline:0;}
|
||||
.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
|
||||
.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
|
||||
.btn-large [class^="icon-"]{margin-top:1px;}
|
||||
.btn-small{padding:5px 9px;font-size:11px;line-height:16px;}
|
||||
.btn-small [class^="icon-"]{margin-top:-1px;}
|
||||
.btn-mini{padding:2px 6px;font-size:11px;line-height:14px;}
|
||||
.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;}
|
||||
.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
|
||||
.btn-primary{background-color:#0074cc;background-image:-moz-linear-gradient(top, #0088cc, #0055cc);background-image:-ms-linear-gradient(top, #0088cc, #0055cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));background-image:-webkit-linear-gradient(top, #0088cc, #0055cc);background-image:-o-linear-gradient(top, #0088cc, #0055cc);background-image:linear-gradient(top, #0088cc, #0055cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);border-color:#0055cc #0055cc #003580;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0055cc;}
|
||||
.btn-primary:active,.btn-primary.active{background-color:#004099 \9;}
|
||||
.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;}
|
||||
.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
|
||||
.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;}
|
||||
.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
|
||||
.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;}
|
||||
.btn-success:active,.btn-success.active{background-color:#408140 \9;}
|
||||
.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;}
|
||||
.btn-info:active,.btn-info.active{background-color:#24748c \9;}
|
||||
.btn-inverse{background-color:#414141;background-image:-moz-linear-gradient(top, #555555, #222222);background-image:-ms-linear-gradient(top, #555555, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));background-image:-webkit-linear-gradient(top, #555555, #222222);background-image:-o-linear-gradient(top, #555555, #222222);background-image:linear-gradient(top, #555555, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222222;}
|
||||
.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
|
||||
button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
|
||||
button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
|
||||
button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
|
||||
button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
|
||||
[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;line-height:14px;vertical-align:text-top;background-image:url("bootstrap/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child,[class*=" icon-"]:last-child{*margin-left:0;}
|
||||
.icon-white{background-image:url("bootstrap/glyphicons-halflings-white.png");}
|
||||
.icon-glass{background-position:0 0;}
|
||||
.icon-music{background-position:-24px 0;}
|
||||
.icon-search{background-position:-48px 0;}
|
||||
.icon-envelope{background-position:-72px 0;}
|
||||
.icon-heart{background-position:-96px 0;}
|
||||
.icon-star{background-position:-120px 0;}
|
||||
.icon-star-empty{background-position:-144px 0;}
|
||||
.icon-user{background-position:-168px 0;}
|
||||
.icon-film{background-position:-192px 0;}
|
||||
.icon-th-large{background-position:-216px 0;}
|
||||
.icon-th{background-position:-240px 0;}
|
||||
.icon-th-list{background-position:-264px 0;}
|
||||
.icon-ok{background-position:-288px 0;}
|
||||
.icon-remove{background-position:-312px 0;}
|
||||
.icon-zoom-in{background-position:-336px 0;}
|
||||
.icon-zoom-out{background-position:-360px 0;}
|
||||
.icon-off{background-position:-384px 0;}
|
||||
.icon-signal{background-position:-408px 0;}
|
||||
.icon-cog{background-position:-432px 0;}
|
||||
.icon-trash{background-position:-456px 0;}
|
||||
.icon-home{background-position:0 -24px;}
|
||||
.icon-file{background-position:-24px -24px;}
|
||||
.icon-time{background-position:-48px -24px;}
|
||||
.icon-road{background-position:-72px -24px;}
|
||||
.icon-download-alt{background-position:-96px -24px;}
|
||||
.icon-download{background-position:-120px -24px;}
|
||||
.icon-upload{background-position:-144px -24px;}
|
||||
.icon-inbox{background-position:-168px -24px;}
|
||||
.icon-play-circle{background-position:-192px -24px;}
|
||||
.icon-repeat{background-position:-216px -24px;}
|
||||
.icon-refresh{background-position:-240px -24px;}
|
||||
.icon-list-alt{background-position:-264px -24px;}
|
||||
.icon-lock{background-position:-287px -24px;}
|
||||
.icon-flag{background-position:-312px -24px;}
|
||||
.icon-headphones{background-position:-336px -24px;}
|
||||
.icon-volume-off{background-position:-360px -24px;}
|
||||
.icon-volume-down{background-position:-384px -24px;}
|
||||
.icon-volume-up{background-position:-408px -24px;}
|
||||
.icon-qrcode{background-position:-432px -24px;}
|
||||
.icon-barcode{background-position:-456px -24px;}
|
||||
.icon-tag{background-position:0 -48px;}
|
||||
.icon-tags{background-position:-25px -48px;}
|
||||
.icon-book{background-position:-48px -48px;}
|
||||
.icon-bookmark{background-position:-72px -48px;}
|
||||
.icon-print{background-position:-96px -48px;}
|
||||
.icon-camera{background-position:-120px -48px;}
|
||||
.icon-font{background-position:-144px -48px;}
|
||||
.icon-bold{background-position:-167px -48px;}
|
||||
.icon-italic{background-position:-192px -48px;}
|
||||
.icon-text-height{background-position:-216px -48px;}
|
||||
.icon-text-width{background-position:-240px -48px;}
|
||||
.icon-align-left{background-position:-264px -48px;}
|
||||
.icon-align-center{background-position:-288px -48px;}
|
||||
.icon-align-right{background-position:-312px -48px;}
|
||||
.icon-align-justify{background-position:-336px -48px;}
|
||||
.icon-list{background-position:-360px -48px;}
|
||||
.icon-indent-left{background-position:-384px -48px;}
|
||||
.icon-indent-right{background-position:-408px -48px;}
|
||||
.icon-facetime-video{background-position:-432px -48px;}
|
||||
.icon-picture{background-position:-456px -48px;}
|
||||
.icon-pencil{background-position:0 -72px;}
|
||||
.icon-map-marker{background-position:-24px -72px;}
|
||||
.icon-adjust{background-position:-48px -72px;}
|
||||
.icon-tint{background-position:-72px -72px;}
|
||||
.icon-edit{background-position:-96px -72px;}
|
||||
.icon-share{background-position:-120px -72px;}
|
||||
.icon-check{background-position:-144px -72px;}
|
||||
.icon-move{background-position:-168px -72px;}
|
||||
.icon-step-backward{background-position:-192px -72px;}
|
||||
.icon-fast-backward{background-position:-216px -72px;}
|
||||
.icon-backward{background-position:-240px -72px;}
|
||||
.icon-play{background-position:-264px -72px;}
|
||||
.icon-pause{background-position:-288px -72px;}
|
||||
.icon-stop{background-position:-312px -72px;}
|
||||
.icon-forward{background-position:-336px -72px;}
|
||||
.icon-fast-forward{background-position:-360px -72px;}
|
||||
.icon-step-forward{background-position:-384px -72px;}
|
||||
.icon-eject{background-position:-408px -72px;}
|
||||
.icon-chevron-left{background-position:-432px -72px;}
|
||||
.icon-chevron-right{background-position:-456px -72px;}
|
||||
.icon-plus-sign{background-position:0 -96px;}
|
||||
.icon-minus-sign{background-position:-24px -96px;}
|
||||
.icon-remove-sign{background-position:-48px -96px;}
|
||||
.icon-ok-sign{background-position:-72px -96px;}
|
||||
.icon-question-sign{background-position:-96px -96px;}
|
||||
.icon-info-sign{background-position:-120px -96px;}
|
||||
.icon-screenshot{background-position:-144px -96px;}
|
||||
.icon-remove-circle{background-position:-168px -96px;}
|
||||
.icon-ok-circle{background-position:-192px -96px;}
|
||||
.icon-ban-circle{background-position:-216px -96px;}
|
||||
.icon-arrow-left{background-position:-240px -96px;}
|
||||
.icon-arrow-right{background-position:-264px -96px;}
|
||||
.icon-arrow-up{background-position:-289px -96px;}
|
||||
.icon-arrow-down{background-position:-312px -96px;}
|
||||
.icon-share-alt{background-position:-336px -96px;}
|
||||
.icon-resize-full{background-position:-360px -96px;}
|
||||
.icon-resize-small{background-position:-384px -96px;}
|
||||
.icon-plus{background-position:-408px -96px;}
|
||||
.icon-minus{background-position:-433px -96px;}
|
||||
.icon-asterisk{background-position:-456px -96px;}
|
||||
.icon-exclamation-sign{background-position:0 -120px;}
|
||||
.icon-gift{background-position:-24px -120px;}
|
||||
.icon-leaf{background-position:-48px -120px;}
|
||||
.icon-fire{background-position:-72px -120px;}
|
||||
.icon-eye-open{background-position:-96px -120px;}
|
||||
.icon-eye-close{background-position:-120px -120px;}
|
||||
.icon-warning-sign{background-position:-144px -120px;}
|
||||
.icon-plane{background-position:-168px -120px;}
|
||||
.icon-calendar{background-position:-192px -120px;}
|
||||
.icon-random{background-position:-216px -120px;}
|
||||
.icon-comment{background-position:-240px -120px;}
|
||||
.icon-magnet{background-position:-264px -120px;}
|
||||
.icon-chevron-up{background-position:-288px -120px;}
|
||||
.icon-chevron-down{background-position:-313px -119px;}
|
||||
.icon-retweet{background-position:-336px -120px;}
|
||||
.icon-shopping-cart{background-position:-360px -120px;}
|
||||
.icon-folder-close{background-position:-384px -120px;}
|
||||
.icon-folder-open{background-position:-408px -120px;}
|
||||
.icon-resize-vertical{background-position:-432px -119px;}
|
||||
.icon-resize-horizontal{background-position:-456px -118px;}
|
||||
.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";}
|
||||
.btn-group:after{clear:both;}
|
||||
.btn-group:first-child{*margin-left:0;}
|
||||
.btn-group+.btn-group{margin-left:5px;}
|
||||
.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;}
|
||||
.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
|
||||
.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
|
||||
.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
|
||||
.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
|
||||
.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
|
||||
.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;}
|
||||
.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
|
||||
.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:3px;*padding-bottom:3px;}
|
||||
.btn-group .btn-mini.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:1px;*padding-bottom:1px;}
|
||||
.btn-group .btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px;}
|
||||
.btn-group .btn-large.dropdown-toggle{padding-left:12px;padding-right:12px;}
|
||||
.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
|
||||
.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);}
|
||||
.btn .caret{margin-top:7px;margin-left:0;}
|
||||
.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);}
|
||||
.btn-mini .caret{margin-top:5px;}
|
||||
.btn-small .caret{margin-top:6px;}
|
||||
.btn-large .caret{margin-top:6px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
|
||||
.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);}
|
||||
.nav{margin-left:0;margin-bottom:18px;list-style:none;}
|
||||
.nav>li>a{display:block;}
|
||||
.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;}
|
||||
.nav .nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);text-transform:uppercase;}
|
||||
.nav li+.nav-header{margin-top:9px;}
|
||||
.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0;}
|
||||
.nav-list>li>a,.nav-list .nav-header{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
|
||||
.nav-list>li>a{padding:3px 15px;}
|
||||
.nav-list>.active>a,.nav-list>.active>a:hover{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
|
||||
.nav-list [class^="icon-"]{margin-right:2px;}
|
||||
.nav-list .divider{height:1px;margin:8px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;}
|
||||
.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";}
|
||||
.nav-tabs:after,.nav-pills:after{clear:both;}
|
||||
.nav-tabs>li,.nav-pills>li{float:left;}
|
||||
.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
|
||||
.nav-tabs{border-bottom:1px solid #ddd;}
|
||||
.nav-tabs>li{margin-bottom:-1px;}
|
||||
.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:18px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;}
|
||||
.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
|
||||
.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
|
||||
.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#ffffff;background-color:#0088cc;}
|
||||
.nav-stacked>li{float:none;}
|
||||
.nav-stacked>li>a{margin-right:0;}
|
||||
.nav-tabs.nav-stacked{border-bottom:0;}
|
||||
.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
|
||||
.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
|
||||
.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
|
||||
.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;}
|
||||
.nav-pills.nav-stacked>li>a{margin-bottom:3px;}
|
||||
.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
|
||||
.nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;}
|
||||
.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
|
||||
.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#0088cc;border-bottom-color:#0088cc;margin-top:6px;}
|
||||
.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580;}
|
||||
.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;border-bottom-color:#333333;}
|
||||
.nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;}
|
||||
.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;}
|
||||
.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
|
||||
.tabs-stacked .open>a:hover{border-color:#999999;}
|
||||
.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";}
|
||||
.tabbable:after{clear:both;}
|
||||
.tab-content{display:table;width:100%;}
|
||||
.tabs-below .nav-tabs,.tabs-right .nav-tabs,.tabs-left .nav-tabs{border-bottom:0;}
|
||||
.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
|
||||
.tab-content>.active,.pill-content>.active{display:block;}
|
||||
.tabs-below .nav-tabs{border-top:1px solid #ddd;}
|
||||
.tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0;}
|
||||
.tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;}
|
||||
.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd #ddd;}
|
||||
.tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none;}
|
||||
.tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
|
||||
.tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
|
||||
.tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
|
||||
.tabs-left .nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
|
||||
.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
|
||||
.tabs-right .nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
|
||||
.tabs-right .nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
|
||||
.tabs-right .nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
|
||||
.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
|
||||
.alert{padding:8px 35px 8px 14px;margin-bottom:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;color:#c09853;}
|
||||
.alert-heading{color:inherit;}
|
||||
.alert .close{position:relative;top:-2px;right:-21px;line-height:18px;}
|
||||
.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847;}
|
||||
.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48;}
|
||||
.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#3a87ad;}
|
||||
.alert-block{padding-top:14px;padding-bottom:14px;}
|
||||
.alert-block>p,.alert-block>ul{margin-bottom:0;}
|
||||
.alert-block p+p{margin-top:5px;}
|
||||
@-webkit-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-ms-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
|
||||
.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
|
||||
.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
|
||||
.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
|
||||
.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);}
|
||||
.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
|
||||
.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);}
|
||||
.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
|
||||
.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);}
|
||||
.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
|
||||
.progress-warning .bar{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);}
|
||||
.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
|
||||
.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px;}.popover.top{margin-top:-5px;}
|
||||
.popover.right{margin-left:5px;}
|
||||
.popover.bottom{margin-top:5px;}
|
||||
.popover.left{margin-left:-5px;}
|
||||
.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
|
||||
.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
|
||||
.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
|
||||
.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
|
||||
.popover .arrow{position:absolute;width:0;height:0;}
|
||||
.popover-inner{padding:3px;width:280px;overflow:hidden;background:#000000;background:rgba(0, 0, 0, 0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);}
|
||||
.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}
|
||||
.popover-content{padding:14px;background-color:#ffffff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;}
|
||||
.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
|
||||
.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
|
||||
.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
|
||||
.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;}
|
||||
.pull-right{float:right;}
|
||||
.pull-left{float:left;}
|
||||
.hide{display:none;}
|
||||
.show{display:block;}
|
||||
.invisible{visibility:hidden;}
|
||||
.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}
|
||||
.collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;}
|
||||
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
@@ -1,21 +0,0 @@
|
||||
/* Put this inside a @media qualifier so Netscape 4 ignores it */
|
||||
@media screen, print {
|
||||
/* Turn off list bullets */
|
||||
ul.mktree li { list-style: none; }
|
||||
/* Control how "spaced out" the tree is */
|
||||
ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; }
|
||||
/* Provide space for our own "bullet" inside the LI */
|
||||
ul.mktree li .bullet { padding-left: 15px; }
|
||||
/* Show "bullets" in the links, depending on the class of the LI that the link's in */
|
||||
ul.mktree li.liOpen .bullet { cursor: pointer; background: url(../images/minus.gif) center left no-repeat; }
|
||||
ul.mktree li.liClosed .bullet { cursor: pointer; background: url(../images/plus.gif) center left no-repeat; }
|
||||
ul.mktree li.liBullet .bullet { cursor: default; background: url(../images/bullet.gif) center left no-repeat; }
|
||||
/* Sublists are visible or not based on class of parent LI */
|
||||
ul.mktree li.liOpen ul { display: block; }
|
||||
ul.mktree li.liClosed ul { display: none; }
|
||||
/* Format menu items differently depending on what level of the tree they are in */
|
||||
ul.mktree li { font-size: 12pt; }
|
||||
ul.mktree li ul li { font-size: 10pt; }
|
||||
ul.mktree li ul li ul li { font-size: 10pt; }
|
||||
ul.mktree li ul li ul li ul li { font-size: 10pt; }
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
#center {
|
||||
width: 1800px;
|
||||
}
|
||||
|
||||
#container {
|
||||
margin:0 auto;
|
||||
width: 1776px;
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 384 B |
|
Before Width: | Height: | Size: 251 B |
|
Before Width: | Height: | Size: 178 B |
|
Before Width: | Height: | Size: 104 B |
|
Before Width: | Height: | Size: 125 B |
|
Before Width: | Height: | Size: 105 B |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 90 B |
|
Before Width: | Height: | Size: 129 B |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
@@ -1,415 +0,0 @@
|
||||
/*
|
||||
* jQuery UI CSS Framework 1.8.18
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Theming/API
|
||||
*/
|
||||
|
||||
/* Layout helpers
|
||||
----------------------------------*/
|
||||
.ui-helper-hidden { display: none; }
|
||||
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
|
||||
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
|
||||
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
|
||||
.ui-helper-clearfix:after { clear: both; }
|
||||
.ui-helper-clearfix { zoom: 1; }
|
||||
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
|
||||
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-disabled { cursor: default !important; }
|
||||
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
|
||||
|
||||
|
||||
/*
|
||||
* jQuery UI CSS Framework 1.8.18
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Theming/API
|
||||
*
|
||||
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
|
||||
*/
|
||||
|
||||
|
||||
/* Component containers
|
||||
----------------------------------*/
|
||||
.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; }
|
||||
.ui-widget .ui-widget { font-size: 1em; }
|
||||
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; }
|
||||
.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; }
|
||||
.ui-widget-content a { color: #333333; }
|
||||
.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
|
||||
.ui-widget-header a { color: #ffffff; }
|
||||
|
||||
/* Interaction states
|
||||
----------------------------------*/
|
||||
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; }
|
||||
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; }
|
||||
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; }
|
||||
.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; }
|
||||
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; }
|
||||
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; }
|
||||
.ui-widget :active { outline: none; }
|
||||
|
||||
/* Interaction Cues
|
||||
----------------------------------*/
|
||||
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; }
|
||||
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
|
||||
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; }
|
||||
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; }
|
||||
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; }
|
||||
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
|
||||
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
|
||||
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
|
||||
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
/* states and images */
|
||||
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
|
||||
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); }
|
||||
.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); }
|
||||
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); }
|
||||
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); }
|
||||
|
||||
/* positioning */
|
||||
.ui-icon-carat-1-n { background-position: 0 0; }
|
||||
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
||||
.ui-icon-carat-1-e { background-position: -32px 0; }
|
||||
.ui-icon-carat-1-se { background-position: -48px 0; }
|
||||
.ui-icon-carat-1-s { background-position: -64px 0; }
|
||||
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
||||
.ui-icon-carat-1-w { background-position: -96px 0; }
|
||||
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
||||
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
||||
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
||||
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
||||
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
||||
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
||||
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.ui-icon-extlink { background-position: -32px -80px; }
|
||||
.ui-icon-newwin { background-position: -48px -80px; }
|
||||
.ui-icon-refresh { background-position: -64px -80px; }
|
||||
.ui-icon-shuffle { background-position: -80px -80px; }
|
||||
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.ui-icon-folder-open { background-position: -16px -96px; }
|
||||
.ui-icon-document { background-position: -32px -96px; }
|
||||
.ui-icon-document-b { background-position: -48px -96px; }
|
||||
.ui-icon-note { background-position: -64px -96px; }
|
||||
.ui-icon-mail-closed { background-position: -80px -96px; }
|
||||
.ui-icon-mail-open { background-position: -96px -96px; }
|
||||
.ui-icon-suitcase { background-position: -112px -96px; }
|
||||
.ui-icon-comment { background-position: -128px -96px; }
|
||||
.ui-icon-person { background-position: -144px -96px; }
|
||||
.ui-icon-print { background-position: -160px -96px; }
|
||||
.ui-icon-trash { background-position: -176px -96px; }
|
||||
.ui-icon-locked { background-position: -192px -96px; }
|
||||
.ui-icon-unlocked { background-position: -208px -96px; }
|
||||
.ui-icon-bookmark { background-position: -224px -96px; }
|
||||
.ui-icon-tag { background-position: -240px -96px; }
|
||||
.ui-icon-home { background-position: 0 -112px; }
|
||||
.ui-icon-flag { background-position: -16px -112px; }
|
||||
.ui-icon-calendar { background-position: -32px -112px; }
|
||||
.ui-icon-cart { background-position: -48px -112px; }
|
||||
.ui-icon-pencil { background-position: -64px -112px; }
|
||||
.ui-icon-clock { background-position: -80px -112px; }
|
||||
.ui-icon-disk { background-position: -96px -112px; }
|
||||
.ui-icon-calculator { background-position: -112px -112px; }
|
||||
.ui-icon-zoomin { background-position: -128px -112px; }
|
||||
.ui-icon-zoomout { background-position: -144px -112px; }
|
||||
.ui-icon-search { background-position: -160px -112px; }
|
||||
.ui-icon-wrench { background-position: -176px -112px; }
|
||||
.ui-icon-gear { background-position: -192px -112px; }
|
||||
.ui-icon-heart { background-position: -208px -112px; }
|
||||
.ui-icon-star { background-position: -224px -112px; }
|
||||
.ui-icon-link { background-position: -240px -112px; }
|
||||
.ui-icon-cancel { background-position: 0 -128px; }
|
||||
.ui-icon-plus { background-position: -16px -128px; }
|
||||
.ui-icon-plusthick { background-position: -32px -128px; }
|
||||
.ui-icon-minus { background-position: -48px -128px; }
|
||||
.ui-icon-minusthick { background-position: -64px -128px; }
|
||||
.ui-icon-close { background-position: -80px -128px; }
|
||||
.ui-icon-closethick { background-position: -96px -128px; }
|
||||
.ui-icon-key { background-position: -112px -128px; }
|
||||
.ui-icon-lightbulb { background-position: -128px -128px; }
|
||||
.ui-icon-scissors { background-position: -144px -128px; }
|
||||
.ui-icon-clipboard { background-position: -160px -128px; }
|
||||
.ui-icon-copy { background-position: -176px -128px; }
|
||||
.ui-icon-contact { background-position: -192px -128px; }
|
||||
.ui-icon-image { background-position: -208px -128px; }
|
||||
.ui-icon-video { background-position: -224px -128px; }
|
||||
.ui-icon-script { background-position: -240px -128px; }
|
||||
.ui-icon-alert { background-position: 0 -144px; }
|
||||
.ui-icon-info { background-position: -16px -144px; }
|
||||
.ui-icon-notice { background-position: -32px -144px; }
|
||||
.ui-icon-help { background-position: -48px -144px; }
|
||||
.ui-icon-check { background-position: -64px -144px; }
|
||||
.ui-icon-bullet { background-position: -80px -144px; }
|
||||
.ui-icon-radio-off { background-position: -96px -144px; }
|
||||
.ui-icon-radio-on { background-position: -112px -144px; }
|
||||
.ui-icon-pin-w { background-position: -128px -144px; }
|
||||
.ui-icon-pin-s { background-position: -144px -144px; }
|
||||
.ui-icon-play { background-position: 0 -160px; }
|
||||
.ui-icon-pause { background-position: -16px -160px; }
|
||||
.ui-icon-seek-next { background-position: -32px -160px; }
|
||||
.ui-icon-seek-prev { background-position: -48px -160px; }
|
||||
.ui-icon-seek-end { background-position: -64px -160px; }
|
||||
.ui-icon-seek-start { background-position: -80px -160px; }
|
||||
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
||||
.ui-icon-seek-first { background-position: -80px -160px; }
|
||||
.ui-icon-stop { background-position: -96px -160px; }
|
||||
.ui-icon-eject { background-position: -112px -160px; }
|
||||
.ui-icon-volume-off { background-position: -128px -160px; }
|
||||
.ui-icon-volume-on { background-position: -144px -160px; }
|
||||
.ui-icon-power { background-position: 0 -176px; }
|
||||
.ui-icon-signal-diag { background-position: -16px -176px; }
|
||||
.ui-icon-signal { background-position: -32px -176px; }
|
||||
.ui-icon-battery-0 { background-position: -48px -176px; }
|
||||
.ui-icon-battery-1 { background-position: -64px -176px; }
|
||||
.ui-icon-battery-2 { background-position: -80px -176px; }
|
||||
.ui-icon-battery-3 { background-position: -96px -176px; }
|
||||
.ui-icon-circle-plus { background-position: 0 -192px; }
|
||||
.ui-icon-circle-minus { background-position: -16px -192px; }
|
||||
.ui-icon-circle-close { background-position: -32px -192px; }
|
||||
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.ui-icon-circle-check { background-position: -208px -192px; }
|
||||
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
|
||||
|
||||
/* Misc visuals
|
||||
----------------------------------*/
|
||||
|
||||
/* Corner radius */
|
||||
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
|
||||
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
|
||||
|
||||
/* Overlays */
|
||||
.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); }
|
||||
.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*
|
||||
* jQuery UI Button 1.8.18
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Button#theming
|
||||
*/
|
||||
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: hidden; *overflow: visible; } /* the overflow property removes extra width in IE */
|
||||
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
|
||||
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
|
||||
.ui-button-icons-only { width: 3.4em; }
|
||||
button.ui-button-icons-only { width: 3.7em; }
|
||||
|
||||
/*button text element */
|
||||
.ui-button .ui-button-text { display: block; line-height: 1.4; }
|
||||
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
|
||||
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
|
||||
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
|
||||
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
|
||||
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
|
||||
/* no icon support for input elements, provide padding by default */
|
||||
input.ui-button { padding: .4em 1em; }
|
||||
|
||||
/*button icon element(s) */
|
||||
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
|
||||
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
|
||||
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
|
||||
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
||||
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
|
||||
|
||||
/*button sets*/
|
||||
.ui-buttonset { margin-right: 7px; }
|
||||
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
|
||||
|
||||
/* workarounds */
|
||||
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
|
||||
/*
|
||||
* jQuery UI Slider 1.8.18
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Slider#theming
|
||||
*/
|
||||
.ui-slider { position: relative; text-align: left; }
|
||||
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
|
||||
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
|
||||
|
||||
.ui-slider-horizontal { height: .8em; }
|
||||
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
|
||||
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
|
||||
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
|
||||
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
|
||||
|
||||
.ui-slider-vertical { width: .8em; height: 100px; }
|
||||
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
|
||||
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
|
||||
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
|
||||
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
|
||||
* jQuery UI Datepicker 1.8.18
|
||||
*
|
||||
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* http://docs.jquery.com/UI/Datepicker#theming
|
||||
*/
|
||||
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
|
||||
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
|
||||
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
|
||||
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
|
||||
.ui-datepicker .ui-datepicker-prev { left:2px; }
|
||||
.ui-datepicker .ui-datepicker-next { right:2px; }
|
||||
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
|
||||
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
|
||||
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
|
||||
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
|
||||
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
|
||||
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
|
||||
.ui-datepicker select.ui-datepicker-month,
|
||||
.ui-datepicker select.ui-datepicker-year { width: 49%;}
|
||||
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
|
||||
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
|
||||
.ui-datepicker td { border: 0; padding: 1px; }
|
||||
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
|
||||
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
|
||||
|
||||
/* with multiple calendars */
|
||||
.ui-datepicker.ui-datepicker-multi { width:auto; }
|
||||
.ui-datepicker-multi .ui-datepicker-group { float:left; }
|
||||
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
|
||||
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
|
||||
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
|
||||
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
|
||||
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
|
||||
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
|
||||
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
|
||||
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
|
||||
|
||||
/* RTL support */
|
||||
.ui-datepicker-rtl { direction: rtl; }
|
||||
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
|
||||
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
|
||||
|
||||
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
|
||||
.ui-datepicker-cover {
|
||||
display: none; /*sorry for IE5*/
|
||||
display/**/: block; /*sorry for IE5*/
|
||||
position: absolute; /*must have*/
|
||||
z-index: -1; /*must have*/
|
||||
filter: mask(); /*must have*/
|
||||
top: -4px; /*must have*/
|
||||
left: -4px; /*must have*/
|
||||
width: 200px; /*must have*/
|
||||
height: 200px; /*must have*/
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
<?php
|
||||
|
||||
## FIXME - fewer includes!
|
||||
|
||||
include_once("../includes/defaults.inc.php");
|
||||
include_once("../config.php");
|
||||
include_once("../includes/common.php");
|
||||
include_once("../includes/dbFacile.php");
|
||||
include_once("../includes/rewrites.php");
|
||||
include_once("includes/functions.inc.php");
|
||||
include_once("includes/authenticate.inc.php");
|
||||
|
||||
include_once("../includes/snmp.inc.php");
|
||||
|
||||
if (is_numeric($_GET['id']) && ($config['allow_unauth_graphs'] || port_permitted($_GET['id'])))
|
||||
{
|
||||
$port = get_port_by_id($_GET['id']);
|
||||
$device = device_by_id_cache($port['device_id']);
|
||||
$title = generate_device_link($device);
|
||||
$title .= " :: Port ".generate_port_link($port);
|
||||
$auth = TRUE;
|
||||
}
|
||||
|
||||
$in = snmp_get($device, "ifInOctets.".$port['ifIndex'], "-OUqnv", "IF-MIB");
|
||||
$out = snmp_get($device, "ifOutOctets.".$port['ifIndex'], "-OUqnv", "IF-MIB");
|
||||
|
||||
$time = time();
|
||||
|
||||
printf("%lf|%s|%s\n", time(), $in, $out);
|
||||
|
||||
?>
|
||||
@@ -1,364 +0,0 @@
|
||||
<?php
|
||||
/*
|
||||
Originally part of m0n0wall (http://m0n0.ch/wall)
|
||||
|
||||
Copyright (C) 2004-2006 T. Lechat <dev@lechat.org>, Manuel Kasper <mk@neon1.net>
|
||||
and Jonathan Watt <jwatt@jwatt.org>.
|
||||
All rights reserved.
|
||||
|
||||
*/
|
||||
|
||||
include_once("../includes/defaults.inc.php");
|
||||
include_once("../config.php");
|
||||
include_once("../includes/common.php");
|
||||
include_once("../includes/dbFacile.php");
|
||||
include_once("../includes/rewrites.php");
|
||||
include_once("includes/functions.inc.php");
|
||||
include_once("includes/authenticate.inc.php");
|
||||
|
||||
include_once("../includes/snmp.inc.php");
|
||||
|
||||
if (is_numeric($_GET['id']) && ($config['allow_unauth_graphs'] || port_permitted($_GET['id'])))
|
||||
{
|
||||
$port = get_port_by_id($_GET['id']);
|
||||
$device = device_by_id_cache($port['device_id']);
|
||||
$title = generate_device_link($device);
|
||||
$title .= " :: Port ".generate_port_link($port);
|
||||
$auth = TRUE;
|
||||
} else {
|
||||
|
||||
echo("Unauthenticad");
|
||||
die;
|
||||
|
||||
}
|
||||
|
||||
header("Content-type: image/svg+xml");
|
||||
|
||||
/********** HTTP GET Based Conf ***********/
|
||||
$ifnum=@$port['ifIndex']; // BSD / SNMP interface name / number
|
||||
$ifname=@$port['ifDescr']; //Interface name that will be showed on top right of graph
|
||||
$hostname=shorthost($device['hostname']);
|
||||
|
||||
if($_GET['title']) { $ifname = $_GET['title']; }
|
||||
|
||||
/********* Other conf *******/
|
||||
$scale_type="follow"; //Autoscale default setup : "up" = only increase scale; "follow" = increase and decrease scale according to current graphed datas
|
||||
$nb_plot=240; //NB plot in graph
|
||||
|
||||
if(is_numeric($_GET['interval'])) {
|
||||
$time_interval=$_GET['interval'];
|
||||
} else {
|
||||
$time_interval=1; //Refresh time Interval
|
||||
}
|
||||
|
||||
$fetch_link = "data.php?id=".$_GET[id];
|
||||
|
||||
//SVG attributes
|
||||
$attribs['axis']='fill="black" stroke="black"';
|
||||
$attribs['in']='fill="green" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="7"';
|
||||
$attribs['out']='fill="blue" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="7"';
|
||||
$attribs['graph_in']='fill="none" stroke="green" stroke-opacity="0.8"';
|
||||
$attribs['graph_out']='fill="none" stroke="blue" stroke-opacity="0.8"';
|
||||
$attribs['legend']='fill="black" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="4"';
|
||||
$attribs['graphname']='fill="#435370" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="9"';
|
||||
$attribs['hostname']='fill="#435370" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="6"';
|
||||
$attribs['grid_txt']='fill="gray" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="6"';
|
||||
$attribs['grid']='stroke="gray" stroke-opacity="0.5"';
|
||||
$attribs['switch_unit']='fill="#435370" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="4" text-decoration="underline"';
|
||||
$attribs['switch_scale']='fill="#435370" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="4" text-decoration="underline"';
|
||||
$attribs['error']='fill="blue" font-family="Arial" font-size="4"';
|
||||
$attribs['collect_initial']='fill="gray" font-family="Tahoma, Verdana, Arial, Helvetica, sans-serif" font-size="4"';
|
||||
|
||||
//Error text if we cannot fetch data : depends on which method is used
|
||||
$error_text = "Cannot get data about interface $ifnum";
|
||||
|
||||
$height=125; //SVG internal height : do not modify
|
||||
$width=300; //SVG internal width : do not modify
|
||||
|
||||
/********* Graph DATA **************/
|
||||
print('<?xml version="1.0" encoding="iso-8859-1"?>' . "\n");?>
|
||||
<svg width="100%" height="100%" viewBox="0 0 <?php echo("$width $height") ?>" preserveAspectRatio="none" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="init(evt)">
|
||||
<g id="graph">
|
||||
<rect id="bg" x1="0" y1="0" width="100%" height="100%" fill="white"/>
|
||||
<line id="axis_x" x1="0" y1="0" x2="0" y2="100%" <?php echo ($attribs['axis']) ?>/>
|
||||
<line id="axis_y" x1="0" y1="100%" x2="100%" y2="100%" <?php echo($attribs['axis']) ?>/>
|
||||
<path id="graph_out" d="M0 <?php echo($height) ?> L 0 <?php echo($height . '" ' . $attribs['graph_out']) ?>/>
|
||||
<path id="graph_in" d="M0 <?php echo($height) ?> L 0 <?php echo($height . '" ' . $attribs['graph_in']) ?>/>
|
||||
<path id="grid" d="M0 <?php echo($height/4*1) ?> L <?php echo($width) ?> <?php echo($height/4*1) ?> M0 <?php echo($height/4*2) ?> L <?php echo($width) ?> <?php echo($height/4*2) ?> M0 <?php echo ($height/4*3) ?> L <?php echo($width . ' ' . ($height/4*3)) ?>" <?php echo($attribs['grid'])?>/>
|
||||
<text id="grid_txt1" x="<?php echo($width) ?>" y="<?php echo($height/4*1) ?>" <?php echo($attribs['grid_txt']) ?> text-anchor="end"> </text>
|
||||
<text id="grid_txt2" x="<?php echo($width) ?>" y="<?php echo($height/4*2) ?>" <?php echo($attribs['grid_txt']) ?> text-anchor="end"> </text>
|
||||
<text id="grid_txt3" x="<?php echo($width) ?>" y="<?php echo($height/4*3) ?>" <?php echo($attribs['grid_txt']) ?> text-anchor="end"> </text>
|
||||
<text id="graph_in_lbl" x="5" y="8" <?php echo($attribs['in']) ?>>In</text>
|
||||
<text id="graph_out_lbl" x="5" y="16" <?php echo($attribs['out']) ?>>Out</text>
|
||||
<text id="graph_in_txt" x="20" y="8" <?php echo($attribs['in']) ?>> </text>
|
||||
<text id="graph_out_txt" x="20" y="16" <?php echo($attribs['out']) ?>> </text>
|
||||
<text id="ifname" x="<?php echo($width-2) ?>" y="8" <?php echo($attribs['graphname']) ?> text-anchor="end"><?php echo($ifname) ?></text>
|
||||
<text id="hostname" x="<?php echo($width-2) ?>" y="14" <?php echo($attribs['hostname']) ?> text-anchor="end"><?php echo($hostname) ?></text>
|
||||
<text id="switch_unit" x="<?php echo($width*0.55) ?>" y="5" <?php echo($attribs['switch_unit']) ?>>Switch to bytes/s</text>
|
||||
<text id="switch_scale" x="<?php echo($width*0.55) ?>" y="11" <?php echo($attribs['switch_scale']) ?>>AutoScale (<?php echo($scale_type) ?>)</text>
|
||||
<text id="datetime" x="<?php echo($width*0.33) ?>" y="5" <?php echo($attribs['legend']) ?>> </text>
|
||||
<text id="graphlast" x="<?php echo($width*0.55) ?>" y="17" <?php echo($attribs['legend']) ?>>Graph shows last <?php echo($time_interval*$nb_plot) ?> seconds</text>
|
||||
<polygon id="axis_arrow_x" <?php echo($attribs['axis']) ?> points="<?php echo($width . "," . $height) ?> <?php echo(($width-2) . "," . ($height-2)) ?> <?php echo(($width-2) . "," . $height) ?>"/>
|
||||
<text id="error" x="<?php echo($width*0.5) ?>" y="<?php echo($height*0.5) ?>" visibility="hidden" <?php echo($attribs['error']) ?> text-anchor="middle"><?php echo($error_text) ?></text>
|
||||
<text id="collect_initial" x="<?php echo($width*0.5) ?>" y="<?php echo($height*0.5) ?>" visibility="hidden" <?php echo($attribs['collect_initial']) ?> text-anchor="middle">Collecting initial data, please wait...</text>
|
||||
</g>
|
||||
<script type="text/ecmascript">
|
||||
<![CDATA[
|
||||
|
||||
/**
|
||||
* getURL is a proprietary Adobe function, but it's simplicity has made it very
|
||||
* popular. If getURL is undefined we spin our own by wrapping XMLHttpRequest.
|
||||
*/
|
||||
if (typeof getURL == 'undefined') {
|
||||
getURL = function(url, callback) {
|
||||
if (!url)
|
||||
throw 'No URL for getURL';
|
||||
|
||||
try {
|
||||
if (typeof callback.operationComplete == 'function')
|
||||
callback = callback.operationComplete;
|
||||
} catch (e) {}
|
||||
if (typeof callback != 'function')
|
||||
throw 'No callback function for getURL';
|
||||
|
||||
var http_request = null;
|
||||
if (typeof XMLHttpRequest != 'undefined') {
|
||||
http_request = new XMLHttpRequest();
|
||||
}
|
||||
else if (typeof ActiveXObject != 'undefined'){
|
||||
try {
|
||||
http_request = new ActiveXObject('Msxml2.XMLHTTP');
|
||||
} catch (e) {
|
||||
try {
|
||||
http_request = new ActiveXObject('Microsoft.XMLHTTP');
|
||||
} catch (e) {}
|
||||
}
|
||||
}
|
||||
if (!http_request)
|
||||
throw 'Both getURL and XMLHttpRequest are undefined';
|
||||
|
||||
http_request.onreadystatechange = function() {
|
||||
if (http_request.readyState == 4) {
|
||||
callback( { success : true,
|
||||
content : http_request.responseText,
|
||||
contentType : http_request.getResponseHeader("Content-Type") } );
|
||||
}
|
||||
}
|
||||
http_request.open('GET', url, true);
|
||||
http_request.send(null);
|
||||
}
|
||||
}
|
||||
|
||||
var SVGDoc = null;
|
||||
var last_ifin = 0;
|
||||
var last_ifout = 0;
|
||||
var last_ugmt = 0;
|
||||
var max = 0;
|
||||
var plot_in = new Array();
|
||||
var plot_out = new Array();
|
||||
|
||||
var max_num_points = <?php echo($nb_plot) ?>; // maximum number of plot data points
|
||||
var step = <?php echo($width) ?> / max_num_points ;
|
||||
var unit = 'bits';
|
||||
var scale_type = '<?php echo($scale_type) ?>';
|
||||
|
||||
function init(evt) {
|
||||
SVGDoc = evt.target.ownerDocument;
|
||||
SVGDoc.getElementById("switch_unit").addEventListener("mousedown", switch_unit, false);
|
||||
SVGDoc.getElementById("switch_scale").addEventListener("mousedown", switch_scale, false);
|
||||
|
||||
fetch_data();
|
||||
}
|
||||
|
||||
function switch_unit(event)
|
||||
{
|
||||
SVGDoc.getElementById('switch_unit').firstChild.data = 'Switch to ' + unit + '/s';
|
||||
unit = (unit == 'bits') ? 'bytes' : 'bits';
|
||||
}
|
||||
|
||||
function switch_scale(event)
|
||||
{
|
||||
scale_type = (scale_type == 'up') ? 'follow' : 'up';
|
||||
SVGDoc.getElementById('switch_scale').firstChild.data = 'AutoScale (' + scale_type + ')';
|
||||
}
|
||||
|
||||
function fetch_data() {
|
||||
getURL('<?php echo($fetch_link) ?>', plot_data);
|
||||
}
|
||||
|
||||
function plot_data(obj) {
|
||||
// Show datetimelegend
|
||||
var now = new Date();
|
||||
var datetime = (now.getMonth()+1) + "/" + now.getDate() + "/" + now.getFullYear() + ' ' +
|
||||
LZ(now.getHours()) + ":" + LZ(now.getMinutes()) + ":" + LZ(now.getSeconds());
|
||||
SVGDoc.getElementById('datetime').firstChild.data = datetime;
|
||||
|
||||
if (!obj.success)
|
||||
return handle_error(); // getURL failed to get data
|
||||
|
||||
var t = obj.content.split("|");
|
||||
var ugmt = parseFloat(t[0]); // ugmt is an unixtimestamp style
|
||||
var ifin = parseInt(t[1]); // number of bytes received by the interface
|
||||
var ifout = parseInt(t[2]); // number of bytes sent by the interface
|
||||
var scale;
|
||||
|
||||
if (!isNumber(ifin) || !isNumber(ifout))
|
||||
return handle_error();
|
||||
|
||||
var diff_ugmt = ugmt - last_ugmt;
|
||||
var diff_ifin = ifin - last_ifin;
|
||||
var diff_ifout = ifout - last_ifout;
|
||||
|
||||
if (diff_ugmt == 0)
|
||||
diff_ugmt = 1; /* avoid division by zero */
|
||||
|
||||
last_ugmt = ugmt;
|
||||
last_ifin = ifin;
|
||||
last_ifout = ifout;
|
||||
|
||||
switch (plot_in.length) {
|
||||
case 0:
|
||||
SVGDoc.getElementById("collect_initial").setAttributeNS(null, 'visibility', 'visible');
|
||||
plot_in[0] = diff_ifin / diff_ugmt;
|
||||
plot_out[0] = diff_ifout / diff_ugmt;
|
||||
setTimeout('fetch_data()',<?php echo(1000*$time_interval) ?>);
|
||||
return;
|
||||
case 1:
|
||||
SVGDoc.getElementById("collect_initial").setAttributeNS(null, 'visibility', 'hidden');
|
||||
break;
|
||||
case max_num_points:
|
||||
// shift plot to left if the maximum number of plot points has been reached
|
||||
var i = 0;
|
||||
while (i < max_num_points) {
|
||||
plot_in[i] = plot_in[i+1];
|
||||
plot_out[i] = plot_out[++i];
|
||||
}
|
||||
plot_in.length--;
|
||||
plot_out.length--;
|
||||
}
|
||||
|
||||
plot_in[plot_in.length] = diff_ifin / diff_ugmt;
|
||||
plot_out[plot_out.length]= diff_ifout / diff_ugmt;
|
||||
var index_plot = plot_in.length - 1;
|
||||
|
||||
SVGDoc.getElementById('graph_in_txt').firstChild.data = formatSpeed(plot_in[index_plot], unit);
|
||||
SVGDoc.getElementById('graph_out_txt').firstChild.data = formatSpeed(plot_out[index_plot], unit);
|
||||
|
||||
/* determine peak for sensible scaling */
|
||||
if (scale_type == 'up') {
|
||||
if (plot_in[index_plot] > max)
|
||||
max = plot_in[index_plot];
|
||||
if (plot_out[index_plot] > max)
|
||||
max = plot_out[index_plot];
|
||||
}
|
||||
else if (scale_type == 'follow') {
|
||||
i = 0;
|
||||
max = 0;
|
||||
while (i < plot_in.length) {
|
||||
if (plot_in[i] > max)
|
||||
max = plot_in[i];
|
||||
if (plot_out[i] > max)
|
||||
max = plot_out[i];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
var rmax; // max, rounded up
|
||||
|
||||
if (unit == 'bits') {
|
||||
/* round up max, such that
|
||||
100 kbps -> 200 kbps -> 400 kbps -> 800 kbps -> 1 Mbps -> 2 Mbps -> ... */
|
||||
rmax = 12500;
|
||||
i = 0;
|
||||
while (max > rmax) {
|
||||
i++;
|
||||
if (i && (i % 4 == 0))
|
||||
rmax *= 1.25;
|
||||
else
|
||||
rmax *= 2;
|
||||
}
|
||||
} else {
|
||||
/* round up max, such that
|
||||
10 KB/s -> 20 KB/s -> 40 KB/s -> 80 KB/s -> 100 KB/s -> 200 KB/s -> 400 KB/s -> 800 KB/s -> 1 MB/s ... */
|
||||
rmax = 10240;
|
||||
i = 0;
|
||||
while (max > rmax) {
|
||||
i++;
|
||||
if (i && (i % 4 == 0))
|
||||
rmax *= 1.25;
|
||||
else
|
||||
rmax *= 2;
|
||||
|
||||
if (i == 8)
|
||||
rmax *= 1.024;
|
||||
}
|
||||
}
|
||||
|
||||
scale = <?php echo($height) ?> / rmax;
|
||||
|
||||
/* change labels accordingly */
|
||||
SVGDoc.getElementById('grid_txt1').firstChild.data = formatSpeed(3*rmax/4,unit);
|
||||
SVGDoc.getElementById('grid_txt2').firstChild.data = formatSpeed(2*rmax/4,unit);
|
||||
SVGDoc.getElementById('grid_txt3').firstChild.data = formatSpeed(rmax/4,unit);
|
||||
|
||||
var path_in = "M 0 " + (<?php echo($height) ?> - (plot_in[0] * scale));
|
||||
var path_out = "M 0 " + (<?php echo($height) ?> - (plot_out[0] * scale));
|
||||
for (i = 1; i < plot_in.length; i++)
|
||||
{
|
||||
var x = step * i;
|
||||
var y_in = <?php echo($height) ?> - (plot_in[i] * scale);
|
||||
var y_out = <?php echo($height) ?> - (plot_out[i] * scale);
|
||||
path_in += " L" + x + " " + y_in;
|
||||
path_out += " L" + x + " " + y_out;
|
||||
}
|
||||
|
||||
SVGDoc.getElementById('error').setAttributeNS(null, 'visibility', 'hidden');
|
||||
SVGDoc.getElementById('graph_in').setAttributeNS(null, 'd', path_in);
|
||||
SVGDoc.getElementById('graph_out').setAttributeNS(null, 'd', path_out);
|
||||
|
||||
setTimeout('fetch_data()',<?php echo(1000*$time_interval) ?>);
|
||||
}
|
||||
|
||||
function handle_error() {
|
||||
SVGDoc.getElementById("error").setAttributeNS(null, 'visibility', 'visible');
|
||||
setTimeout('fetch_data()',<?php echo(1000*$time_interval) ?>);
|
||||
}
|
||||
|
||||
function isNumber(a) {
|
||||
return typeof a == 'number' && isFinite(a);
|
||||
}
|
||||
|
||||
function formatSpeed(speed, unit) {
|
||||
if (unit == 'bits')
|
||||
return formatSpeedBits(speed);
|
||||
if (unit == 'bytes')
|
||||
return formatSpeedBytes(speed);
|
||||
}
|
||||
|
||||
function formatSpeedBits(speed) {
|
||||
// format speed in bits/sec, input: bytes/sec
|
||||
if (speed < 125000)
|
||||
return Math.round(speed / 125) + " Kbps";
|
||||
if (speed < 125000000)
|
||||
return Math.round(speed / 1250)/100 + " Mbps";
|
||||
// else
|
||||
return Math.round(speed / 1250000)/100 + " Gbps"; /* wow! */
|
||||
}
|
||||
|
||||
function formatSpeedBytes(speed) {
|
||||
// format speed in bytes/sec, input: bytes/sec
|
||||
if (speed < 1048576)
|
||||
return Math.round(speed / 10.24)/100 + " KB/s";
|
||||
if (speed < 1073741824)
|
||||
return Math.round(speed / 10485.76)/100 + " MB/s";
|
||||
// else
|
||||
return Math.round(speed / 10737418.24)/100 + " GB/s"; /* wow! */
|
||||
}
|
||||
|
||||
function LZ(x) {
|
||||
return (x < 0 || x > 9 ? "" : "0") + x;
|
||||
}
|
||||
|
||||
]]>
|
||||
</script>
|
||||
</svg>
|
||||
@@ -1,65 +0,0 @@
|
||||
<?php
|
||||
|
||||
function utime()
|
||||
{
|
||||
$time = explode(" ", microtime());
|
||||
$usec = (double)$time[0];
|
||||
$sec = (double)$time[1];
|
||||
return $sec + $usec;
|
||||
}
|
||||
|
||||
$start = utime();
|
||||
|
||||
include_once("Net/IPv4.php");
|
||||
|
||||
if (isset($_GET['debug']))
|
||||
{
|
||||
$debug = TRUE;
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_startup_errors', 0);
|
||||
ini_set('log_errors', 0);
|
||||
ini_set('error_reporting', E_ALL);
|
||||
}
|
||||
else
|
||||
{
|
||||
$debug = FALSE;
|
||||
ini_set('display_errors', 0);
|
||||
ini_set('display_startup_errors', 0);
|
||||
ini_set('log_errors', 0);
|
||||
ini_set('error_reporting', 0);
|
||||
}
|
||||
|
||||
include_once("../includes/defaults.inc.php");
|
||||
include_once("../config.php");
|
||||
include_once("../includes/common.php");
|
||||
include_once("../includes/dbFacile.php");
|
||||
include_once("../includes/rewrites.php");
|
||||
include_once("includes/functions.inc.php");
|
||||
include_once("../includes/rrdtool.inc.php");
|
||||
include_once("includes/authenticate.inc.php");
|
||||
|
||||
if (isset($config['allow_unauth_graphs']) && $config['allow_unauth_graphs'])
|
||||
{
|
||||
$auth = "1"; ## hardcode auth for all with config function
|
||||
} else {
|
||||
if (!$_SESSION['authenticated'])
|
||||
{
|
||||
graph_error("Session not authenticated");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
include("includes/graphs/graph.inc.php");
|
||||
|
||||
$end = utime(); $run = $end - $start;;
|
||||
|
||||
if($debug) { echo("<br />Runtime ".$run." secs");
|
||||
|
||||
echo('<br />MySQL: Cell '.($db_stats['fetchcell']+0).'/'.round($db_stats['fetchcell_sec']+0,3).'s'.
|
||||
' Row '.($db_stats['fetchrow']+0). '/'.round($db_stats['fetchrow_sec']+0,3).'s'.
|
||||
' Rows '.($db_stats['fetchrows']+0).'/'.round($db_stats['fetchrows_sec']+0,3).'s'.
|
||||
' Column '.($db_stats['fetchcol']+0). '/'.round($db_stats['fetchcol_sec']+0,3).'s');
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
Before Width: | Height: | Size: 781 B |
|
Before Width: | Height: | Size: 733 B |
|
Before Width: | Height: | Size: 523 B |
|
Before Width: | Height: | Size: 464 B |
|
Before Width: | Height: | Size: 619 B |
|
Before Width: | Height: | Size: 524 B |
|
Before Width: | Height: | Size: 610 B |
|
Before Width: | Height: | Size: 533 B |
|
Before Width: | Height: | Size: 703 B |
|
Before Width: | Height: | Size: 656 B |
|
Before Width: | Height: | Size: 467 B |
|
Before Width: | Height: | Size: 592 B |
|
Before Width: | Height: | Size: 605 B |
|
Before Width: | Height: | Size: 714 B |
|
Before Width: | Height: | Size: 612 B |
|
Before Width: | Height: | Size: 581 B |
|
Before Width: | Height: | Size: 634 B |
|
Before Width: | Height: | Size: 685 B |
|
Before Width: | Height: | Size: 670 B |
|
Before Width: | Height: | Size: 656 B |
|
Before Width: | Height: | Size: 701 B |
|
Before Width: | Height: | Size: 487 B |
|
Before Width: | Height: | Size: 525 B |
|
Before Width: | Height: | Size: 585 B |
|
Before Width: | Height: | Size: 478 B |
|
Before Width: | Height: | Size: 547 B |
|
Before Width: | Height: | Size: 581 B |
|
Before Width: | Height: | Size: 510 B |
|
Before Width: | Height: | Size: 483 B |
|
Before Width: | Height: | Size: 520 B |
|
Before Width: | Height: | Size: 432 B |
|
Before Width: | Height: | Size: 492 B |
|
Before Width: | Height: | Size: 493 B |
|
Before Width: | Height: | Size: 576 B |
|
Before Width: | Height: | Size: 555 B |
|
Before Width: | Height: | Size: 476 B |
|
Before Width: | Height: | Size: 473 B |
|
Before Width: | Height: | Size: 465 B |
|
Before Width: | Height: | Size: 426 B |
|
Before Width: | Height: | Size: 507 B |
|
Before Width: | Height: | Size: 582 B |
|
Before Width: | Height: | Size: 677 B |