From 1068c3e755bc49d847491a931052933acd86ca0c Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 14 Dec 2017 15:55:27 +0000 Subject: [PATCH 01/21] Start Core Update 118 Signed-off-by: Michael Tremer --- config/rootfiles/core/{117 => 118}/exclude | 0 config/rootfiles/core/118/filelists/files | 2 + config/rootfiles/core/{117 => 118}/meta | 0 config/rootfiles/core/118/update.sh | 62 +++++++++++++++++++ config/rootfiles/oldcore/117/exclude | 30 +++++++++ .../{core => oldcore}/117/filelists/files | 0 .../117/filelists/i586/openssl-sse2 | 0 .../{core => oldcore}/117/filelists/openssl | 0 .../117/filelists/strongswan | 0 .../{core => oldcore}/117/filelists/sudo | 0 config/rootfiles/oldcore/117/meta | 1 + .../rootfiles/{core => oldcore}/117/update.sh | 0 make.sh | 2 +- 13 files changed, 96 insertions(+), 1 deletion(-) rename config/rootfiles/core/{117 => 118}/exclude (100%) create mode 100644 config/rootfiles/core/118/filelists/files rename config/rootfiles/core/{117 => 118}/meta (100%) create mode 100644 config/rootfiles/core/118/update.sh create mode 100644 config/rootfiles/oldcore/117/exclude rename config/rootfiles/{core => oldcore}/117/filelists/files (100%) rename config/rootfiles/{core => oldcore}/117/filelists/i586/openssl-sse2 (100%) rename config/rootfiles/{core => oldcore}/117/filelists/openssl (100%) rename config/rootfiles/{core => oldcore}/117/filelists/strongswan (100%) rename config/rootfiles/{core => oldcore}/117/filelists/sudo (100%) create mode 100644 config/rootfiles/oldcore/117/meta rename config/rootfiles/{core => oldcore}/117/update.sh (100%) diff --git a/config/rootfiles/core/117/exclude b/config/rootfiles/core/118/exclude similarity index 100% rename from config/rootfiles/core/117/exclude rename to config/rootfiles/core/118/exclude diff --git a/config/rootfiles/core/118/filelists/files b/config/rootfiles/core/118/filelists/files new file mode 100644 index 000000000..409e5fe8a --- /dev/null +++ b/config/rootfiles/core/118/filelists/files @@ -0,0 +1,2 @@ +etc/system-release +etc/issue diff --git a/config/rootfiles/core/117/meta b/config/rootfiles/core/118/meta similarity index 100% rename from config/rootfiles/core/117/meta rename to config/rootfiles/core/118/meta diff --git a/config/rootfiles/core/118/update.sh b/config/rootfiles/core/118/update.sh new file mode 100644 index 000000000..b5086682a --- /dev/null +++ b/config/rootfiles/core/118/update.sh @@ -0,0 +1,62 @@ +#!/bin/bash +############################################################################ +# # +# This file is part of the IPFire Firewall. # +# # +# IPFire 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. # +# # +# IPFire 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 IPFire; if not, write to the Free Software # +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # +# # +# Copyright (C) 2017 IPFire-Team . # +# # +############################################################################ +# +. /opt/pakfire/lib/functions.sh +/usr/local/bin/backupctrl exclude >/dev/null 2>&1 + +core=118 + +# Remove old core updates from pakfire cache to save space... +for (( i=1; i<=$core; i++ )); do + rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire +done + +# Stop services + +# Extract files +extract_files + +# update linker config +ldconfig + +# Update Language cache +/usr/local/bin/update-lang-cache + +# Start services + +# This update need a reboot... +#touch /var/run/need_reboot + +# Finish +/etc/init.d/fireinfo start +sendprofile + +# Update grub config to display new core version +if [ -e /boot/grub/grub.cfg ]; then + grub-mkconfig -o /boot/grub/grub.cfg +fi + +sync + +# Don't report the exitcode last command +exit 0 diff --git a/config/rootfiles/oldcore/117/exclude b/config/rootfiles/oldcore/117/exclude new file mode 100644 index 000000000..d6fd053b6 --- /dev/null +++ b/config/rootfiles/oldcore/117/exclude @@ -0,0 +1,30 @@ +boot/config.txt +boot/grub/grub.cfg +boot/grub/grubenv +etc/alternatives +etc/collectd.custom +etc/default/grub +etc/ipsec.conf +etc/ipsec.secrets +etc/ipsec.user.conf +etc/ipsec.user.secrets +etc/localtime +etc/shadow +etc/snort/snort.conf +etc/ssh/ssh_config +etc/ssh/sshd_config +etc/ssl/openssl.cnf +etc/sudoers +etc/sysconfig/firewall.local +etc/sysconfig/rc.local +etc/udev/rules.d/30-persistent-network.rules +srv/web/ipfire/html/proxy.pac +var/ipfire/dma +var/ipfire/time +var/ipfire/ovpn +var/lib/alternatives +var/log/cache +var/log/dhcpcd.log +var/log/messages +var/state/dhcp/dhcpd.leases +var/updatecache diff --git a/config/rootfiles/core/117/filelists/files b/config/rootfiles/oldcore/117/filelists/files similarity index 100% rename from config/rootfiles/core/117/filelists/files rename to config/rootfiles/oldcore/117/filelists/files diff --git a/config/rootfiles/core/117/filelists/i586/openssl-sse2 b/config/rootfiles/oldcore/117/filelists/i586/openssl-sse2 similarity index 100% rename from config/rootfiles/core/117/filelists/i586/openssl-sse2 rename to config/rootfiles/oldcore/117/filelists/i586/openssl-sse2 diff --git a/config/rootfiles/core/117/filelists/openssl b/config/rootfiles/oldcore/117/filelists/openssl similarity index 100% rename from config/rootfiles/core/117/filelists/openssl rename to config/rootfiles/oldcore/117/filelists/openssl diff --git a/config/rootfiles/core/117/filelists/strongswan b/config/rootfiles/oldcore/117/filelists/strongswan similarity index 100% rename from config/rootfiles/core/117/filelists/strongswan rename to config/rootfiles/oldcore/117/filelists/strongswan diff --git a/config/rootfiles/core/117/filelists/sudo b/config/rootfiles/oldcore/117/filelists/sudo similarity index 100% rename from config/rootfiles/core/117/filelists/sudo rename to config/rootfiles/oldcore/117/filelists/sudo diff --git a/config/rootfiles/oldcore/117/meta b/config/rootfiles/oldcore/117/meta new file mode 100644 index 000000000..d547fa86f --- /dev/null +++ b/config/rootfiles/oldcore/117/meta @@ -0,0 +1 @@ +DEPS="" diff --git a/config/rootfiles/core/117/update.sh b/config/rootfiles/oldcore/117/update.sh similarity index 100% rename from config/rootfiles/core/117/update.sh rename to config/rootfiles/oldcore/117/update.sh diff --git a/make.sh b/make.sh index 8c9303c85..de119222b 100755 --- a/make.sh +++ b/make.sh @@ -25,7 +25,7 @@ NAME="IPFire" # Software name SNAME="ipfire" # Short name VERSION="2.19" # Version number -CORE="117" # Core Level (Filename) +CORE="118" # Core Level (Filename) PAKFIRE_CORE="117" # Core Level (PAKFIRE) GIT_BRANCH=`git rev-parse --abbrev-ref HEAD` # Git Branch SLOGAN="www.ipfire.org" # Software slogan From 7ebf5dfe4fabc1b728d58903c46663003fb8a357 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20M=C3=BCller?= Date: Fri, 8 Dec 2017 15:44:02 +0100 Subject: [PATCH 02/21] update tor to 0.3.1.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Release Notes: https://gitweb.torproject.org/tor.git/plain/ReleaseNotes?id=tor-0.3.1.9 Signed-off-by: Peter Müller Signed-off-by: Michael Tremer --- lfs/tor | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lfs/tor b/lfs/tor index 6ca79f68a..af84d186e 100644 --- a/lfs/tor +++ b/lfs/tor @@ -24,7 +24,7 @@ include Config -VER = 0.3.1.7 +VER = 0.3.1.9 THISAPP = tor-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,7 +32,7 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = tor -PAK_VER = 24 +PAK_VER = 25 DEPS = "" @@ -44,7 +44,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = ec7c9f588c9e1a42c09bcc097a1e55eb +$(DL_FILE)_MD5 = 585e62d086ae7df7cd873f735d726118 install : $(TARGET) From ba7cd7b62404e5148cff6079969b6069e3ee2358 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20M=C3=BCller?= Date: Tue, 5 Dec 2017 14:48:01 +0100 Subject: [PATCH 03/21] openssh: update to 7.6p1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marcel Lorenz Reviewed-by: Peter Müller Signed-off-by: Michael Tremer --- lfs/openssh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/openssh b/lfs/openssh index 20a5dc115..3429a7542 100644 --- a/lfs/openssh +++ b/lfs/openssh @@ -24,7 +24,7 @@ include Config -VER = 7.4p1 +VER = 7.6p1 THISAPP = openssh-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = b2db2a83caf66a208bb78d6d287cdaa3 +$(DL_FILE)_MD5 = 06a88699018e5fef13d4655abfed1f63 install : $(TARGET) From 1b5da982313695f51eb682b1a8e7d2004cda45e0 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 14 Dec 2017 16:44:44 +0000 Subject: [PATCH 04/21] core118: Ship updated openssh Signed-off-by: Michael Tremer --- config/rootfiles/core/118/filelists/openssh | 1 + 1 file changed, 1 insertion(+) create mode 120000 config/rootfiles/core/118/filelists/openssh diff --git a/config/rootfiles/core/118/filelists/openssh b/config/rootfiles/core/118/filelists/openssh new file mode 120000 index 000000000..d8c77fd8e --- /dev/null +++ b/config/rootfiles/core/118/filelists/openssh @@ -0,0 +1 @@ +../../../common/openssh \ No newline at end of file From b62299702bed7c6c3533f27691a31bd4e4411b8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20M=C3=BCller?= Date: Sun, 10 Dec 2017 11:09:35 +0100 Subject: [PATCH 05/21] update german translations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correct some grammar errors and unify spelling of interface names (GREEN vs. GRÜN). Signed-off-by: Peter Müller Signed-off-by: Michael Tremer --- langs/de/cgi-bin/de.pl | 74 +++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/langs/de/cgi-bin/de.pl b/langs/de/cgi-bin/de.pl index fd9355f7a..7c1074edd 100644 --- a/langs/de/cgi-bin/de.pl +++ b/langs/de/cgi-bin/de.pl @@ -90,7 +90,7 @@ 'Level7 Protocol' => 'Level7-Protokoll', 'Level7 Rule' => 'Level7-Regel', 'Level7 rule' => 'Level7-Regel', -'Local VPN IP' => 'Internes Netzwerk (GREEN)', +'Local VPN IP' => 'Internes Netzwerk (GRÜN)', 'MB read' => 'MB gelesen', 'MB written' => 'MB geschrieben', 'MTU' => 'MTU-Größe:', @@ -110,7 +110,7 @@ 'Resolv' => 'Resolv-Retry', 'Scan for Files' => 'Nach Dateien suchen', 'Scan from Directory' => 'Scan Verzeichnis', -'Set time on boot' => 'Erzwinge das Setzen der Systemzeit im Bootvorgang', +'Set time on boot' => 'Erzwinge das Setzen der Systemzeit während des Bootvorgangs', 'Subclass' => 'Unterklasse', 'TOS Bits' => 'TOS-Bits', 'TOS Rule' => 'TOS-Regel', @@ -343,8 +343,8 @@ 'advproxy no clients defined' => 'Keine Clients definiert', 'advproxy no connection auth' => 'Keine verbindungsorientierte Authentifizierungsweiterleitung', 'advproxy no cre groups' => 'Es sind keine Zugriffsgruppen verfügbar', -'advproxy no internal proxy on blue' => ' Deaktiviere internen Proxy von Blue in andere Subnetze', -'advproxy no internal proxy on green' => 'Deaktiviere internen Proxy nach Green aus anderen Subnetzen', +'advproxy no internal proxy on blue' => ' Deaktiviere internen Proxy von BLAU in andere Subnetze', +'advproxy no internal proxy on green' => 'Deaktiviere internen Proxy nach GRÜN aus anderen Subnetzen', 'advproxy number of L1 dirs' => 'Anzahl der Level-1 Unterverzeichnisse', 'advproxy off' => 'Proxy aus', 'advproxy offline mode' => 'Aktiviere Offline-Modus', @@ -357,7 +357,7 @@ 'advproxy reset' => 'Zurücksetzen', 'advproxy saturday' => 'Sa', 'advproxy save and restart' => 'Speichern und Neustart', -'advproxy squid version' => 'Squid Cache Version', +'advproxy squid version' => 'Squid Versionsnummer', 'advproxy squidclamav' => 'SquidClamav', 'advproxy ssadvanced proxy' => 'advanced proxy', 'advproxy ssl ports' => 'Zulässige SSL-Ports (einer pro Zeile)', @@ -453,7 +453,7 @@ 'backup sets' => 'Datensicherungssätze', 'backup to floppy' => 'Datensicherung auf Diskette', 'backupaddon' => 'Addonsicherung', -'backupprofile' => 'Falls die Wiederverbindung scheitert, auf Profil umschalten', +'backupprofile' => 'Falls die Wiederverbindung scheitert, auf dieses Profil umschalten', 'backups' => 'Sicherungen', 'backupwarning' => 'Bitte stellen Sie zuerst Ihre Hauptsicherung wieder her und anschließend die Addons. Achten Sie darauf, dass die Sicherungen ihre originalen Dateinamen behalten.', 'bad characters in' => 'Ungültige Zeichen in ', @@ -474,7 +474,7 @@ 'bleeding rules' => 'Bleeding Edge Snort Rules', 'block' => 'Blocken', 'blue' => 'BLAU', -'blue access' => 'Zugriff auf Blau', +'blue access' => 'Zugriff auf BLAU', 'blue access use hint' => 'Sie müssen mindestens die MAC- oder die IP-Adresse für ein Gerät angeben. Optional können Sie sowohl MAC- als auch IP-Adresse angeben.', 'blue interface' => 'Blaues Interface', 'broadcast' => 'Broadcast', @@ -582,7 +582,7 @@ 'ccd used' => 'Genutzte Adressen', 'cert' => 'Zertifikat', 'certificate' => 'Zertifikat', -'certificate authorities' => 'Zertifizierungsstellen und -Schlüssel', +'certificate authorities' => 'Zertifizierungsstellen und -schlüssel', 'certificate does not have a valid ca associated with it' => 'Mit dem Zertifikat ist keine gültige CA verbunden.', 'certificate file move failed' => 'Verschieben der Zertifikatsdatei fehlgeschlagen', 'cfg restart' => 'Nach dem Wiederherstellen eines Konfigurationsarchivs wird ein Neustart empfohlen.', @@ -619,7 +619,7 @@ 'connection' => 'Verbindung', 'connection closed' => 'Nicht Verbunden...', 'connection debugging' => 'Verbindungs-Debugging', -'connection status and controlc' => 'Verbindungsstatus und -Kontrolle', +'connection status and controlc' => 'Verbindungsstatus und -kontrolle', 'connection tracking' => 'iptables-Verbindungsverfolgung', 'connection type' => 'Verbindungstyp', 'connection type is invalid' => 'Verbindungstyp ist ungültig', @@ -665,7 +665,7 @@ 'current aliases' => 'Aktuelle Alias-Adresse', 'current class' => 'Aktuelle Klasse', 'current devices' => 'Schnittstellen', -'current dhcp leases on blue' => 'Aktuelle DHCP-Zuordnungen auf Blau', +'current dhcp leases on blue' => 'Aktuelle DHCP-Zuordnungen auf BLAU', 'current dynamic leases' => 'Aktuelle dynamische Zuordnungen', 'current fixed leases' => 'Aktuelle feste Zuordnungen', 'current hosts' => 'Aktuelle Hosts', @@ -702,7 +702,7 @@ 'def lease time' => 'Standardzeit für Zuordnung', 'default' => 'Voreinstellung', 'default ip' => 'Standard IP-Adresse', -'default lease time' => 'Haltezeit-Voreinstellung in min:', +'default lease time' => 'Haltezeit-Voreinstellung (Min.):', 'default networks' => 'Standard Netzwerke', 'default renewal time' => 'Standard-Aktualisierungszeit', 'default services' => 'Standard Dienste', @@ -727,7 +727,7 @@ 'detail level' => 'Detaillierungsgrad', 'details' => 'Mehr', 'device' => 'Gerät', -'devices on blue' => 'Geräte auf Blau', +'devices on blue' => 'Geräte auf BLAU', 'dh' => 'Diffie-Hellman-Parameter', 'dh key move failed' => 'Verschieben der Diffie-Hellman-Parameter fehlgeschlagen.', 'dh key warn' => 'Das Generieren der DH-Parameter mit 1024 oder 2048 Bit dauert üblicherweise mehrere Minuten. Schlüssellängen von 3072 oder 4096 Bit beanspruchen mehrere Stunden. Bitte haben Sie etwas Geduld.', @@ -756,10 +756,10 @@ 'dhcp configuration' => 'DHCP-Konfiguration', 'dhcp create fixed leases' => 'Feste Zuordnungen erzeugen', 'dhcp dns enable update' => 'DNS-Update (RFC2136) aktivieren:', -'dhcp dns key name' => 'Schlüsselname:', +'dhcp dns key name' => 'Schlüsselname', 'dhcp dns update' => 'DNS-Update', -'dhcp dns update algo' => 'Algorithmus:', -'dhcp dns update secret' => 'Schlüssel:', +'dhcp dns update algo' => 'Algorithmus', +'dhcp dns update secret' => 'Schlüssel', 'dhcp fixed lease err1' => 'Für eine feste Zuordnung müssen entweder die Hardware Adresse (MAC-Adresse) oder der Hostname oder beide eingetragen werden.', 'dhcp fixed lease help1' => 'IP Adressen können als FQDN angegeben werden.', 'dhcp mode' => 'DHCP', @@ -772,7 +772,7 @@ 'dial user password' => 'Passwort für Benutzer "dial":', 'dial user password has been changed' => 'Passwort für Benutzer -dial- wurde geändert.', 'dialing mode' => 'Wählmodus:', -'dialup red not ppp' => 'Einwahl Profile können nur verwendet werden wenn RED auf PPP Einwahl eingestellt ist.
Bitte die Netzwerkeinstellungen prüfen.', +'dialup red not ppp' => 'Einwahl Profile können nur verwendet werden wenn ROT auf PPP Einwahl eingestellt ist.
Bitte die Netzwerkeinstellungen prüfen.', 'dialup settings' => 'Einwahl-Einstellungen', 'directory mask' => 'UNIX Verzeichnis Rechte', 'directory writeable' => 'Verzeichnis schreibbar', @@ -1170,7 +1170,7 @@ 'fwhost any' => 'Alle', 'fwhost attention' => 'ACHTUNG', 'fwhost back' => 'Zurück', -'fwhost blue' => 'Blau', +'fwhost blue' => 'BLAU', 'fwhost ccdhost' => 'OpenVPN-Clients:', 'fwhost ccdnet' => 'OpenVPN-Netzwerke:', 'fwhost change' => 'Ändern', @@ -1215,7 +1215,7 @@ 'fwhost err srv exists' => 'Ein Service mit diesem Namen existiert bereits', 'fwhost err srvexist' => 'Dieser Dienst ist bereits in der Gruppe', 'fwhost err sub32' => 'Bitte Netzwerke hinzufügen, keinen einzelnen Host', -'fwhost green' => 'Grün', +'fwhost green' => 'GRÜN', 'fwhost hint' => 'Hinweis', 'fwhost hosts' => 'Firewall-Hosts', 'fwhost icmptype' => 'ICMP-Typ:', @@ -1231,7 +1231,7 @@ 'fwhost newnet' => 'Netzwerke', 'fwhost newservice' => 'Dienst', 'fwhost newservicegrp' => 'Dienstgruppen', -'fwhost orange' => 'Orange', +'fwhost orange' => 'ORANGE', 'fwhost ovpn_n2n' => 'OpenVPN Net-to-Net', 'fwhost port' => 'Port(s)', 'fwhost prot' => 'Protokoll', @@ -1295,7 +1295,7 @@ 'high' => 'Hoch', 'high memory usage' => 'Speicher wird knapp', 'hint' => 'Tipp', -'holdoff' => 'Holdoff-Zeit in (Sekunden)', +'holdoff' => 'Holdoff-Zeit (Sek.)', 'host' => 'Host', 'host allow' => 'Liste der Zugriffsberechtigten', 'host certificate' => 'Host-Zertifikat', @@ -1318,7 +1318,7 @@ 'icmp type' => 'ICMP-Typ', 'id' => 'ID', 'idle' => 'Leerlauf', -'idle timeout' => 'Leerlauf-Wartezeit in min (0 zum Deaktivieren):', +'idle timeout' => 'Leerlauf-Wartezeit in Min. (0 zum Deaktivieren):', 'idle timeout not set' => 'Leerlauf-Wartezeit nicht angegeben.', 'ids log viewer' => 'Ansicht IDS-Protokoll', 'ids logs' => 'IDS-Protokolldateien', @@ -1361,9 +1361,9 @@ 'interfaces' => 'Interfaces', 'internet' => 'INTERNET', 'intrusion detection' => 'Einbruchdetektierung', -'intrusion detection system' => 'Intrusion Detection System', +'intrusion detection system' => 'Einbruchsdetektierung', 'intrusion detection system log viewer' => 'Betrachter der IDS-Protokolldateien', -'intrusion detection system rules' => 'Intrusion Detection System Regeln', +'intrusion detection system rules' => 'Regeln für die Einbruchsdetektierung', 'intrusion detection system2' => 'Intrusion Detection System:', 'invalid broadcast ip' => 'Ungültige Broadcast-IP', 'invalid cache size' => 'Ungültige Cache-Größe.', @@ -1446,7 +1446,7 @@ 'ipfires hostname' => 'IPFire\'s Hostname', 'ipinfo' => 'IP-Info', 'ipsec' => 'IPsec', -'ipsec network' => 'IPsec-Netzwerke', +'ipsec network' => 'IPsec-Netzwerk', 'ipsec no connections' => 'Keine aktiven IPsec-Verbindungen', 'iptable rules' => 'IPTable-Regeln', 'iptmangles' => 'IPTable Mangles', @@ -1554,14 +1554,14 @@ 'march' => 'März', 'marked' => 'Markiert', 'masquerade blue' => 'NAT auf BLAU', -'masquerade green' => 'NAT auf GREEN', +'masquerade green' => 'NAT auf GRÜN', 'masquerade orange' => 'NAT auf ORANGE', 'masquerading' => 'Masquerading/NAT', 'masquerading disabled' => 'NAT ausgeschaltet', 'masquerading enabled' => 'NAT eingeschaltet', 'max bandwith' => 'Maximale Bandbreite', 'max incoming size' => 'Max. eingehende Größe (kB):', -'max lease time' => 'Max. Haltezeit in min.:', +'max lease time' => 'Max. Haltezeit (Min.):', 'max outgoing size' => 'Max. abgehende Größe (kB):', 'max reliability' => 'Maximale Zuverlässigkeit', 'max renewal time' => 'Maximale Aktualisierungszeit', @@ -1662,7 +1662,7 @@ 'net address' => 'Netzadresse', 'net config' => 'Netzwerk-Konfiguration', 'net config type' => 'Netzwerk-Konfigurations-Typ', -'net config type help' => 'GREEN ist das lokale Netzwerk, RED ist das Internet, BLUE ist WLAN, ORANGE ist die DMZ.', +'net config type help' => 'GRÜN ist das lokale Netzwerk, ROT das Internet, BLAU das WLAN, ORANGE die DMZ.', 'net to net vpn' => 'Netz-zu-Netz Virtual Private Network', 'net traffic newversion' => 'Es ist eine neue Net-Traffic Version verfügbar:', 'net-traffic configuration' => 'Net-Traffic Konfiguration', @@ -1922,7 +1922,7 @@ 'prefered master' => 'Prefered Master', 'present' => 'Vorhanden', 'prev' => 'Vorheriger', -'primary dns' => 'Primärer DNS:', +'primary dns' => 'Primärer DNS-Server:', 'primary ntp server' => 'Primärer NTP-Server', 'primary wins server address' => 'Primäre WINS-Server Adresse', 'printcap name' => 'Printercap Name', @@ -2016,7 +2016,7 @@ 'resetglobals' => 'Globale Einstellungen zurücksetzen', 'resetpolicy' => 'Richtlinie zurücksetzen', 'resetshares' => 'Shares zurücksetzen?', -'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'Das Löschen des X509 wird die Root-CA, die Host-Zertifikate und alle zertifikatsbasierten Verbindungen entfernen.', +'resetting the vpn configuration will remove the root ca, the host certificate and all certificate based connections' => 'Das Löschen des X509 wird die Root-CA, die Host-Zertifikate und alle zertifikatsbasierten Verbindungen entfernen', 'restart' => 'Neustart', 'restart ovpn server' => 'OpenVPN-Server neu starten', 'restore' => 'Wiederherstellen', @@ -2048,10 +2048,10 @@ 'save-adv-options' => 'Erweiterte Optionen speichern', 'script name' => 'Skriptname:', 'search' => 'Suchen', -'secondary dns' => 'Sekundärer DNS:', +'secondary dns' => 'Sekundärer DNS-Server:', 'secondary ntp server' => 'Sekundärer NTP-Server', 'secondary wins server address' => 'Sekundäre WINS-Server Adresse', -'seconds' => 'sek.', +'seconds' => 'Sek.', 'section' => 'Abschnitt', 'secure shell server' => 'Secure Shell Server', 'security' => 'Sicherheit', @@ -2681,12 +2681,12 @@ 'volup5' => 'Laustärke um 5 erhöhen', 'vpi number' => 'VPI-Nummer:', 'vpn' => 'VPN', -'vpn aggrmode' => 'IKE Aggressive Mode zugelassen. Wenn möglich, vermeiden (preshared Schlüssel wird im Klartext übertragen)!', +'vpn aggrmode' => 'IKE Aggressive Mode zugelassen. Möglichst vermeiden (preshared Schlüssel wird im Klartext übertragen)!', 'vpn altname syntax' => 'Der Subjekt Alternativ Name ist eine durch Komma getrennte Liste von Email, DNS, URI, RID und IP Objekten.
Email: eine Email Adresse. Syntax Email: \'copy\' benutzt die Email Adresse aus dem Zertifikatfeld.
DNS: ein gültiger Domain Name.
URI: eine gültige URI.
RID: Registriertes Objekt Identifikation.
IP: eine IP Adresse.
Bitte beachten: der Zeichensatz ist eingeschränkt und die Groß-/Kleinschreibung ist entscheidend.
Beispiel:
email:info@ipfire.org,email:copy,DNS:www.ipfire.org,IP:127.0.0.1,URI:http://url/nach/irgendwo', 'vpn auth-dn' => 'Peer wird identifiziert durch entweder ein IPV4_ADDR, FQDN, USER_FQDN oder DER_ASN1_DN string in Remote ID Feld', -'vpn broken' => 'Gebrochen', +'vpn broken' => 'gebrochen', 'vpn connecting' => 'VERBINDUNGSAUFBAU', -'vpn delayed start' => 'Verzögerung, bevor VPN gestartet wird (in Sekunden)', +'vpn delayed start' => 'Verzögerung, bevor VPN gestartet wird (Sek.)', 'vpn delayed start help' => 'Falls notwendig, kann diese Verzögerung dazu verwendet werden, um Dynamic-DNS-Updates ordnungsgemäß anzuwenden. 60 ist ein gängiger Wert, wenn ROT (RED) eine dynamische IP Adresse ist.', 'vpn inactivity timeout' => 'Inaktivitätstimeout', 'vpn incompatible use of defaultroute' => 'Hostname=%defaultroute nicht zulässig', @@ -2709,7 +2709,7 @@ 'vpn statistic rw' => 'OpenVPN-Roadwarrior-Statistik', 'vpn subjectaltname' => 'Subjekt Alternativer Name', 'vpn watch' => 'Netz-zu-Netz VPN neu starten, wenn sich Remote-IP ändert (DynDNS).', -'vpn weak' => 'Schwach', +'vpn weak' => 'schwach', 'waiting to synchronize clock' => 'Bitte warten, die Uhr wird synchronisiert', 'warn when traffic reaches' => 'Warnen wenn Traffic x % erreicht', 'warning messages' => 'Warnhinweise', @@ -2726,8 +2726,8 @@ 'weekly firewallhits' => 'wöchentliche Firewalltreffer', 'weeks' => 'Wochen', 'wildcards' => 'Wildcards', -'wins server' => 'Wins-Server', -'wins support' => 'Wins-Support', +'wins server' => 'WINS-Server', +'wins support' => 'WINS-Support', 'wireless' => 'Wireless', 'wireless config added' => 'Wireless-Konfiguration hinzugefügt', 'wireless config changed' => 'Wireless-Konfiguration geändert', From 88d04bd159e9710a1a2891a67103467e7936fdfb Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 14 Dec 2017 16:47:01 +0000 Subject: [PATCH 06/21] core118: Ship updated language files Signed-off-by: Michael Tremer --- config/rootfiles/core/118/filelists/files | 1 + 1 file changed, 1 insertion(+) diff --git a/config/rootfiles/core/118/filelists/files b/config/rootfiles/core/118/filelists/files index 409e5fe8a..168c7d188 100644 --- a/config/rootfiles/core/118/filelists/files +++ b/config/rootfiles/core/118/filelists/files @@ -1,2 +1,3 @@ etc/system-release etc/issue +var/ipfire/langs From ba03193ba742ea03063a8b28012b3c8079dd8387 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 14 Dec 2017 17:44:20 +0000 Subject: [PATCH 07/21] fireinfo: Update to 2.1.12 Signed-off-by: Michael Tremer --- lfs/fireinfo | 9 +-- ...Add-an-other-forbidden-string-Serial.patch | 25 ------- ...e-any-non-printable-ascii-characters.patch | 69 ------------------- ...hypervisor-name-when-the-CPU-string-.patch | 35 ---------- ...er-all-IDs-that-only-consist-of-0xff.patch | 28 -------- ...re-is-id-has-already-been-reset-to-N.patch | 26 ------- 6 files changed, 2 insertions(+), 190 deletions(-) delete mode 100644 src/patches/fireinfo/0001-Add-an-other-forbidden-string-Serial.patch delete mode 100644 src/patches/fireinfo/0002-Escape-any-non-printable-ascii-characters.patch delete mode 100644 src/patches/fireinfo/0003-Skip-search-for-hypervisor-name-when-the-CPU-string-.patch delete mode 100644 src/patches/fireinfo/0004-Filter-all-IDs-that-only-consist-of-0xff.patch delete mode 100644 src/patches/fireinfo/0005-Fix-crash-if-there-is-id-has-already-been-reset-to-N.patch diff --git a/lfs/fireinfo b/lfs/fireinfo index 67d4cba45..dec588705 100644 --- a/lfs/fireinfo +++ b/lfs/fireinfo @@ -24,7 +24,7 @@ include Config -VER = 2.1.11 +VER = 2.1.12 THISAPP = fireinfo-v$(VER) DL_FILE = $(THISAPP).tar.gz @@ -40,7 +40,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = 093799207ab7397cc7f2d5eb45868c69 +$(DL_FILE)_MD5 = 40ada8f4eceeb69661d09e43308e5a6a install : $(TARGET) @@ -70,11 +70,6 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo/0001-Add-an-other-forbidden-string-Serial.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo/0002-Escape-any-non-printable-ascii-characters.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo/0003-Skip-search-for-hypervisor-name-when-the-CPU-string-.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo/0004-Filter-all-IDs-that-only-consist-of-0xff.patch - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/fireinfo/0005-Fix-crash-if-there-is-id-has-already-been-reset-to-N.patch cd $(DIR_APP) && [ -x "configure" ] || sh ./autogen.sh cd $(DIR_APP) && ./configure --prefix=/usr diff --git a/src/patches/fireinfo/0001-Add-an-other-forbidden-string-Serial.patch b/src/patches/fireinfo/0001-Add-an-other-forbidden-string-Serial.patch deleted file mode 100644 index 00c983809..000000000 --- a/src/patches/fireinfo/0001-Add-an-other-forbidden-string-Serial.patch +++ /dev/null @@ -1,25 +0,0 @@ -From edacae4b2cdc41f1c0bfc93e041532ff6c49f60c Mon Sep 17 00:00:00 2001 -From: Michael Tremer -Date: Tue, 17 Mar 2015 22:19:17 +0100 -Subject: [PATCH 1/5] Add an other forbidden string: "Serial" - ---- - src/fireinfo/system.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/fireinfo/system.py b/src/fireinfo/system.py -index daf77b399d20..9d7872822b85 100644 ---- a/src/fireinfo/system.py -+++ b/src/fireinfo/system.py -@@ -45,7 +45,7 @@ INVALID_ID_STRINGS = ( - "EVAL", - "Not Applicable", - "None", "empty", -- "System Serial Number", -+ "Serial", "System Serial Number", - "XXXXX", - "01010101-0101-0101-0101-010101010101", - "00020003-0004-0005-0006-000700080009", --- -2.4.3 - diff --git a/src/patches/fireinfo/0002-Escape-any-non-printable-ascii-characters.patch b/src/patches/fireinfo/0002-Escape-any-non-printable-ascii-characters.patch deleted file mode 100644 index 576154b7d..000000000 --- a/src/patches/fireinfo/0002-Escape-any-non-printable-ascii-characters.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 4468fb2eb49e21d2350f6619584e6816f5159d29 Mon Sep 17 00:00:00 2001 -From: Michael Tremer -Date: Sat, 28 Mar 2015 13:17:57 +0100 -Subject: [PATCH 2/5] Escape any non-printable ascii characters - -http://forum.ipfire.org/viewtopic.php?f=5&t=12970 ---- - src/fireinfo/system.py | 18 ++++++++++++++---- - 1 file changed, 14 insertions(+), 4 deletions(-) - -diff --git a/src/fireinfo/system.py b/src/fireinfo/system.py -index 9d7872822b85..4148c66eded7 100644 ---- a/src/fireinfo/system.py -+++ b/src/fireinfo/system.py -@@ -325,6 +325,16 @@ class System(object): - - return v, m - -+ @staticmethod -+ def escape_string(s): -+ """ -+ Will remove all non-printable characters from the given string -+ """ -+ if s is None: -+ return -+ -+ return filter(lambda x: x in string.printable, s) -+ - @property - def vendor(self): - """ -@@ -334,14 +344,14 @@ class System(object): - for file in ("sys_vendor", "board_vendor", "chassis_vendor",): - ret = read_from_file(os.path.join(SYS_CLASS_DMI, file)) - if ret: -- return ret -+ return self.escape_string(ret) - - if os.path.exists("/proc/device-tree"): - ret = self.__cpuinfo.get("Hardware", None) - else: - ret, m = self.vendor_model_tuple() - -- return ret -+ return self.escape_string(ret) - - @property - def model(self): -@@ -352,7 +362,7 @@ class System(object): - for file in ("product_name", "board_model", "chassis_model",): - ret = read_from_file(os.path.join(SYS_CLASS_DMI, file)) - if ret: -- return ret -+ return self.escape_string(ret) - - # Read device-tree model if available - ret = read_from_file("/proc/device-tree/model") -@@ -364,7 +374,7 @@ class System(object): - if not ret: - v, ret = self.vendor_model_tuple() - -- return ret -+ return self.escape_string(ret) - - @property - def memory(self): --- -2.4.3 - diff --git a/src/patches/fireinfo/0003-Skip-search-for-hypervisor-name-when-the-CPU-string-.patch b/src/patches/fireinfo/0003-Skip-search-for-hypervisor-name-when-the-CPU-string-.patch deleted file mode 100644 index f64325117..000000000 --- a/src/patches/fireinfo/0003-Skip-search-for-hypervisor-name-when-the-CPU-string-.patch +++ /dev/null @@ -1,35 +0,0 @@ -From c667589410912ca980a78f417e86dd6585d58f9a Mon Sep 17 00:00:00 2001 -From: Michael Tremer -Date: Mon, 4 May 2015 16:00:31 +0200 -Subject: [PATCH 3/5] Skip search for hypervisor name when the CPU string is - empty - ---- - src/_fireinfo/fireinfo.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/_fireinfo/fireinfo.c b/src/_fireinfo/fireinfo.c -index fc639d9d4cd9..6601c21a733f 100644 ---- a/src/_fireinfo/fireinfo.c -+++ b/src/_fireinfo/fireinfo.c -@@ -156,11 +156,12 @@ int detect_hypervisor(int *hypervisor) { - - *hypervisor = HYPER_OTHER; - -- int id; -- for (id = HYPER_NONE + 1; id < HYPER_LAST; id++) { -- if (strcmp(hypervisor_ids[id], sig.text) == 0) { -- *hypervisor = id; -- break; -+ if (*sig.text) { -+ for (int id = HYPER_NONE + 1; id < HYPER_LAST; id++) { -+ if (strcmp(hypervisor_ids[id], sig.text) == 0) { -+ *hypervisor = id; -+ break; -+ } - } - } - --- -2.4.3 - diff --git a/src/patches/fireinfo/0004-Filter-all-IDs-that-only-consist-of-0xff.patch b/src/patches/fireinfo/0004-Filter-all-IDs-that-only-consist-of-0xff.patch deleted file mode 100644 index 737a319c5..000000000 --- a/src/patches/fireinfo/0004-Filter-all-IDs-that-only-consist-of-0xff.patch +++ /dev/null @@ -1,28 +0,0 @@ -From d58f8ef75a29dd6f8968084b5383ce0f39c75666 Mon Sep 17 00:00:00 2001 -From: Michael Tremer -Date: Wed, 12 Aug 2015 10:50:42 +0100 -Subject: [PATCH 4/5] Filter all IDs that only consist of 0xff - -Signed-off-by: Michael Tremer ---- - src/fireinfo/system.py | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/fireinfo/system.py b/src/fireinfo/system.py -index 4148c66eded7..edf7359a17e6 100644 ---- a/src/fireinfo/system.py -+++ b/src/fireinfo/system.py -@@ -255,6 +255,10 @@ class System(object): - id = None - break - -+ # Check if the string only contains 0xff -+ if all((e == "\xff" for e in id)): -+ id = None -+ - if id: - _ids.append(id) - --- -2.4.3 - diff --git a/src/patches/fireinfo/0005-Fix-crash-if-there-is-id-has-already-been-reset-to-N.patch b/src/patches/fireinfo/0005-Fix-crash-if-there-is-id-has-already-been-reset-to-N.patch deleted file mode 100644 index dcc552da1..000000000 --- a/src/patches/fireinfo/0005-Fix-crash-if-there-is-id-has-already-been-reset-to-N.patch +++ /dev/null @@ -1,26 +0,0 @@ -From deafec982e4c8f2e6ffa3bf70b0a94fa30158e9a Mon Sep 17 00:00:00 2001 -From: Michael Tremer -Date: Wed, 9 Sep 2015 15:04:43 +0100 -Subject: [PATCH 5/5] Fix crash if there is id has already been reset to None - -Signed-off-by: Michael Tremer ---- - src/fireinfo/system.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/fireinfo/system.py b/src/fireinfo/system.py -index edf7359a17e6..c2ba12e818f0 100644 ---- a/src/fireinfo/system.py -+++ b/src/fireinfo/system.py -@@ -256,7 +256,7 @@ class System(object): - break - - # Check if the string only contains 0xff -- if all((e == "\xff" for e in id)): -+ if id and all((e == "\xff" for e in id)): - id = None - - if id: --- -2.4.3 - From 6fc0f5eb92c51067f79cf195d9c0e584556b29a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20M=C3=BCller?= Date: Sun, 10 Dec 2017 11:17:16 +0100 Subject: [PATCH 08/21] mark 3DES and 1024 bit DH params as weak MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These are not considered secure anymore but are unfortunately still needed in some cases (legacy hardware, ...). Signed-off-by: Peter Müller Signed-off-by: Michael Tremer --- html/cgi-bin/ovpnmain.cgi | 2 +- html/cgi-bin/vpnmain.cgi | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/html/cgi-bin/ovpnmain.cgi b/html/cgi-bin/ovpnmain.cgi index b43f91f6b..9f5e682bd 100644 --- a/html/cgi-bin/ovpnmain.cgi +++ b/html/cgi-bin/ovpnmain.cgi @@ -1320,7 +1320,7 @@ END
@@ -2531,7 +2531,7 @@ if(($cgiparams{'ACTION'} eq $Lang::tr{'advanced'}) || - + From f451d465fb3d0c53c6a8c66abb0b0fd835e2901d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 14 Dec 2017 17:48:24 +0000 Subject: [PATCH 09/21] Drop nagiosql This is no longer maintained any more and therefore being dropped Signed-off-by: Michael Tremer --- .../etc/nagiosql/backup/hosts/.placeholder | 0 .../etc/nagiosql/backup/services/.placeholder | 0 .../nagiosql/etc/nagiosql/hosts/.placeholder | 0 .../etc/nagiosql/services/.placeholder | 0 config/nagiosql/nagios.conf | 50 - config/nagiosql/pear/HTML/Template/IT.php | 1127 ----------------- config/nagiosql/pear/HTML/Template/ITX.php | 883 ------------- .../nagiosql/pear/HTML/Template/IT_Error.php | 65 - config/rootfiles/packages/nagiosql | 403 ------ lfs/nagiosql | 92 -- make.sh | 1 - src/paks/nagiosql/install.sh | 29 - src/paks/nagiosql/uninstall.sh | 27 - src/paks/nagiosql/update.sh | 26 - 14 files changed, 2703 deletions(-) delete mode 100644 config/nagiosql/etc/nagiosql/backup/hosts/.placeholder delete mode 100644 config/nagiosql/etc/nagiosql/backup/services/.placeholder delete mode 100644 config/nagiosql/etc/nagiosql/hosts/.placeholder delete mode 100644 config/nagiosql/etc/nagiosql/services/.placeholder delete mode 100644 config/nagiosql/nagios.conf delete mode 100644 config/nagiosql/pear/HTML/Template/IT.php delete mode 100644 config/nagiosql/pear/HTML/Template/ITX.php delete mode 100644 config/nagiosql/pear/HTML/Template/IT_Error.php delete mode 100644 config/rootfiles/packages/nagiosql delete mode 100644 lfs/nagiosql delete mode 100644 src/paks/nagiosql/install.sh delete mode 100644 src/paks/nagiosql/uninstall.sh delete mode 100644 src/paks/nagiosql/update.sh diff --git a/config/nagiosql/etc/nagiosql/backup/hosts/.placeholder b/config/nagiosql/etc/nagiosql/backup/hosts/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/config/nagiosql/etc/nagiosql/backup/services/.placeholder b/config/nagiosql/etc/nagiosql/backup/services/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/config/nagiosql/etc/nagiosql/hosts/.placeholder b/config/nagiosql/etc/nagiosql/hosts/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/config/nagiosql/etc/nagiosql/services/.placeholder b/config/nagiosql/etc/nagiosql/services/.placeholder deleted file mode 100644 index e69de29bb..000000000 diff --git a/config/nagiosql/nagios.conf b/config/nagiosql/nagios.conf deleted file mode 100644 index 3805d382a..000000000 --- a/config/nagiosql/nagios.conf +++ /dev/null @@ -1,50 +0,0 @@ -Listen 1008 - - - -# SAMPLE CONFIG SNIPPETS FOR APACHE WEB SERVER -# Last Modified: 11-26-2005 -# -# This file contains examples of entries that need -# to be incorporated into your Apache web server -# configuration file. Customize the paths, etc. as -# needed to fit your system. - -ScriptAlias /nagios/cgi-bin "/usr/share/nagios/cgi-bin" - - -# SSLRequireSSL - Options ExecCGI - AllowOverride None -# Require all granted -# Require ip 127.0.0.1 - AuthName "Nagios Access" - AuthType Basic - AuthUserFile /etc/nagios/htpasswd.users - Require valid-user - - -Alias /nagios "/usr/share/nagios" - - -# SSLRequireSSL - Options None - AllowOverride None -# Require all granted -# Require ip 127.0.0.1 - AuthName "Nagios Access" - AuthType Basic - AuthUserFile /etc/nagios/htpasswd.users - Require valid-user - - -Alias /nagiosql "/usr/share/nagiosql" - - - include /etc/httpd/conf/conf.d/php*.conf - Options None - AllowOverride None - Require all granted - - - diff --git a/config/nagiosql/pear/HTML/Template/IT.php b/config/nagiosql/pear/HTML/Template/IT.php deleted file mode 100644 index 4574a89a9..000000000 --- a/config/nagiosql/pear/HTML/Template/IT.php +++ /dev/null @@ -1,1127 +0,0 @@ - - * Pierre-Alain Joye - * David Soria Parra - * - * @category HTML - * @package HTML_Template_IT - * @author Ulf Wendel - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version CVS: $Id: IT.php,v 1.27 2008/11/14 23:57:17 kguest Exp $ - * @link http://pear.php.net/packages/HTML_Template_IT - * @access public - */ - -require_once 'PEAR.php'; - -define('IT_OK', 1); -define('IT_ERROR', -1); -define('IT_TPL_NOT_FOUND', -2); -define('IT_BLOCK_NOT_FOUND', -3); -define('IT_BLOCK_DUPLICATE', -4); -define('IT_UNKNOWN_OPTION', -6); -/** - * Integrated Template - IT - * - * Well there's not much to say about it. I needed a template class that - * supports a single template file with multiple (nested) blocks inside and - * a simple block API. - * - * The Isotemplate API is somewhat tricky for a beginner although it is the best - * one you can build. template::parse() [phplib template = Isotemplate] requests - * you to name a source and a target where the current block gets parsed into. - * Source and target can be block names or even handler names. This API gives you - * a maximum of fexibility but you always have to know what you do which is - * quite unusual for php skripter like me. - * - * I noticed that I do not any control on which block gets parsed into which one. - * If all blocks are within one file, the script knows how they are nested and in - * which way you have to parse them. IT knows that inner1 is a child of block2, - * there's no need to tell him about this. - * - * - * - * - * - * - * - * - * - *
- * __global__ - *

- * (hidden and automatically added) - *

block1 - * - * - * - * - * - * - * - * - *
block2
inner1inner2
- *
- * - * To add content to block1 you simply type: - * $tpl->setCurrentBlock("block1"); - * and repeat this as often as needed: - * - * $tpl->setVariable(...); - * $tpl->parseCurrentBlock(); - * - * - * To add content to block2 you would type something like: - * - * $tpl->setCurrentBlock("inner1"); - * $tpl->setVariable(...); - * $tpl->parseCurrentBlock(); - * - * $tpl->setVariable(...); - * $tpl->parseCurrentBlock(); - * - * $tpl->parse("block1"); - * - * - * This will result in one repition of block1 which contains two repitions - * of inner1. inner2 will be removed if $removeEmptyBlock is set to true - * which is the default. - * - * Usage: - * - * $tpl = new HTML_Template_IT( [string filerootdir] ); - * - * // load a template or set it with setTemplate() - * $tpl->loadTemplatefile( string filename [, boolean removeUnknownVariables, boolean removeEmptyBlocks] ) - * - * // set "global" Variables meaning variables not beeing within a (inner) block - * $tpl->setVariable( string variablename, mixed value ); - * - * // like with the Isotemplates there's a second way to use setVariable() - * $tpl->setVariable( array ( string varname => mixed value ) ); - * - * // Let's use any block, even a deeply nested one - * $tpl->setCurrentBlock( string blockname ); - * - * // repeat this as often as you need it. - * $tpl->setVariable( array ( string varname => mixed value ) ); - * $tpl->parseCurrentBlock(); - * - * // get the parsed template or print it: $tpl->show() - * $tpl->get(); - * - * - * @category HTML - * @package HTML_Template_IT - * @author Ulf Wendel - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/HTML_Template_IT - * @access public - */ -class HTML_Template_IT -{ - /** - * Contains the error objects - * @var array - * @access public - * @see halt(), $printError, $haltOnError - */ - var $err = array(); - - /** - * Clear cache on get()? - - * @var boolean - * @acces public - */ - var $clearCache = false; - - /** - * First character of a variable placeholder ( _{_VARIABLE} ). - * @var string - * @access public - * @see $closingDelimiter, $blocknameRegExp, $variablenameRegExp - */ - var $openingDelimiter = '{'; - - /** - * Last character of a variable placeholder ( {VARIABLE_}_ ). - * @var string - * @access public - * @see $openingDelimiter, $blocknameRegExp, $variablenameRegExp - */ - var $closingDelimiter = '}'; - - /** - * RegExp matching a block in the template. - * Per default "sm" is used as the regexp modifier, "i" is missing. - * That means a case sensitive search is done. - * @var string - * @access public - * @see $variablenameRegExp, $openingDelimiter, $closingDelimiter - */ - var $blocknameRegExp = '[\.0-9A-Za-z_-]+'; - - /** - * RegExp matching a variable placeholder in the template. - * Per default "sm" is used as the regexp modifier, "i" is missing. - * That means a case sensitive search is done. - * @var string - * @access public - * @see $blocknameRegExp, $openingDelimiter, $closingDelimiter - */ - var $variablenameRegExp = '[\.0-9A-Za-z_-]+'; - - /** - * RegExp used to find variable placeholder, filled by the constructor. - * @var string Looks somewhat like @(delimiter varname delimiter)@ - * @access private - * @see IntegratedTemplate() - */ - var $variablesRegExp = ''; - - /** - * RegExp used to strip unused variable placeholder. - * @access private - * @brother $variablesRegExp - */ - var $removeVariablesRegExp = ''; - - /** - * Controls the handling of unknown variables, default is remove. - * @var boolean - * @access public - */ - var $removeUnknownVariables = true; - - /** - * Controls the handling of empty blocks, default is remove. - * @var boolean - * @access public - */ - var $removeEmptyBlocks = true; - - /** - * RegExp used to find blocks an their content, filled by the constructor. - * @var string - * @see IntegratedTemplate() - * @access private - */ - var $blockRegExp = ''; - - /** - * Name of the current block. - * @var string - * @access private - */ - var $currentBlock = '__global__'; - - /** - * Content of the template. - * @var string - * @access private - */ - var $template = ''; - - /** - * Array of all blocks and their content. - * - * @var array - * @see findBlocks() - * @access private - */ - var $blocklist = array(); - - /** - * Array with the parsed content of a block. - * - * @var array - * @access private - */ - var $blockdata = array(); - - /** - * Array of variables in a block. - * @var array - * @access private - */ - var $blockvariables = array(); - - /** - * Array of inner blocks of a block. - * @var array - * @access private - */ - var $blockinner = array(); - - /** - * List of blocks to preverse even if they are "empty". - * - * This is something special. Sometimes you have blocks that - * should be preserved although they are empty (no placeholder replaced). - * Think of a shopping basket. If it's empty you have to drop a message to - * the user. If it's filled you have to show the contents of - * the shopping baseket. Now where do you place the message that the basket - * is empty? It's no good idea to place it in you applications as customers - * tend to like unecessary minor text changes. Having another template file - * for an empty basket means that it's very likely that one fine day - * the filled and empty basket templates have different layout. I decided - * to introduce blocks that to not contain any placeholder but only - * text such as the message "Your shopping basked is empty". - * - * Now if there is no replacement done in such a block the block will - * be recognized as "empty" and by default ($removeEmptyBlocks = true) be - * stripped off. To avoid thisyou can now call touchBlock() to avoid this. - * - * The array $touchedBlocks stores a list of touched block which must not - * be removed even if they are empty. - * - * @var array $touchedBlocks - * @see touchBlock(), $removeEmptyBlocks - * @access private - */ - var $touchedBlocks = array(); - - /** - * List of blocks which should not be shown even if not "empty" - * @var array $_hiddenBlocks - * @see hideBlock(), $removeEmptyBlocks - * @access private - */ - var $_hiddenBlocks = array(); - - /** - * Variable cache. - * - * Variables get cached before any replacement is done. - * Advantage: empty blocks can be removed automatically. - * Disadvantage: might take some more memory - * - * @var array - * @see setVariable(), $clearCacheOnParse - * @access private - */ - var $variableCache = array(); - - /** - * Clear the variable cache on parse? - * - * If you're not an expert just leave the default false. - * True reduces memory consumption somewhat if you tend to - * add lots of values for unknown placeholder. - * - * @var boolean - * @access public - */ - var $clearCacheOnParse = false; - - /** - * Root directory for all file operations. - * The string gets prefixed to all filenames given. - * @var string - * @see HTML_Template_IT(), setRoot() - * @access private - */ - var $fileRoot = ''; - - /** - * Internal flag indicating that a blockname was used multiple times. - * @var boolean - * @access private - */ - var $flagBlocktrouble = false; - - /** - * Flag indicating that the global block was parsed. - * @var boolean - * @access private - */ - var $flagGlobalParsed = false; - - /** - * EXPERIMENTAL! FIXME! - * Flag indication that a template gets cached. - * - * Complex templates require some times to be preparsed - * before the replacement can take place. Often I use - * one template file over and over again but I don't know - * before that I will use the same template file again. - * Now IT could notice this and skip the preparse. - * - * @var boolean - * @access private - */ - var $flagCacheTemplatefile = true; - - /** - * EXPERIMENTAL! FIXME! - * @access private - */ - var $lastTemplatefile = ''; - - /** - * $_options['preserve_data'] Whether to substitute variables and remove - * empty placeholders in data passed through setVariable - * (see also bugs #20199, #21951). - * $_options['use_preg'] Whether to use preg_replace instead of - * str_replace in parse() - * (this is a backwards compatibility feature, see also bugs #21951, #20392) - * - * @var array - * @access private - */ - var $_options = array( - 'preserve_data' => false, - 'use_preg' => true, - 'preserve_input'=> true - ); - - /** - * Builds some complex regular expressions and optinally sets the - * file root directory. - * - * Make sure that you call this constructor if you derive your template - * class from this one. - * - * @param string $root File root directory, prefix for all filenames - * given to the object. - * @param mixed $options Unknown - * - * @see setRoot() - * @access public - */ - function HTML_Template_IT($root = '', $options = null) - { - if (!is_null($options)) { - $this->setOptions($options); - } - - $this->variablesRegExp = '@' . $this->openingDelimiter . - '(' . $this->variablenameRegExp . ')' . - $this->closingDelimiter . '@sm'; - - $this->removeVariablesRegExp = '@' . $this->openingDelimiter . - "\s*(" . $this->variablenameRegExp . - ")\s*" . $this->closingDelimiter .'@sm'; - - $this->blockRegExp = '@(.*)@sm'; - - $this->setRoot($root); - } // end constructor - - - /** - * Sets the option for the template class - * - * @param string $option option name - * @param mixed $value option value - * - * @access public - * @return mixed IT_OK on success, error object on failure - */ - function setOption($option, $value) - { - if (array_key_exists($option, $this->_options)) { - $this->_options[$option] = $value; - return IT_OK; - } - - return PEAR::raiseError( - $this->errorMessage(IT_UNKNOWN_OPTION) . ": '{$option}'", - IT_UNKNOWN_OPTION); - } - - /** - * Sets the options for the template class - * - * @param string[] $options options array of options - * default value: - * 'preserve_data' => false, - * 'use_preg' => true - * - * @access public - * @return mixed IT_OK on success, error object on failure - * @see $options - */ - function setOptions($options) - { - if (is_array($options)) { - foreach ($options as $option => $value) { - $error = $this->setOption($option, $value); - if (PEAR::isError($error)) { - return $error; - } - } - } - - return IT_OK; - } - - /** - * Print a certain block with all replacements done. - * - * @param string $block block - * - * @brother get() - * @access public - * @return null - */ - function show($block = '__global__') - { - print $this->get($block); - } // end func show - - /** - * Returns a block with all replacements done. - * - * @param string $block name of the block - * - * @return string - * @throws PEAR_Error - * @access public - * @see show() - */ - function get($block = '__global__') - { - if ($block == '__global__' && !$this->flagGlobalParsed) { - $this->parse('__global__'); - } - - if (!isset($this->blocklist[$block])) { - $this->err[] = PEAR::raiseError($this->errorMessage(IT_BLOCK_NOT_FOUND) . - '"' . $block . "'", - IT_BLOCK_NOT_FOUND); - return ''; - } - - if (isset($this->blockdata[$block])) { - $ret = $this->blockdata[$block]; - - if ($this->clearCache) { - unset($this->blockdata[$block]); - if ($block == '__global__') { - $this->flagGlobalParsed = false; - } - } - - if ($this->_options['preserve_data']) { - $ret = str_replace($this->openingDelimiter . - '%preserved%' . $this->closingDelimiter, - $this->openingDelimiter, - $ret); - } - return $ret; - } - - return ''; - } // end func get() - - /** - * Parses the given block. - * - * @param string $block name of the block to be parsed - * @param bool $flag_recursion unknown - * - * @access public - * @see parseCurrentBlock() - * @throws PEAR_Error - * @return null - */ - function parse($block = '__global__', $flag_recursion = false) - { - static $regs, $values; - - if (!isset($this->blocklist[$block])) { - return PEAR::raiseError($this->errorMessage(IT_BLOCK_NOT_FOUND) - . '"' . $block . "'", IT_BLOCK_NOT_FOUND); - } - - if ($block == '__global__') { - $this->flagGlobalParsed = true; - } - - if (!$flag_recursion) { - $regs = array(); - $values = array(); - } - $outer = $this->blocklist[$block]; - $empty = true; - - $variablelist = array(); - if ($this->clearCacheOnParse) { - foreach ($this->variableCache as $name => $value) { - $regs[] = $this->openingDelimiter . - $name . $this->closingDelimiter; - - $values[] = $value; - - $empty = false; - - $variablelist[] = $name; - } - $this->variableCache = array(); - } else { - foreach ($this->blockvariables[$block] as $allowedvar => $v) { - - if (isset($this->variableCache[$allowedvar])) { - $regs[] = $this->openingDelimiter . - $allowedvar . $this->closingDelimiter; - $values[] = $this->variableCache[$allowedvar]; - - unset($this->variableCache[$allowedvar]); - - $empty = false; - - $variablelist[] = $allowedvar; - } - } - } - - if (isset($this->blockinner[$block])) { - foreach ($this->blockinner[$block] as $k => $innerblock) { - - $this->parse($innerblock, true); - if ($this->blockdata[$innerblock] != '') { - $empty = false; - } - - $placeholder = $this->openingDelimiter . "__" . - $innerblock . "__" . $this->closingDelimiter; - - $outer = str_replace($placeholder, - $this->blockdata[$innerblock], $outer); - - $this->blockdata[$innerblock] = ""; - } - - } - - if (!$flag_recursion && 0 != count($values)) { - if ($this->_options['use_preg']) { - $regs = array_map(array(&$this, '_addPregDelimiters'), $regs); - $values = array_map(array(&$this, '_escapeBackreferences'), $values); - - $funcReplace = 'preg_replace'; - } else { - $funcReplace = 'str_replace'; - } - - if ($this->_options['preserve_data']) { - $values = array_map(array(&$this, '_preserveOpeningDelimiter'), - $values); - } - - $outer = $funcReplace($regs, $values, $outer); - } - - if ($this->removeUnknownVariables) { - $outer = $this->removeUnknownVariablesFromBlock($block, - $outer, - $variablelist); - } - - if ($empty) { - if (!$this->removeEmptyBlocks) { - $this->blockdata[$block ] .= $outer; - } else { - if (isset($this->touchedBlocks[$block])) { - $this->blockdata[$block] .= $outer; - unset($this->touchedBlocks[$block]); - } - } - } else { - if (empty($this->blockdata[$block])) { - $this->blockdata[$block] = $outer; - } else { - $this->blockdata[$block] .= $outer; - } - } - - return $empty; - } // end func parse - - /** - * Removes unknown variables from block. If preserve_input is set to true - * only unknown variables that were present during setTemplate or - * loadTemplatefile are removed. Thus you can set a variable to - * "{SOMEINPUTDATA}" which is preserved. - * - * @param string $blockname block - * @param string $blockinner unknown - * @param string $variableList unknown - * - * @see parse() - * @access private - * @return null - */ - function removeUnknownVariablesFromBlock ($blockname, $blockinner, $variableList) - { - if ($this->_options['preserve_input']) { - foreach ($this->blockvariables[$blockname] as $var => $setted) { - if (!in_array($var, $variableList)) { - $blockinner = str_replace($this->openingDelimiter . - $var . $this->closingDelimiter, '', $blockinner); - } - } - } else { - $blockinner = preg_replace($this->removeVariablesRegExp, - '', - $blockinner); - } - - return $blockinner; - } - - /** - * Parses the current block - * - * @see parse(), setCurrentBlock(), $currentBlock - * @access public - * @return null - */ - function parseCurrentBlock() - { - return $this->parse($this->currentBlock); - } // end func parseCurrentBlock - - /** - * Sets a variable value. - * - * The function can be used eighter like setVariable( "varname", "value") - * or with one array $variables["varname"] = "value" - * given setVariable($variables) quite like phplib templates set_var(). - * - * @param mixed $variable string with the variable name or an array - * %variables["varname"] = "value" - * @param string $value value of the variable or empty if $variable - * is an array. - * - * @access public - * @return null - */ - function setVariable($variable, $value = '') - { - if (is_array($variable)) { - $this->variableCache = array_merge($this->variableCache, $variable); - } else { - $this->variableCache[$variable] = $value; - } - } // end func setVariable - - /** - * Sets the name of the current block that is the block where variables - * are added. - * - * @param string $block name of the block - * - * @return boolean false on failure, otherwise true - * @throws PEAR_Error - * @access public - */ - function setCurrentBlock($block = '__global__') - { - - if (!isset($this->blocklist[$block])) { - return PEAR::raiseError($this->errorMessage(IT_BLOCK_NOT_FOUND) - . '"' . $block . "'", - IT_BLOCK_NOT_FOUND); - } - - $this->currentBlock = $block; - - return true; - } // end func setCurrentBlock - - /** - * Preserves an empty block even if removeEmptyBlocks is true. - * - * @param string $block name of the block - * - * @return boolean false on false, otherwise true - * @throws PEAR_Error - * @access public - * @see $removeEmptyBlocks - */ - function touchBlock($block) - { - if (!isset($this->blocklist[$block])) { - return PEAR::raiseError($this->errorMessage(IT_BLOCK_NOT_FOUND) . - '"' . $block . "'", IT_BLOCK_NOT_FOUND); - } - - $this->touchedBlocks[$block] = true; - - return true; - } // end func touchBlock - - /** - * Clears all datafields of the object and rebuild the internal blocklist - * - * LoadTemplatefile() and setTemplate() automatically call this function - * when a new template is given. Don't use this function - * unless you know what you're doing. - * - * @access private - * @see free() - * @return null - */ - function init() - { - $this->free(); - $this->findBlocks($this->template); - // we don't need it any more - $this->template = ''; - $this->buildBlockvariablelist(); - } // end func init - - /** - * Clears all datafields of the object. - * - * Don't use this function unless you know what you're doing. - * - * @access private - * @see init() - * @return null - */ - function free() - { - $this->err = array(); - - $this->currentBlock = '__global__'; - - $this->variableCache = array(); - $this->blocklist = array(); - $this->touchedBlocks = array(); - - $this->flagBlocktrouble = false; - $this->flagGlobalParsed = false; - } // end func free - - /** - * Sets the template. - * - * You can eighter load a template file from disk with - * LoadTemplatefile() or set the template manually using this function. - * - * @param string $template template content - * @param bool $removeUnknownVariables how to handle unknown variables. - * @param bool $removeEmptyBlocks how to handle empty blocks. - * - * @see LoadTemplatefile(), $template - * @access public - * @return boolean - */ - function setTemplate( $template, $removeUnknownVariables = true, - $removeEmptyBlocks = true) - { - $this->removeUnknownVariables = $removeUnknownVariables; - - $this->removeEmptyBlocks = $removeEmptyBlocks; - - if ($template == '' && $this->flagCacheTemplatefile) { - $this->variableCache = array(); - $this->blockdata = array(); - $this->touchedBlocks = array(); - $this->currentBlock = '__global__'; - } else { - $this->template = '' . $template . - ''; - $this->init(); - } - - if ($this->flagBlocktrouble) { - return false; - } - - return true; - } // end func setTemplate - - /** - * Reads a template file from the disk. - * - * @param string $filename name of the template file - * @param bool $removeUnknownVariables how to handle unknown variables. - * @param bool $removeEmptyBlocks how to handle empty blocks. - * - * @access public - * @return boolean false on failure, otherwise true - * @see $template, setTemplate(), $removeUnknownVariables, - * $removeEmptyBlocks - */ - function loadTemplatefile( $filename, - $removeUnknownVariables = true, - $removeEmptyBlocks = true ) - { - $template = ''; - if (!$this->flagCacheTemplatefile || - $this->lastTemplatefile != $filename - ) { - $template = $this->getFile($filename); - } - $this->lastTemplatefile = $filename; - - return $template != '' ? - $this->setTemplate($template, - $removeUnknownVariables, - $removeEmptyBlocks) : false; - } // end func LoadTemplatefile - - /** - * Sets the file root. The file root gets prefixed to all filenames passed - * to the object. - * - * Make sure that you override this function when using the class - * on windows. - * - * @param string $root File root - * - * @see HTML_Template_IT() - * @access public - * @return null - */ - function setRoot($root) - { - if ($root != '' && substr($root, -1) != '/') { - $root .= '/'; - } - - $this->fileRoot = $root; - } // end func setRoot - - /** - * Build a list of all variables within of a block - * - * @access private - * @return null - */ - function buildBlockvariablelist() - { - foreach ($this->blocklist as $name => $content) { - preg_match_all($this->variablesRegExp, $content, $regs); - - if (count($regs[1]) != 0) { - foreach ($regs[1] as $k => $var) { - $this->blockvariables[$name][$var] = true; - } - } else { - $this->blockvariables[$name] = array(); - } - } - } // end func buildBlockvariablelist - - /** - * Returns a list of all global variables - * - * @access public - * @return array - */ - function getGlobalvariables() - { - $regs = array(); - $values = array(); - - foreach ($this->blockvariables['__global__'] as $allowedvar => $v) { - if (isset($this->variableCache[$allowedvar])) { - $regs[] = '@' . $this->openingDelimiter . - $allowedvar . $this->closingDelimiter . '@'; - $values[] = $this->variableCache[$allowedvar]; - unset($this->variableCache[$allowedvar]); - } - } - - return array($regs, $values); - } // end func getGlobalvariables - - /** - * Recusively builds a list of all blocks within the template. - * - * @param string $string string that gets scanned - * - * @access private - * @see $blocklist - * @return array - */ - function findBlocks($string) - { - $blocklist = array(); - - if (preg_match_all($this->blockRegExp, $string, $regs, PREG_SET_ORDER)) { - foreach ($regs as $k => $match) { - $blockname = $match[1]; - $blockcontent = $match[2]; - - if (isset($this->blocklist[$blockname])) { - $msg = $this->errorMessage(IT_BLOCK_DUPLICATE, $blockname); - - $this->err[] = PEAR::raiseError($msg, IT_BLOCK_DUPLICATE); - - $this->flagBlocktrouble = true; - } - - $this->blocklist[$blockname] = $blockcontent; - $this->blockdata[$blockname] = ""; - - $blocklist[] = $blockname; - - $inner = $this->findBlocks($blockcontent); - $regex = '@(.*)@sm'; - foreach ($inner as $k => $name) { - $pattern = sprintf($regex, preg_quote($name), preg_quote($name)); - - $this->blocklist[$blockname] = preg_replace($pattern, - $this->openingDelimiter . - '__' . $name . '__' . - $this->closingDelimiter, - $this->blocklist[$blockname]); - - $this->blockinner[$blockname][] = $name; - - $this->blockparents[$name] = $blockname; - } - } - } - - return $blocklist; - } // end func findBlocks - - /** - * Reads a file from disk and returns its content. - * - * @param string $filename Filename - * - * @return string Filecontent - * @access private - */ - function getFile($filename) - { - if ($filename{0} == '/' && substr($this->fileRoot, -1) == '/') { - $filename = substr($filename, 1); - } - - $filename = $this->fileRoot . $filename; - - if (!($fh = @fopen($filename, 'r'))) { - $this->err[] = PEAR::raiseError($this->errorMessage(IT_TPL_NOT_FOUND) . - ': "' .$filename .'"', - IT_TPL_NOT_FOUND); - return ""; - } - - $fsize = filesize($filename); - if ($fsize < 1) { - fclose($fh); - return ''; - } - - $content = fread($fh, $fsize); - fclose($fh); - - return preg_replace("##ime", - "\$this->getFile('\\1')", - $content); - } // end func getFile - - /** - * Adds delimiters to a string, so it can be used as a pattern - * in preg_* functions - * - * @param string $str input - * - * @return string - * @access private - */ - function _addPregDelimiters($str) - { - return '@' . preg_quote($str) . '@'; - } - - /** - * Escapes $ and \ as preg_replace will treat - * them as a backreference and not literal. - * See bug #9501 - * - * @param string $str String to escape - * - * @since 1.2.2 - * @return string - * @access private - */ - function _escapeBackreferences($str) - { - $str = str_replace('\\', '\\\\', $str); - $str = preg_replace('@\$([0-9]{1,2})@', '\\\$${1}', $str); - return $str; - } - - /** - * Replaces an opening delimiter by a special string - * - * @param string $str special string - * - * @return string - * @access private - */ - function _preserveOpeningDelimiter($str) - { - return (false === strpos($str, $this->openingDelimiter))? - $str: - str_replace($this->openingDelimiter, - $this->openingDelimiter . - '%preserved%' . $this->closingDelimiter, - $str); - } - - /** - * Return a textual error message for a IT error code - * - * @param integer $value error code - * @param string $blockname unknown - * - * @access private - * @return string error message, or false if the error code was - * not recognized - */ - function errorMessage($value, $blockname = '') - { - static $errorMessages; - if (!isset($errorMessages)) { - $errorMessages = array( - IT_OK => '', - IT_ERROR => 'unknown error', - IT_TPL_NOT_FOUND => 'Cannot read the template file', - IT_BLOCK_NOT_FOUND => 'Cannot find this block', - IT_BLOCK_DUPLICATE => 'The name of a block must be'. - ' uniquewithin a template.'. - ' Found "' . $blockname . '" twice.'. - 'Unpredictable results '. - 'may appear.', - IT_UNKNOWN_OPTION => 'Unknown option' - ); - } - - if (PEAR::isError($value)) { - $value = $value->getCode(); - } - - return isset($errorMessages[$value]) ? - $errorMessages[$value] : $errorMessages[IT_ERROR]; - } -} // end class IntegratedTemplate -?> diff --git a/config/nagiosql/pear/HTML/Template/ITX.php b/config/nagiosql/pear/HTML/Template/ITX.php deleted file mode 100644 index dc57eb30a..000000000 --- a/config/nagiosql/pear/HTML/Template/ITX.php +++ /dev/null @@ -1,883 +0,0 @@ - - * Pierre-Alain Joye - * David Soria Parra - * - * @category HTML - * @package HTML_Template_IT - * @author Ulf Wendel - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version CVS: $Id: ITX.php,v 1.19 2008/11/14 23:57:17 kguest Exp $ - * @link http://pear.php.net/packages/HTML_Template_IT - * @access public - */ - -require_once 'HTML/Template/IT.php'; -require_once 'HTML/Template/IT_Error.php'; - -/** -* Integrated Template Extension - ITX -* -* With this class you get the full power of the phplib template class. -* You may have one file with blocks in it but you have as well one main file -* and multiple files one for each block. This is quite usefull when you have -* user configurable websites. Using blocks not in the main template allows -* you to modify some parts of your layout easily. -* -* Note that you can replace an existing block and add new blocks at runtime. -* Adding new blocks means changing a variable placeholder to a block. -* - * @category HTML - * @package HTML_Template_IT - * @author Ulf Wendel - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/HTML_Template_IT - * @access public -*/ -class HTML_Template_ITX extends HTML_Template_IT -{ - /** - * Array with all warnings. - * @var array - * @access public - * @see $printWarning, $haltOnWarning, warning() - */ - var $warn = array(); - - /** - * Print warnings? - * @var array - * @access public - * @see $haltOnWarning, $warn, warning() - */ - var $printWarning = false; - - /** - * Call die() on warning? - * @var boolean - * @access public - * @see $warn, $printWarning, warning() - */ - var $haltOnWarning = false; - - /** - * RegExp used to test for a valid blockname. - * @var string - * @access private - */ - var $checkblocknameRegExp = ''; - - /** - * Functionnameprefix used when searching function calls in the template. - * @var string - * @access public - */ - var $functionPrefix = 'func_'; - - /** - * Functionname RegExp. - * @var string - * @access public - */ - var $functionnameRegExp = '[_a-zA-Z]+[A-Za-z_0-9]*'; - - /** - * RegExp used to grep function calls in the template. - * - * The variable gets set by the constructor. - * - * @access private - * @var string - * @see HTML_Template_IT() - */ - var $functionRegExp = ''; - - /** - * List of functions found in the template. - * - * @access private - * @var array - */ - var $functions = array(); - - /** - * List of callback functions specified by the user. - * - * @access private - * @var array - */ - var $callback = array(); - - /** - * Builds some complex regexps and calls the constructor - * of the parent class. - * - * Make sure that you call this constructor if you derive your own - * template class from this one. - * - * @param string $root Root node? - * - * @access public - * @see HTML_Template_IT() - */ - function HTML_Template_ITX($root = '') - { - - $this->checkblocknameRegExp = '@' . $this->blocknameRegExp . '@'; - - $this->functionRegExp = '@' . $this->functionPrefix . '(' . - $this->functionnameRegExp . ')\s*\(@sm'; - - $this->HTML_Template_IT($root); - } // end func constructor - - /** - * Clears all datafields of the object and rebuild the internal blocklist - * - * LoadTemplatefile() and setTemplate() automatically call this function - * when a new template is given. Don't use this function - * unless you know what you're doing. - * - * @access private - * @return null - */ - function init() - { - $this->free(); - $this->buildFunctionlist(); - $this->findBlocks($this->template); - - // we don't need it any more - $this->template = ''; - $this->buildBlockvariablelist(); - - } // end func init - - /** - * Replaces an existing block with new content. - * - * This function will replace a block of the template and all blocks - * contained in the replaced block and add a new block insted, means - * you can dynamically change your template. - * - * Note that changing the template structure violates one of the IT[X] - * development goals. I've tried to write a simple to use template engine - * supporting blocks. In contrast to other systems IT[X] analyses the way - * you've nested blocks and knows which block belongs into another block. - * The nesting information helps to make the API short and simple. Replacing - * blocks does not only mean that IT[X] has to update the nesting - * information (relatively time consumpting task) but you have to make sure - * that you do not get confused due to the template change itself. - * - * @param string $block Blockname - * @param string $template Blockcontent - * @param boolean $keep_content true if the new block inherits the content - * of the old block - * - * @return boolean - * @throws IT_Error - * @see replaceBlockfile(), addBlock(), addBlockfile() - * @access public - */ - function replaceBlock($block, $template, $keep_content = false) - { - if (!isset($this->blocklist[$block])) { - return new IT_Error("The block "."'$block'". - " does not exist in the template and thus it can't be replaced.", - __FILE__, __LINE__); - } - - if ($template == '') { - return new IT_Error('No block content given.', __FILE__, __LINE__); - } - - if ($keep_content) { - $blockdata = $this->blockdata[$block]; - } - - // remove all kinds of links to the block / data of the block - $this->removeBlockData($block); - - $template = "" . $template . ""; - $parents = $this->blockparents[$block]; - - $this->findBlocks($template); - $this->blockparents[$block] = $parents; - - // KLUDGE: rebuild the list for all block - could be done faster - $this->buildBlockvariablelist(); - - if ($keep_content) { - $this->blockdata[$block] = $blockdata; - } - - // old TODO - I'm not sure if we need this - // update caches - - return true; - } // end func replaceBlock - - /** - * Replaces an existing block with new content from a file. - * - * @param string $block Blockname - * @param string $filename Name of the file that contains the blockcontent - * @param boolean $keep_content true if the new block inherits the content of - * the old block - * - * @brother replaceBlock() - * @access public - * @return null - */ - function replaceBlockfile($block, $filename, $keep_content = false) - { - return $this->replaceBlock($block, $this->getFile($filename), $keep_content); - } // end func replaceBlockfile - - /** - * Adds a block to the template changing a variable placeholder - * to a block placeholder. - * - * Add means "replace a variable placeholder by a new block". - * This is different to PHPLibs templates. The function loads a - * block, creates a handle for it and assigns it to a certain - * variable placeholder. To to the same with PHPLibs templates you would - * call set_file() to create the handle and parse() to assign the - * parsed block to a variable. By this PHPLibs templates assume - * that you tend to assign a block to more than one one placeholder. - * To assign a parsed block to more than only the placeholder you specify - * in this function you have to use a combination of getBlock() - * and setVariable(). - * - * As no updates to cached data is necessary addBlock() and addBlockfile() - * are rather "cheap" meaning quick operations. - * - * The block content must not start with - * and end with this would cause overhead and - * produce an error. - * - * @param string $placeholder Name of the variable placeholder, the name - * must be unique within the template. - * @param string $blockname Name of the block to be added - * @param string $template Content of the block - * - * @return boolean - * @throws IT_Error - * @see addBlockfile() - * @access public - */ - function addBlock($placeholder, $blockname, $template) - { - // Don't trust any user even if it's a programmer or yourself... - if ($placeholder == '') { - return new IT_Error('No variable placeholder given.', - __FILE__, __LINE__); - } elseif ($blockname == '' || - !preg_match($this->checkblocknameRegExp, $blockname) - ) { - return new IT_Error("No or invalid blockname '$blockname' given.", - __FILE__, __LINE__); - } elseif ($template == '') { - return new IT_Error('No block content given.', __FILE__, __LINE__); - } elseif (isset($this->blocklist[$blockname])) { - return new IT_Error('The block already exists.', - __FILE__, __LINE__); - } - - // find out where to insert the new block - $parents = $this->findPlaceholderBlocks($placeholder); - if (count($parents) == 0) { - - return new IT_Error("The variable placeholder". - " '$placeholder' was not found in the template.", - __FILE__, __LINE__); - - } elseif (count($parents) > 1) { - - reset($parents); - while (list($k, $parent) = each($parents)) { - $msg .= "$parent, "; - } - $msg = substr($parent, -2); - - return new IT_Error("The variable placeholder "."'$placeholder'". - " must be unique, found in multiple blocks '$msg'.", - __FILE__, __LINE__); - } - - $template = "" - . $template - . ""; - $this->findBlocks($template); - if ($this->flagBlocktrouble) { - return false; // findBlocks() already throws an exception - } - - $this->blockinner[$parents[0]][] = $blockname; - - $escblockname = '__' . $blockname . '__'; - - $this->blocklist[$parents[0]] = preg_replace( - '@' . $this->openingDelimiter . $placeholder . - $this->closingDelimiter . '@', - $this->openingDelimiter . $escblockname . $this->closingDelimiter, - $this->blocklist[$parents[0]]); - - $this->deleteFromBlockvariablelist($parents[0], $placeholder); - $this->updateBlockvariablelist($blockname); - - return true; - } // end func addBlock - - /** - * Adds a block taken from a file to the template changing a variable - * placeholder to a block placeholder. - * - * @param string $placeholder Name of the variable placeholder to be converted - * @param string $blockname Name of the block to be added - * @param string $filename File that contains the block - * - * @brother addBlock() - * @access public - * @return null - */ - function addBlockfile($placeholder, $blockname, $filename) - { - return $this->addBlock($placeholder, $blockname, $this->getFile($filename)); - } // end func addBlockfile - - /** - * Returns the name of the (first) block that contains - * the specified placeholder. - * - * @param string $placeholder Name of the placeholder you're searching - * @param string $block Name of the block to scan. If left out (default) - * all blocks are scanned. - * - * @return string Name of the (first) block that contains - * the specified placeholder. - * If the placeholder was not found or an error occured - * an empty string is returned. - * @throws IT_Error - * @access public - */ - function placeholderExists($placeholder, $block = '') - { - if ($placeholder == '') { - new IT_Error('No placeholder name given.', __FILE__, __LINE__); - return ''; - } - - if ($block != '' && !isset($this->blocklist[$block])) { - new IT_Error("Unknown block '$block'.", __FILE__, __LINE__); - return ''; - } - - // name of the block where the given placeholder was found - $found = ''; - - if ($block != '') { - if (is_array($variables = $this->blockvariables[$block])) { - // search the value in the list of blockvariables - reset($variables); - while (list($k, $variable) = each($variables)) { - if ($k == $placeholder) { - $found = $block; - break; - } - } - } - } else { - - // search all blocks and return the name of the first block that - // contains the placeholder - reset($this->blockvariables); - while (list($blockname, $variables) = each($this->blockvariables)) { - if (is_array($variables) && isset($variables[$placeholder])) { - $found = $blockname; - break; - } - } - } - - return $found; - } // end func placeholderExists - - /** - * Checks the list of function calls in the template and - * calls their callback function. - * - * @access public - * @return null - */ - function performCallback() - { - reset($this->functions); - while (list($func_id, $function) = each($this->functions)) { - if (isset($this->callback[$function['name']])) { - if ($this->callback[$function['name']]['expandParameters']) { - $callFunction = 'call_user_func_array'; - } else { - $callFunction = 'call_user_func'; - } - - if ($this->callback[$function['name']]['object'] != '') { - $call = $callFunction( - array( - &$GLOBALS[$this->callback[$function['name']]['object']], - $this->callback[$function['name']]['function']), - $function['args']); - - } else { - $call = $callFunction( - $this->callback[$function['name']]['function'], - $function['args']); - } - $this->variableCache['__function' . $func_id . '__'] = $call; - } - } - - } // end func performCallback - - /** - * Returns a list of all function calls in the current template. - * - * @return array - * @access public - */ - function getFunctioncalls() - { - return $this->functions; - } // end func getFunctioncalls - - /** - * Replaces a function call with the given replacement. - * - * @param int $functionID Function ID - * @param string $replacement Replacement - * - * @access public - * @deprecated - * @return null - */ - function setFunctioncontent($functionID, $replacement) - { - $this->variableCache['__function' . $functionID . '__'] = $replacement; - } // end func setFunctioncontent - - /** - * Sets a callback function. - * - * IT[X] templates (note the X) can contain simple function calls. - * "function call" means that the editor of the template can add - * special placeholder to the template like 'func_h1("embedded in h1")'. - * IT[X] will grab this function calls and allow you to define a callback - * function for them. - * - * This is an absolutely evil feature. If your application makes heavy - * use of such callbacks and you're even implementing if-then etc. on - * the level of a template engine you're reiventing the wheel... - that's - * actually how PHP came into life. Anyway, sometimes it's handy. - * - * Consider also using XML/XSLT or native PHP. And please do not push - * IT[X] any further into this direction of adding logics to the template - * engine. - * - * For those of you ready for the X in IT[X]: - * - * %s', $args[0]); - * } - * - * ... - * $itx = new HTML_Template_ITX(...); - * ... - * $itx->setCallbackFunction('h1', 'h_one'); - * $itx->performCallback(); - * ?> - * - * template: - * func_h1('H1 Headline'); - * - * @param string $tplfunction Function name in the template - * @param string $callbackfunction Name of the callback function - * @param string $callbackobject Name of the callback object - * @param boolean $expandCallbackParameters If the callback is called with - * a list of parameters or with an - * array holding the parameters - * - * @return boolean False on failure. - * @throws IT_Error - * @access public - * @deprecated The $callbackobject parameter is depricated since - * version 1.2 and might be dropped in further versions. - */ - function setCallbackFunction($tplfunction, $callbackfunction, - $callbackobject = '', - $expandCallbackParameters = false) - { - if ($tplfunction == '' || $callbackfunction == '') { - return new IT_Error("No template function "."('$tplfunction')". - " and/or no callback function ('$callback') given.", - __FILE__, __LINE__); - } - $this->callback[$tplfunction] = array( - 'function' => $callbackfunction, - 'object' => $callbackobject, - 'expandParameters' => (boolean) - $expandCallbackParameters); - - return true; - } // end func setCallbackFunction - - /** - * Sets the Callback function lookup table - * - * @param array $functions function table - * array[templatefunction] = - * array( - * "function" => userfunction, - * "object" => userobject - * ) - * - * @access public - * @return null - */ - function setCallbackFuntiontable($functions) - { - $this->callback = $functions; - } // end func setCallbackFunctiontable - - /** - * Recursively removes all data assiciated with a block, including - * all inner blocks - * - * @param string $block block to be removed - * - * @return null - * @access private - */ - function removeBlockData($block) - { - if (isset($this->blockinner[$block])) { - foreach ($this->blockinner[$block] as $k => $inner) { - $this->removeBlockData($inner); - } - - unset($this->blockinner[$block]); - } - - unset($this->blocklist[$block]); - unset($this->blockdata[$block]); - unset($this->blockvariables[$block]); - unset($this->touchedBlocks[$block]); - - } // end func removeBlockinner - - /** - * Returns a list of blocknames in the template. - * - * @return array [blockname => blockname] - * @access public - * @see blockExists() - */ - function getBlocklist() - { - $blocklist = array(); - foreach ($this->blocklist as $block => $content) { - $blocklist[$block] = $block; - } - - return $blocklist; - } // end func getBlocklist - - /** - * Checks wheter a block exists. - * - * @param string $blockname Blockname - * - * @return boolean - * @access public - * @see getBlocklist() - */ - function blockExists($blockname) - { - return isset($this->blocklist[$blockname]); - } // end func blockExists - - /** - * Returns a list of variables of a block. - * - * @param string $block Blockname - * - * @return array [varname => varname] - * @access public - * @see BlockvariableExists() - */ - function getBlockvariables($block) - { - if (!isset($this->blockvariables[$block])) { - return array(); - } - - $variables = array(); - foreach ($this->blockvariables[$block] as $variable => $v) { - $variables[$variable] = $variable; - } - - return $variables; - } // end func getBlockvariables - - /** - * Checks wheter a block variable exists. - * - * @param string $block Blockname - * @param string $variable Variablename - * - * @return boolean - * @access public - * @see getBlockvariables() - */ - function BlockvariableExists($block, $variable) - { - return isset($this->blockvariables[$block][$variable]); - } // end func BlockvariableExists - - /** - * Builds a functionlist from the template. - * - * @access private - * @return null - */ - function buildFunctionlist() - { - $this->functions = array(); - - $template = $this->template; - - $num = 0; - - while (preg_match($this->functionRegExp, $template, $regs)) { - - $pos = strpos($template, $regs[0]); - - $template = substr($template, $pos + strlen($regs[0])); - - $head = $this->getValue($template, ')'); - $args = array(); - - $search = $regs[0] . $head . ')'; - - $replace = $this->openingDelimiter . - '__function' . $num . '__' . - $this->closingDelimiter; - - $this->template = str_replace($search, $replace, $this->template); - $template = str_replace($search, $replace, $template); - - while ($head != '' && $args2 = $this->getValue($head, ',')) { - $arg2 = trim($args2); - - $args[] = ('"' == $arg2{0} || "'" == $arg2{0}) ? - substr($arg2, 1, -1) : $arg2; - - if ($arg2 == $head) { - break; - } - $head = substr($head, strlen($arg2) + 1); - } - - $this->functions[$num++] = array('name' => $regs[1], - 'args' => $args); - } - - } // end func buildFunctionlist - - /** - * Truncates the given code from the first occurence of - * $delimiter but ignores $delimiter enclosed by " or '. - * - * @param string $code The code which should be parsed - * @param string $delimiter The delimiter char - * - * @access private - * @return string - * @see buildFunctionList() - */ - function getValue($code, $delimiter) - { - if ($code == '') { - return ''; - } - - if (!is_array($delimiter)) { - $delimiter = array($delimiter => true); - } - - $len = strlen($code); - $enclosed = false; - $enclosed_by = ''; - - if (isset($delimiter[$code[0]])) { - $i = 1; - } else { - for ($i = 0; $i < $len; ++$i) { - $char = $code[$i]; - - if (($char == '"' || $char == "'") && - ($char == $enclosed_by || '' == $enclosed_by) && - (0 == $i || ($i > 0 && '\\' != $code[$i - 1]))) { - - if (!$enclosed) { - $enclosed_by = $char; - } else { - $enclosed_by = ""; - } - $enclosed = !$enclosed; - - } - - if (!$enclosed && isset($delimiter[$char])) { - break; - } - } - } - - return substr($code, 0, $i); - } // end func getValue - - /** - * Deletes one or many variables from the block variable list. - * - * @param string $block Blockname - * @param mixed $variables Name of one variable or array of variables - * (array (name => true ) ) to be stripped. - * - * @access private - * @return null - */ - function deleteFromBlockvariablelist($block, $variables) - { - if (!is_array($variables)) { - $variables = array($variables => true); - } - - reset($this->blockvariables[$block]); - while (list($varname, $val) = each($this->blockvariables[$block])) { - if (isset($variables[$varname])) { - unset($this->blockvariables[$block][$varname]); - } - } - } // end deleteFromBlockvariablelist - - /** - * Updates the variable list of a block. - * - * @param string $block Blockname - * - * @access private - * @return null - */ - function updateBlockvariablelist($block) - { - preg_match_all($this->variablesRegExp, - $this->blocklist[$block], $regs); - - if (count($regs[1]) != 0) { - foreach ($regs[1] as $k => $var) { - $this->blockvariables[$block][$var] = true; - } - } else { - $this->blockvariables[$block] = array(); - } - - // check if any inner blocks were found - if (isset($this->blockinner[$block]) && - is_array($this->blockinner[$block]) && - count($this->blockinner[$block]) > 0) { - /* - * loop through inner blocks, registering the variable - * placeholders in each - */ - foreach ($this->blockinner[$block] as $childBlock) { - $this->updateBlockvariablelist($childBlock); - } - } - } // end func updateBlockvariablelist - - /** - * Returns an array of blocknames where the given variable - * placeholder is used. - * - * @param string $variable Variable placeholder - * - * @return array $parents parents[0..n] = blockname - * @access public - */ - function findPlaceholderBlocks($variable) - { - $parents = array(); - reset($this->blocklist); - while (list($blockname, $content) = each($this->blocklist)) { - reset($this->blockvariables[$blockname]); - - while (list($varname, $val) = each($this->blockvariables[$blockname])) { - if ($variable == $varname) { - $parents[] = $blockname; - } - } - } - - return $parents; - } // end func findPlaceholderBlocks - - /** - * Handles warnings, saves them to $warn and prints them or - * calls die() depending on the flags - * - * @param string $message Warning - * @param string $file File where the warning occured - * @param int $line Linenumber where the warning occured - * - * @see $warn, $printWarning, $haltOnWarning - * @access private - * @return null - */ - function warning($message, $file = '', $line = 0) - { - $message = sprintf('HTML_Template_ITX Warning: %s [File: %s, Line: %d]', - $message, - $file, - $line); - - $this->warn[] = $message; - - if ($this->printWarning) { - print $message; - } - - if ($this->haltOnWarning) { - die($message); - } - } // end func warning - -} // end class HTML_Template_ITX -?> diff --git a/config/nagiosql/pear/HTML/Template/IT_Error.php b/config/nagiosql/pear/HTML/Template/IT_Error.php deleted file mode 100644 index 4a74a4642..000000000 --- a/config/nagiosql/pear/HTML/Template/IT_Error.php +++ /dev/null @@ -1,65 +0,0 @@ - - * Pierre-Alain Joye - * David Soria Parra - * - * @category HTML - * @package HTML_Template_IT - * @author Ulf Wendel - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @version CVS: $Id: IT_Error.php,v 1.4 2008/11/09 12:30:27 clockwerx Exp $ - * @link http://pear.php.net/packages/HTML_Template_IT - * @access public - */ - -require_once "PEAR.php"; - -/** -* IT[X] Error class -* - * @category HTML - * @package HTML_Template_IT - * @author Ulf Wendel - * @license BSD http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/packages/HTML_Template_IT - * @access public -*/ -class IT_Error extends PEAR_Error -{ - /** - * Prefix of all error messages. - * - * @var string - */ - var $error_message_prefix = "IntegratedTemplate Error: "; - - /** - * Creates an cache error object. - * - * @param string $msg error message - * @param string $file file where the error occured - * @param string $line linenumber where the error occured - */ - function IT_Error($msg, $file = __FILE__, $line = __LINE__) - { - $this->PEAR_Error(sprintf("%s [%s on line %d].", $msg, $file, $line)); - } // end func IT_Error - -} // end class IT_Error -?> diff --git a/config/rootfiles/packages/nagiosql b/config/rootfiles/packages/nagiosql deleted file mode 100644 index f76a2fdb2..000000000 --- a/config/rootfiles/packages/nagiosql +++ /dev/null @@ -1,403 +0,0 @@ -#etc/nagiosql -#etc/nagiosql/backup -#etc/nagiosql/backup/hosts -etc/nagiosql/backup/hosts/.placeholder -#etc/nagiosql/backup/services -etc/nagiosql/backup/services/.placeholder -#etc/nagiosql/hosts -etc/nagiosql/hosts/.placeholder -#etc/nagiosql/services -etc/nagiosql/services/.placeholder -#usr/lib/php/HTML -#usr/lib/php/HTML/Template -usr/lib/php/HTML/Template/IT.php -usr/lib/php/HTML/Template/ITX.php -usr/lib/php/HTML/Template/IT_Error.php -usr/share/nagiosql -#usr/share/nagiosql/admin -#usr/share/nagiosql/admin.php -#usr/share/nagiosql/admin/administration.php -#usr/share/nagiosql/admin/alarming.php -#usr/share/nagiosql/admin/cgicfg.php -#usr/share/nagiosql/admin/checkcommands.php -#usr/share/nagiosql/admin/commandline.php -#usr/share/nagiosql/admin/commands.php -#usr/share/nagiosql/admin/contactgroups.php -#usr/share/nagiosql/admin/contacts.php -#usr/share/nagiosql/admin/contacttemplates.php -#usr/share/nagiosql/admin/delbackup.php -#usr/share/nagiosql/admin/domain.php -#usr/share/nagiosql/admin/download.php -#usr/share/nagiosql/admin/errorsite.php -#usr/share/nagiosql/admin/helpedit.php -#usr/share/nagiosql/admin/hostdependencies.php -#usr/share/nagiosql/admin/hostescalations.php -#usr/share/nagiosql/admin/hostextinfo.php -#usr/share/nagiosql/admin/hostgroups.php -#usr/share/nagiosql/admin/hosts.php -#usr/share/nagiosql/admin/hosttemplates.php -#usr/share/nagiosql/admin/import.php -#usr/share/nagiosql/admin/index.html -#usr/share/nagiosql/admin/info.php -#usr/share/nagiosql/admin/logbook.php -#usr/share/nagiosql/admin/menuaccess.php -#usr/share/nagiosql/admin/monitoring.php -#usr/share/nagiosql/admin/mutdialog.php -#usr/share/nagiosql/admin/nagioscfg.php -#usr/share/nagiosql/admin/password.php -#usr/share/nagiosql/admin/searchhosts.php -#usr/share/nagiosql/admin/servicedependencies.php -#usr/share/nagiosql/admin/serviceescalations.php -#usr/share/nagiosql/admin/serviceextinfo.php -#usr/share/nagiosql/admin/servicegroups.php -#usr/share/nagiosql/admin/services.php -#usr/share/nagiosql/admin/servicetemplates.php -#usr/share/nagiosql/admin/settings.php -#usr/share/nagiosql/admin/specials.php -#usr/share/nagiosql/admin/templatedefinitions.php -#usr/share/nagiosql/admin/timedefinitions.php -#usr/share/nagiosql/admin/timeperiods.php -#usr/share/nagiosql/admin/tools.php -#usr/share/nagiosql/admin/user.php -#usr/share/nagiosql/admin/variabledefinitions.php -#usr/share/nagiosql/admin/verify.php -#usr/share/nagiosql/config -#usr/share/nagiosql/config/fieldvars.php -#usr/share/nagiosql/config/locale -#usr/share/nagiosql/config/locale/de_DE -#usr/share/nagiosql/config/locale/de_DE/LC_MESSAGES -#usr/share/nagiosql/config/locale/de_DE/LC_MESSAGES/de_DE.mo -#usr/share/nagiosql/config/locale/de_DE/LC_MESSAGES/index.html -#usr/share/nagiosql/config/locale/de_DE/index.html -#usr/share/nagiosql/config/locale/en_GB -#usr/share/nagiosql/config/locale/en_GB/LC_MESSAGES -#usr/share/nagiosql/config/locale/en_GB/LC_MESSAGES/en_GB.mo -#usr/share/nagiosql/config/locale/en_GB/LC_MESSAGES/index.html -#usr/share/nagiosql/config/locale/en_GB/index.html -#usr/share/nagiosql/config/locale/es_ES -#usr/share/nagiosql/config/locale/es_ES/LC_MESSAGES -#usr/share/nagiosql/config/locale/es_ES/LC_MESSAGES/es_ES.mo -#usr/share/nagiosql/config/locale/es_ES/LC_MESSAGES/index.html -#usr/share/nagiosql/config/locale/es_ES/index.html -#usr/share/nagiosql/config/locale/fr_FR -#usr/share/nagiosql/config/locale/fr_FR/LC_MESSAGES -#usr/share/nagiosql/config/locale/fr_FR/LC_MESSAGES/fr_FR.mo -#usr/share/nagiosql/config/locale/fr_FR/LC_MESSAGES/index.html -#usr/share/nagiosql/config/locale/fr_FR/index.html -#usr/share/nagiosql/config/locale/it_IT -#usr/share/nagiosql/config/locale/it_IT/LC_MESSAGES -#usr/share/nagiosql/config/locale/it_IT/LC_MESSAGES/index.html -#usr/share/nagiosql/config/locale/it_IT/LC_MESSAGES/it_IT.mo -#usr/share/nagiosql/config/locale/it_IT/index.html -#usr/share/nagiosql/config/locale/pl_PL -#usr/share/nagiosql/config/locale/pl_PL/LC_MESSAGES -#usr/share/nagiosql/config/locale/pl_PL/LC_MESSAGES/index.html -#usr/share/nagiosql/config/locale/pl_PL/LC_MESSAGES/pl_PL.mo -#usr/share/nagiosql/config/locale/pl_PL/index.html -#usr/share/nagiosql/config/locale/ru_RU -#usr/share/nagiosql/config/locale/ru_RU/LC_MESSAGES -#usr/share/nagiosql/config/locale/ru_RU/LC_MESSAGES/index.html -#usr/share/nagiosql/config/locale/ru_RU/LC_MESSAGES/ru_RU.mo -#usr/share/nagiosql/config/locale/ru_RU/index.html -#usr/share/nagiosql/config/locale/zh_CN -#usr/share/nagiosql/config/locale/zh_CN/LC_MESSAGES -#usr/share/nagiosql/config/locale/zh_CN/LC_MESSAGES/index.html -#usr/share/nagiosql/config/locale/zh_CN/LC_MESSAGES/zh_CN.mo -#usr/share/nagiosql/config/locale/zh_CN/index.html -#usr/share/nagiosql/config/main.css -#usr/share/nagiosql/favicon.ico -#usr/share/nagiosql/functions -#usr/share/nagiosql/functions/common.js -#usr/share/nagiosql/functions/config_class.php -#usr/share/nagiosql/functions/data_class.php -#usr/share/nagiosql/functions/import_class.php -#usr/share/nagiosql/functions/mysql_class.php -#usr/share/nagiosql/functions/nag_class.php -#usr/share/nagiosql/functions/prepend_adm.php -#usr/share/nagiosql/functions/supportive.php -#usr/share/nagiosql/functions/tinyMCE -#usr/share/nagiosql/functions/tinyMCE/jscripts -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/langs -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/langs/en.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/license.txt -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/contextmenu -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/safari -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/safari/blank.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/safari/editor_plugin.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace/css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace/css/searchreplace.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace/js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace/js/searchreplace.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace/langs -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace/langs/en_dlg.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/searchreplace/searchreplace.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/cell.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/css/cell.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/css/row.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/css/table.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/editor_plugin.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/js/cell.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/js/merge_cells.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/js/row.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/js/table.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/langs -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/langs/en_dlg.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/merge_cells.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/row.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/plugins/table/table.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/about.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/anchor.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/charmap.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/color_picker.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/editor_template.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/image.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/img -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/img/colorpicker.jpg -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/img/icons.gif -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/js/about.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/js/anchor.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/js/charmap.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/js/color_picker.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/js/image.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/js/link.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/js/source_editor.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/langs -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/langs/en.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/langs/en_dlg.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/link.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/content.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/dialog.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/img -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/img/buttons.png -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/img/items.gif -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/img/progress.gif -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/default/ui.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7 -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/content.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/img -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/themes/advanced/source_editor.htm -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/tiny_mce.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/tiny_mce_popup.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/utils -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/utils/editable_selects.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/utils/form_utils.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/utils/mctabs.js -#usr/share/nagiosql/functions/tinyMCE/jscripts/tiny_mce/utils/validate.js -#usr/share/nagiosql/functions/translator.php -#usr/share/nagiosql/functions/yui -#usr/share/nagiosql/functions/yui/build -#usr/share/nagiosql/functions/yui/build/assets -#usr/share/nagiosql/functions/yui/build/assets/skins -#usr/share/nagiosql/functions/yui/build/assets/skins/sam -#usr/share/nagiosql/functions/yui/build/assets/skins/sam/sprite.png -#usr/share/nagiosql/functions/yui/build/button -#usr/share/nagiosql/functions/yui/build/button/assets -#usr/share/nagiosql/functions/yui/build/button/assets/skins -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam/button.css -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam/menu-button-arrow-disabled.png -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam/menu-button-arrow.png -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam/split-button-arrow-active.png -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam/split-button-arrow-disabled.png -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam/split-button-arrow-focus.png -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam/split-button-arrow-hover.png -#usr/share/nagiosql/functions/yui/build/button/assets/skins/sam/split-button-arrow.png -#usr/share/nagiosql/functions/yui/build/button/button-min.js -#usr/share/nagiosql/functions/yui/build/calendar -#usr/share/nagiosql/functions/yui/build/calendar/assets -#usr/share/nagiosql/functions/yui/build/calendar/assets/skins -#usr/share/nagiosql/functions/yui/build/calendar/assets/skins/sam -#usr/share/nagiosql/functions/yui/build/calendar/assets/skins/sam/calendar.css -#usr/share/nagiosql/functions/yui/build/calendar/calendar-min.js -#usr/share/nagiosql/functions/yui/build/connection -#usr/share/nagiosql/functions/yui/build/connection/connection-min.js -#usr/share/nagiosql/functions/yui/build/container -#usr/share/nagiosql/functions/yui/build/container/assets -#usr/share/nagiosql/functions/yui/build/container/assets/skins -#usr/share/nagiosql/functions/yui/build/container/assets/skins/sam -#usr/share/nagiosql/functions/yui/build/container/assets/skins/sam/container.css -#usr/share/nagiosql/functions/yui/build/container/container-min.js -#usr/share/nagiosql/functions/yui/build/element -#usr/share/nagiosql/functions/yui/build/element/element-beta-min.js -#usr/share/nagiosql/functions/yui/build/fonts -#usr/share/nagiosql/functions/yui/build/fonts/fonts-min.css -#usr/share/nagiosql/functions/yui/build/tabview -#usr/share/nagiosql/functions/yui/build/tabview/assets -#usr/share/nagiosql/functions/yui/build/tabview/assets/skins -#usr/share/nagiosql/functions/yui/build/tabview/assets/skins/sam -#usr/share/nagiosql/functions/yui/build/tabview/assets/skins/sam/tabview.css -#usr/share/nagiosql/functions/yui/build/tabview/tabview-min.js -#usr/share/nagiosql/functions/yui/build/utilities -#usr/share/nagiosql/functions/yui/build/utilities/utilities.js -#usr/share/nagiosql/functions/yui/build/yahoo-dom-event -#usr/share/nagiosql/functions/yui/build/yahoo-dom-event/yahoo-dom-event.js -#usr/share/nagiosql/images -#usr/share/nagiosql/images/admin.png -#usr/share/nagiosql/images/bg_menu_aktiv.png -#usr/share/nagiosql/images/bg_menu_inaktiv.png -#usr/share/nagiosql/images/bg_submenu.png -#usr/share/nagiosql/images/bg_top.png -#usr/share/nagiosql/images/calbtn.gif -#usr/share/nagiosql/images/copy.gif -#usr/share/nagiosql/images/del.png -#usr/share/nagiosql/images/delete.gif -#usr/share/nagiosql/images/down.gif -#usr/share/nagiosql/images/download.gif -#usr/share/nagiosql/images/edit.gif -#usr/share/nagiosql/images/info.gif -#usr/share/nagiosql/images/input.png -#usr/share/nagiosql/images/inputlock.png -#usr/share/nagiosql/images/inputmust.png -#usr/share/nagiosql/images/left.gif -#usr/share/nagiosql/images/login-form.png -#usr/share/nagiosql/images/logo_top.png -#usr/share/nagiosql/images/lupe.gif -#usr/share/nagiosql/images/menu.gif -#usr/share/nagiosql/images/menu_bg.png -#usr/share/nagiosql/images/menu_bg2.png -#usr/share/nagiosql/images/menusub_bg.png -#usr/share/nagiosql/images/mut.gif -#usr/share/nagiosql/images/nagiosql_logo.png -#usr/share/nagiosql/images/pfeil_l.gif -#usr/share/nagiosql/images/pfeil_r.gif -#usr/share/nagiosql/images/pixel.gif -#usr/share/nagiosql/images/right.gif -#usr/share/nagiosql/images/tip.gif -#usr/share/nagiosql/images/tip.png -#usr/share/nagiosql/images/titel_v2.png -#usr/share/nagiosql/images/up.gif -#usr/share/nagiosql/images/upArrow.png -#usr/share/nagiosql/images/write.gif -#usr/share/nagiosql/index.php -#usr/share/nagiosql/install -#usr/share/nagiosql/install/css -#usr/share/nagiosql/install/css/index.html -#usr/share/nagiosql/install/css/install.css -#usr/share/nagiosql/install/doc -#usr/share/nagiosql/install/doc/INSTALLATION_deDE.txt -#usr/share/nagiosql/install/doc/INSTALLATION_enGB.txt -#usr/share/nagiosql/install/functions -#usr/share/nagiosql/install/functions/func_installer.php -#usr/share/nagiosql/install/images -#usr/share/nagiosql/install/images/background.png -#usr/share/nagiosql/install/images/body_background.png -#usr/share/nagiosql/install/images/favicon.ico -#usr/share/nagiosql/install/images/index-install.png -#usr/share/nagiosql/install/images/index-update.png -#usr/share/nagiosql/install/images/index.html -#usr/share/nagiosql/install/images/install.png -#usr/share/nagiosql/install/images/invalid.png -#usr/share/nagiosql/install/images/minus.png -#usr/share/nagiosql/install/images/nagiosql.png -#usr/share/nagiosql/install/images/next.png -#usr/share/nagiosql/install/images/pixel.gif -#usr/share/nagiosql/install/images/plus.png -#usr/share/nagiosql/install/images/previous.png -#usr/share/nagiosql/install/images/reload.png -#usr/share/nagiosql/install/images/skip.png -#usr/share/nagiosql/install/images/step1_active.png -#usr/share/nagiosql/install/images/step1_deactive.png -#usr/share/nagiosql/install/images/step2_active.png -#usr/share/nagiosql/install/images/step2_deactive.png -#usr/share/nagiosql/install/images/step3_active.png -#usr/share/nagiosql/install/images/step3_deactive.png -#usr/share/nagiosql/install/images/update.png -#usr/share/nagiosql/install/images/valid.png -#usr/share/nagiosql/install/images/warning.png -#usr/share/nagiosql/install/index.php -#usr/share/nagiosql/install/install.php -#usr/share/nagiosql/install/js -#usr/share/nagiosql/install/js/functions.js -#usr/share/nagiosql/install/js/index.html -#usr/share/nagiosql/install/js/prototype.js -#usr/share/nagiosql/install/js/validation.js -#usr/share/nagiosql/install/sql -#usr/share/nagiosql/install/sql/import_nagios_sample.sql -#usr/share/nagiosql/install/sql/index.html -#usr/share/nagiosql/install/sql/nagiosQL_v3_db_mysql.sql -#usr/share/nagiosql/install/sql/update_200_202.sql -#usr/share/nagiosql/install/sql/update_202_303.sql -#usr/share/nagiosql/install/sql/update_300_301.sql -#usr/share/nagiosql/install/sql/update_300b1_300b2.sql -#usr/share/nagiosql/install/sql/update_300b2_300rc1.sql -#usr/share/nagiosql/install/sql/update_300rc1_300.sql -#usr/share/nagiosql/install/sql/update_301_302.sql -#usr/share/nagiosql/install/sql/update_302_303.sql -#usr/share/nagiosql/install/status.php -#usr/share/nagiosql/install/step1.php -#usr/share/nagiosql/install/step2.php -#usr/share/nagiosql/install/step3.php -#usr/share/nagiosql/templates -#usr/share/nagiosql/templates/admin -#usr/share/nagiosql/templates/admin/admin_master.tpl.htm -#usr/share/nagiosql/templates/admin/checkcommands.tpl.htm -#usr/share/nagiosql/templates/admin/contactgroups.tpl.htm -#usr/share/nagiosql/templates/admin/contacts.tpl.htm -#usr/share/nagiosql/templates/admin/contacttemplates.tpl.htm -#usr/share/nagiosql/templates/admin/delbackup.tpl.htm -#usr/share/nagiosql/templates/admin/domain.tpl.htm -#usr/share/nagiosql/templates/admin/helpedit.tpl.htm -#usr/share/nagiosql/templates/admin/hostdependencies.tpl.htm -#usr/share/nagiosql/templates/admin/hostescalations.tpl.htm -#usr/share/nagiosql/templates/admin/hostextinfo.tpl.htm -#usr/share/nagiosql/templates/admin/hostgroups.tpl.htm -#usr/share/nagiosql/templates/admin/hosts.tpl.htm -#usr/share/nagiosql/templates/admin/hosttemplates.tpl.htm -#usr/share/nagiosql/templates/admin/import.tpl.htm -#usr/share/nagiosql/templates/admin/mainpages.tpl.htm -#usr/share/nagiosql/templates/admin/mutdialog.tpl.htm -#usr/share/nagiosql/templates/admin/nagioscfg.tpl.htm -#usr/share/nagiosql/templates/admin/servicedependencies.tpl.htm -#usr/share/nagiosql/templates/admin/serviceescalations.tpl.htm -#usr/share/nagiosql/templates/admin/serviceextinfo.tpl.htm -#usr/share/nagiosql/templates/admin/servicegroups.tpl.htm -#usr/share/nagiosql/templates/admin/services.tpl.htm -#usr/share/nagiosql/templates/admin/servicetemplates.tpl.htm -#usr/share/nagiosql/templates/admin/settings.tpl.htm -#usr/share/nagiosql/templates/admin/timeperiods.tpl.htm -#usr/share/nagiosql/templates/admin/user.tpl.htm -#usr/share/nagiosql/templates/admin/verify.tpl.htm -#usr/share/nagiosql/templates/files -#usr/share/nagiosql/templates/files/commands.tpl.dat -#usr/share/nagiosql/templates/files/contactgroups.tpl.dat -#usr/share/nagiosql/templates/files/contacts.tpl.dat -#usr/share/nagiosql/templates/files/contacttemplates.tpl.dat -#usr/share/nagiosql/templates/files/hostdependencies.tpl.dat -#usr/share/nagiosql/templates/files/hostescalations.tpl.dat -#usr/share/nagiosql/templates/files/hostextinfo.tpl.dat -#usr/share/nagiosql/templates/files/hostgroups.tpl.dat -#usr/share/nagiosql/templates/files/hosts.tpl.dat -#usr/share/nagiosql/templates/files/hosttemplates.tpl.dat -#usr/share/nagiosql/templates/files/servicedependencies.tpl.dat -#usr/share/nagiosql/templates/files/serviceescalations.tpl.dat -#usr/share/nagiosql/templates/files/serviceextinfo.tpl.dat -#usr/share/nagiosql/templates/files/servicegroups.tpl.dat -#usr/share/nagiosql/templates/files/services.tpl.dat -#usr/share/nagiosql/templates/files/servicetemplates.tpl.dat -#usr/share/nagiosql/templates/files/timeperiods.tpl.dat -#usr/share/nagiosql/templates/index.tpl.htm -#usr/share/nagiosql/templates/main.tpl.htm -etc/httpd/conf/vhosts.d/nagios.conf diff --git a/lfs/nagiosql b/lfs/nagiosql deleted file mode 100644 index 4f3182143..000000000 --- a/lfs/nagiosql +++ /dev/null @@ -1,92 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2009 Michael Tremer & Christian Schmidt # -# # -# 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 . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 303 - -THISAPP = nagiosql$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/nagiosql3 -TARGET = $(DIR_INFO)/nagiosql-$(VER) - -PROG = nagiosql -PAK_VER = 1 - -DEPS = "nagios mysql" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 3b15650942cf0fea3b6bbec1700ace38 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - @rm -rf /usr/share/nagiosql - mkdir /usr/share/nagiosql - cd $(DIR_APP) && mv -vf * /usr/share/nagiosql - cp -vf $(DIR_SRC)/config/nagiosql/nagios.conf /etc/httpd/conf/vhosts.d/ - cp -vrf $(DIR_SRC)/config/nagiosql/pear/HTML /usr/lib/php - cp -vrf $(DIR_SRC)/config/nagiosql/etc / - chown -R nobody:nobody /etc/nagiosql - chown nobody /usr/share/nagiosql/config - @rm -rf $(DIR_APP) - @$(POSTBUILD) - diff --git a/make.sh b/make.sh index de119222b..b26947090 100755 --- a/make.sh +++ b/make.sh @@ -1425,7 +1425,6 @@ buildipfire() { lfsmake2 perl-File-ReadBackwards lfsmake2 cacti lfsmake2 openvmtools - lfsmake2 nagiosql lfsmake2 motion lfsmake2 joe lfsmake2 monit diff --git a/src/paks/nagiosql/install.sh b/src/paks/nagiosql/install.sh deleted file mode 100644 index b70134188..000000000 --- a/src/paks/nagiosql/install.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -extract_files -restore_backup ${NAME} -touch /usr/share/nagiosql/install/ENABLE_INSTALLER -/etc/init.d/apache restart - diff --git a/src/paks/nagiosql/uninstall.sh b/src/paks/nagiosql/uninstall.sh deleted file mode 100644 index a7b8a5370..000000000 --- a/src/paks/nagiosql/uninstall.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -stop_service ${NAME} -make_backup ${NAME} -remove_files diff --git a/src/paks/nagiosql/update.sh b/src/paks/nagiosql/update.sh deleted file mode 100644 index 89c40d0d7..000000000 --- a/src/paks/nagiosql/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh From 0cabaf35c2435a653928e46ddcfba5da3fc3e215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20M=C3=BCller?= Date: Sun, 3 Dec 2017 18:10:47 +0100 Subject: [PATCH 10/21] prevent IE from interpreting HTML MIME type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add X-Content-Type-Options header to prevent Internet Explorer from interpreting the MIME type of a server answer on its own, which could lead to security risks. Signed-off-by: Peter Müller Signed-off-by: Michael Tremer --- config/httpd/vhosts.d/captive.conf | 2 ++ config/httpd/vhosts.d/ipfire-interface-ssl.conf | 4 ++++ config/httpd/vhosts.d/ipfire-interface.conf | 2 ++ 3 files changed, 8 insertions(+) diff --git a/config/httpd/vhosts.d/captive.conf b/config/httpd/vhosts.d/captive.conf index e4e1d78f1..e71a26081 100644 --- a/config/httpd/vhosts.d/captive.conf +++ b/config/httpd/vhosts.d/captive.conf @@ -9,6 +9,8 @@ Listen 1013 # code was entered. KeepAlive Off + Header always set X-Content-Type-Options nosniff + ScriptAlias /cgi-bin/ /srv/web/ipfire/cgi-bin/captive/ Alias /assets/ /srv/web/ipfire/html/captive/assets/ diff --git a/config/httpd/vhosts.d/ipfire-interface-ssl.conf b/config/httpd/vhosts.d/ipfire-interface-ssl.conf index dacf6a005..c5d8ffba9 100644 --- a/config/httpd/vhosts.d/ipfire-interface-ssl.conf +++ b/config/httpd/vhosts.d/ipfire-interface-ssl.conf @@ -3,10 +3,12 @@ RewriteEngine on RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS) RewriteRule .* - [F] + DocumentRoot /srv/web/ipfire/html ServerAdmin root@localhost ErrorLog /var/log/httpd/error_log TransferLog /var/log/httpd/access_log + SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:CAMELLIA128-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:CAMELLIA256-SHA @@ -18,6 +20,8 @@ SSLCertificateFile /etc/httpd/server-ecdsa.crt SSLCertificateKeyFile /etc/httpd/server-ecdsa.key + Header always set X-Content-Type-Options nosniff + Options ExecCGI AllowOverride None diff --git a/config/httpd/vhosts.d/ipfire-interface.conf b/config/httpd/vhosts.d/ipfire-interface.conf index be15cd041..5c7ddc719 100644 --- a/config/httpd/vhosts.d/ipfire-interface.conf +++ b/config/httpd/vhosts.d/ipfire-interface.conf @@ -6,6 +6,8 @@ RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS) RewriteRule .* - [F] + Header always set X-Content-Type-Options nosniff + Options ExecCGI AllowOverride None From 7ddfc686e232ed7e7bdbcd3b954fdebf0f8d7896 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 16 Dec 2017 12:16:54 +0000 Subject: [PATCH 11/21] core118: Add changed apache configuration Signed-off-by: Michael Tremer --- config/rootfiles/core/118/filelists/files | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/rootfiles/core/118/filelists/files b/config/rootfiles/core/118/filelists/files index 168c7d188..34061a38a 100644 --- a/config/rootfiles/core/118/filelists/files +++ b/config/rootfiles/core/118/filelists/files @@ -1,3 +1,6 @@ etc/system-release etc/issue +etc/httpd/conf/vhosts.d/captive.conf +etc/httpd/conf/vhosts.d/ipfire-interface-ssl.conf +etc/httpd/conf/vhosts.d/ipfire-interface.conf var/ipfire/langs From eb6d71514a27e4af5953bd07c34f3ee82c2ef463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20M=C3=BCller?= Date: Sun, 3 Dec 2017 20:34:02 +0100 Subject: [PATCH 12/21] prevent loading resources from external sites MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make Apache transmit a CSP (Content Security Policy) header for WebUI and Captive Portal contents. This prevents some XSS and content injection attacks, especially in case no transport encryption (Captive Portal!) can be used. Signed-off-by: Peter Müller Signed-off-by: Michael Tremer --- config/httpd/vhosts.d/captive.conf | 1 + config/httpd/vhosts.d/ipfire-interface-ssl.conf | 1 + config/httpd/vhosts.d/ipfire-interface.conf | 1 + 3 files changed, 3 insertions(+) diff --git a/config/httpd/vhosts.d/captive.conf b/config/httpd/vhosts.d/captive.conf index e71a26081..629fa8180 100644 --- a/config/httpd/vhosts.d/captive.conf +++ b/config/httpd/vhosts.d/captive.conf @@ -10,6 +10,7 @@ Listen 1013 KeepAlive Off Header always set X-Content-Type-Options nosniff + Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" ScriptAlias /cgi-bin/ /srv/web/ipfire/cgi-bin/captive/ Alias /assets/ /srv/web/ipfire/html/captive/assets/ diff --git a/config/httpd/vhosts.d/ipfire-interface-ssl.conf b/config/httpd/vhosts.d/ipfire-interface-ssl.conf index c5d8ffba9..b5052dda4 100644 --- a/config/httpd/vhosts.d/ipfire-interface-ssl.conf +++ b/config/httpd/vhosts.d/ipfire-interface-ssl.conf @@ -21,6 +21,7 @@ SSLCertificateKeyFile /etc/httpd/server-ecdsa.key Header always set X-Content-Type-Options nosniff + Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" Options ExecCGI diff --git a/config/httpd/vhosts.d/ipfire-interface.conf b/config/httpd/vhosts.d/ipfire-interface.conf index 5c7ddc719..b70994404 100644 --- a/config/httpd/vhosts.d/ipfire-interface.conf +++ b/config/httpd/vhosts.d/ipfire-interface.conf @@ -7,6 +7,7 @@ RewriteRule .* - [F] Header always set X-Content-Type-Options nosniff + Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'" Options ExecCGI From 097118e5678f139a56202c1fd306cdefff5371bd Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 16 Dec 2017 12:18:45 +0000 Subject: [PATCH 13/21] core118: Reload apache to make configuration changes take effect Signed-off-by: Michael Tremer --- config/rootfiles/core/118/update.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/config/rootfiles/core/118/update.sh b/config/rootfiles/core/118/update.sh index b5086682a..e04f04783 100644 --- a/config/rootfiles/core/118/update.sh +++ b/config/rootfiles/core/118/update.sh @@ -43,6 +43,7 @@ ldconfig /usr/local/bin/update-lang-cache # Start services +/etc/init.d/apache reload # This update need a reboot... #touch /var/run/need_reboot From 2af354c2649fb2bc1d2a3fafb87111b2dc0f433d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 16 Dec 2017 12:29:06 +0000 Subject: [PATCH 14/21] Decouple nagios-plugins from icinga Signed-off-by: Michael Tremer --- config/rootfiles/packages/icinga | 79 --------------------- config/rootfiles/packages/nagios-plugins | 79 +++++++++++++++++++++ lfs/icinga | 35 ++------- lfs/nagios-plugins | 90 ++++++++++++++++++++++++ make.sh | 1 + 5 files changed, 175 insertions(+), 109 deletions(-) create mode 100644 config/rootfiles/packages/nagios-plugins create mode 100644 lfs/nagios-plugins diff --git a/config/rootfiles/packages/icinga b/config/rootfiles/packages/icinga index 7a8ae9224..0838baae1 100644 --- a/config/rootfiles/packages/icinga +++ b/config/rootfiles/packages/icinga @@ -24,85 +24,6 @@ usr/bin/icinga usr/bin/icingastats #usr/lib/icinga usr/lib/icinga/p1.pl -#usr/lib/icinga/plugins -usr/lib/icinga/plugins/check_apt -usr/lib/icinga/plugins/check_breeze -usr/lib/icinga/plugins/check_by_ssh -usr/lib/icinga/plugins/check_clamd -usr/lib/icinga/plugins/check_cluster -usr/lib/icinga/plugins/check_dhcp -usr/lib/icinga/plugins/check_dig -usr/lib/icinga/plugins/check_disk -usr/lib/icinga/plugins/check_disk_smb -usr/lib/icinga/plugins/check_dns -usr/lib/icinga/plugins/check_dummy -usr/lib/icinga/plugins/check_file_age -usr/lib/icinga/plugins/check_flexlm -usr/lib/icinga/plugins/check_ftp -usr/lib/icinga/plugins/check_hpjd -usr/lib/icinga/plugins/check_http -usr/lib/icinga/plugins/check_icmp -usr/lib/icinga/plugins/check_ide_smart -usr/lib/icinga/plugins/check_ifoperstatus -usr/lib/icinga/plugins/check_ifstatus -usr/lib/icinga/plugins/check_imap -usr/lib/icinga/plugins/check_ircd -usr/lib/icinga/plugins/check_jabber -usr/lib/icinga/plugins/check_ldap -usr/lib/icinga/plugins/check_ldaps -usr/lib/icinga/plugins/check_load -usr/lib/icinga/plugins/check_log -usr/lib/icinga/plugins/check_mailq -usr/lib/icinga/plugins/check_mrtg -usr/lib/icinga/plugins/check_mrtgtraf -usr/lib/icinga/plugins/check_mysql -usr/lib/icinga/plugins/check_mysql_query -usr/lib/icinga/plugins/check_nagios -usr/lib/icinga/plugins/check_nntp -usr/lib/icinga/plugins/check_nntps -usr/lib/icinga/plugins/check_nt -usr/lib/icinga/plugins/check_ntp -usr/lib/icinga/plugins/check_ntp_peer -usr/lib/icinga/plugins/check_ntp_time -usr/lib/icinga/plugins/check_nwstat -usr/lib/icinga/plugins/check_oracle -usr/lib/icinga/plugins/check_overcr -usr/lib/icinga/plugins/check_ping -usr/lib/icinga/plugins/check_pop -usr/lib/icinga/plugins/check_procs -usr/lib/icinga/plugins/check_real -usr/lib/icinga/plugins/check_rpc -usr/lib/icinga/plugins/check_sensors -usr/lib/icinga/plugins/check_simap -usr/lib/icinga/plugins/check_smtp -usr/lib/icinga/plugins/check_snmp -usr/lib/icinga/plugins/check_spop -usr/lib/icinga/plugins/check_ssh -usr/lib/icinga/plugins/check_ssmtp -usr/lib/icinga/plugins/check_swap -usr/lib/icinga/plugins/check_tcp -usr/lib/icinga/plugins/check_time -usr/lib/icinga/plugins/check_udp -usr/lib/icinga/plugins/check_ups -usr/lib/icinga/plugins/check_uptime -usr/lib/icinga/plugins/check_users -usr/lib/icinga/plugins/check_wave -usr/lib/icinga/plugins/eventhandlers -usr/lib/icinga/plugins/eventhandlers/disable_active_service_checks -usr/lib/icinga/plugins/eventhandlers/disable_notifications -usr/lib/icinga/plugins/eventhandlers/distributed-monitoring -usr/lib/icinga/plugins/eventhandlers/distributed-monitoring/obsessive_svc_handler -usr/lib/icinga/plugins/eventhandlers/distributed-monitoring/submit_check_result_via_nsca -usr/lib/icinga/plugins/eventhandlers/enable_active_service_checks -usr/lib/icinga/plugins/eventhandlers/enable_notifications -usr/lib/icinga/plugins/eventhandlers/redundancy-scenario1 -usr/lib/icinga/plugins/eventhandlers/redundancy-scenario1/handle-master-host-event -usr/lib/icinga/plugins/eventhandlers/redundancy-scenario1/handle-master-proc-event -usr/lib/icinga/plugins/eventhandlers/submit_check_result -usr/lib/icinga/plugins/negate -usr/lib/icinga/plugins/urlize -usr/lib/icinga/plugins/utils.pm -usr/lib/icinga/plugins/utils.sh usr/share/icinga usr/share/icinga/cgi-bin usr/share/icinga/cgi-bin/avail.cgi diff --git a/config/rootfiles/packages/nagios-plugins b/config/rootfiles/packages/nagios-plugins new file mode 100644 index 000000000..bb7365012 --- /dev/null +++ b/config/rootfiles/packages/nagios-plugins @@ -0,0 +1,79 @@ +usr/lib/nagios/plugins +usr/lib/nagios/plugins/check_apt +usr/lib/nagios/plugins/check_breeze +usr/lib/nagios/plugins/check_by_ssh +usr/lib/nagios/plugins/check_clamd +usr/lib/nagios/plugins/check_cluster +usr/lib/nagios/plugins/check_dhcp +usr/lib/nagios/plugins/check_dig +usr/lib/nagios/plugins/check_disk +usr/lib/nagios/plugins/check_disk_smb +usr/lib/nagios/plugins/check_dns +usr/lib/nagios/plugins/check_dummy +usr/lib/nagios/plugins/check_file_age +usr/lib/nagios/plugins/check_flexlm +usr/lib/nagios/plugins/check_ftp +usr/lib/nagios/plugins/check_hpjd +usr/lib/nagios/plugins/check_http +usr/lib/nagios/plugins/check_icmp +usr/lib/nagios/plugins/check_ide_smart +usr/lib/nagios/plugins/check_ifoperstatus +usr/lib/nagios/plugins/check_ifstatus +usr/lib/nagios/plugins/check_imap +usr/lib/nagios/plugins/check_ircd +usr/lib/nagios/plugins/check_jabber +usr/lib/nagios/plugins/check_ldap +usr/lib/nagios/plugins/check_ldaps +usr/lib/nagios/plugins/check_load +usr/lib/nagios/plugins/check_log +usr/lib/nagios/plugins/check_mailq +usr/lib/nagios/plugins/check_mrtg +usr/lib/nagios/plugins/check_mrtgtraf +usr/lib/nagios/plugins/check_mysql +usr/lib/nagios/plugins/check_mysql_query +usr/lib/nagios/plugins/check_nagios +usr/lib/nagios/plugins/check_nntp +usr/lib/nagios/plugins/check_nntps +usr/lib/nagios/plugins/check_nt +usr/lib/nagios/plugins/check_ntp +usr/lib/nagios/plugins/check_ntp_peer +usr/lib/nagios/plugins/check_ntp_time +usr/lib/nagios/plugins/check_nwstat +usr/lib/nagios/plugins/check_oracle +usr/lib/nagios/plugins/check_overcr +usr/lib/nagios/plugins/check_ping +usr/lib/nagios/plugins/check_pop +usr/lib/nagios/plugins/check_procs +usr/lib/nagios/plugins/check_real +usr/lib/nagios/plugins/check_rpc +usr/lib/nagios/plugins/check_sensors +usr/lib/nagios/plugins/check_simap +usr/lib/nagios/plugins/check_smtp +usr/lib/nagios/plugins/check_snmp +usr/lib/nagios/plugins/check_spop +usr/lib/nagios/plugins/check_ssh +usr/lib/nagios/plugins/check_ssmtp +usr/lib/nagios/plugins/check_swap +usr/lib/nagios/plugins/check_tcp +usr/lib/nagios/plugins/check_time +usr/lib/nagios/plugins/check_udp +usr/lib/nagios/plugins/check_ups +usr/lib/nagios/plugins/check_uptime +usr/lib/nagios/plugins/check_users +usr/lib/nagios/plugins/check_wave +usr/lib/nagios/plugins/eventhandlers +usr/lib/nagios/plugins/eventhandlers/disable_active_service_checks +usr/lib/nagios/plugins/eventhandlers/disable_notifications +usr/lib/nagios/plugins/eventhandlers/distributed-monitoring +usr/lib/nagios/plugins/eventhandlers/distributed-monitoring/obsessive_svc_handler +usr/lib/nagios/plugins/eventhandlers/distributed-monitoring/submit_check_result_via_nsca +usr/lib/nagios/plugins/eventhandlers/enable_active_service_checks +usr/lib/nagios/plugins/eventhandlers/enable_notifications +usr/lib/nagios/plugins/eventhandlers/redundancy-scenario1 +usr/lib/nagios/plugins/eventhandlers/redundancy-scenario1/handle-master-host-event +usr/lib/nagios/plugins/eventhandlers/redundancy-scenario1/handle-master-proc-event +usr/lib/nagios/plugins/eventhandlers/submit_check_result +usr/lib/nagios/plugins/negate +usr/lib/nagios/plugins/urlize +usr/lib/nagios/plugins/utils.pm +usr/lib/nagios/plugins/utils.sh diff --git a/lfs/icinga b/lfs/icinga index 5d8d5a16f..43fc22b24 100644 --- a/lfs/icinga +++ b/lfs/icinga @@ -25,7 +25,6 @@ include Config VER = 1.11.4 -PLUGIN_VER = 2.0.2 THISAPP = icinga-$(VER) DL_FILE = $(THISAPP).tar.gz @@ -33,24 +32,19 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = icinga -PAK_VER = 2 +PAK_VER = 3 -DEPS = "" - -CFLAGS += -fno-strict-aliasing +DEPS = "nagios-plugins" ############################################################################### # Top-level Rules ############################################################################### -objects = $(DL_FILE) nagios-plugins-$(PLUGIN_VER).tar.gz +objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -nagios-plugins-$(PLUGIN_VER).tar.gz = \ - $(DL_FROM)/nagios-plugins-$(PLUGIN_VER).tar.gz $(DL_FILE)_MD5 = cfe64b91ec84f5431e53959e31ff07b5 -nagios-plugins-$(PLUGIN_VER).tar.gz_MD5 = 2f6d9c43adcf9f024175e48a44d099d4 install : $(TARGET) @@ -83,10 +77,6 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - @rm -rf $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) && cd $(DIR_SRC) && \ - tar axf $(DIR_DL)/nagios-plugins-$(PLUGIN_VER).tar.gz - - # Compile core cd $(DIR_APP) && \ ./configure \ --prefix=/usr \ @@ -96,7 +86,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --sbindir=/usr/share/icinga/cgi-bin \ --localstatedir=/var/icinga \ --libdir=/usr/lib/icinga \ - --libexecdir=/usr/lib/icinga/plugins \ + --libexecdir=/usr/lib/nagios/plugins \ --with-lockfile=/var/run/icinga.pid \ --with-httpd-conf=/etc/httpd/conf/conf.d \ --with-icinga-user=nobody \ @@ -105,18 +95,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) --enable-embedded-perl \ --disable-idoutils cd $(DIR_APP) && make all $(MAKETUNING) - - # Compile plugins - cd $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) && \ - ./configure \ - --prefix=/usr \ - --libexecdir=/usr/lib/icinga/plugins \ - --with-nagios-user=nobody \ - --with-nagios-group=nobody \ - --without-ipv6 - cd $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) && make $(MAKETUNING) - - # Install core cd $(DIR_APP) && make \ install install-init install-commandmode install-config \ install-webconf install-eventhandlers @@ -124,9 +102,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/icinga/icinga.conf \ /etc/httpd/conf/vhosts.d/icinga.conf - # Install plugins - cd $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) && make install - ln -svf /etc/rc.d/init.d/icinga /etc/rc.d/rc3.d/S67icinga ln -svf /etc/rc.d/init.d/icinga /etc/rc.d/rc0.d/K33icinga ln -svf /etc/rc.d/init.d/icinga /etc/rc.d/rc6.d/K33icinga @@ -134,5 +109,5 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) install -v -m 644 $(DIR_SRC)/config/backup/includes/icinga \ /var/ipfire/backup/addons/includes/icinga - @rm -rf $(DIR_APP) $(DIR_SRC)/nagios-plugins-$(PLUGIN_VER) + @rm -rf $(DIR_APP) @$(POSTBUILD) diff --git a/lfs/nagios-plugins b/lfs/nagios-plugins new file mode 100644 index 000000000..30eb23fbc --- /dev/null +++ b/lfs/nagios-plugins @@ -0,0 +1,90 @@ +############################################################################### +# # +# IPFire.org - A linux based firewall # +# Copyright (C) 2007-2012 IPFire Team # +# # +# 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 . # +# # +############################################################################### + +############################################################################### +# Definitions +############################################################################### + +include Config + +VER = 2.2.1 + +THISAPP = nagios-plugins-$(VER) +DL_FILE = $(THISAPP).tar.gz +DL_FROM = $(URL_IPFIRE) +DIR_APP = $(DIR_SRC)/$(THISAPP) +TARGET = $(DIR_INFO)/$(THISAPP) +PROG = nagios-plugins +PAK_VER = 1 + +DEPS = "" + +############################################################################### +# Top-level Rules +############################################################################### + +objects = $(DL_FILE) + +$(DL_FILE) = $(DL_FROM)/$(DL_FILE) + +$(DL_FILE)_MD5 = fb521d5c05897f165b0b1862c1e5cb27 + +install : $(TARGET) + +check : $(patsubst %,$(DIR_CHK)/%,$(objects)) + +download :$(patsubst %,$(DIR_DL)/%,$(objects)) + +md5 : $(subst %,%_MD5,$(objects)) + +dist: + @$(PAK) + +############################################################################### +# Downloading, checking, md5sum +############################################################################### + +$(patsubst %,$(DIR_CHK)/%,$(objects)) : + @$(CHECK) + +$(patsubst %,$(DIR_DL)/%,$(objects)) : + @$(LOAD) + +$(subst %,%_MD5,$(objects)) : + @$(MD5) + +############################################################################### +# Installation Details +############################################################################### + +$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) + @$(PREBUILD) + @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && \ + ./configure \ + --prefix=/usr \ + --libexecdir=/usr/lib/nagios/plugins \ + --with-nagios-user=nobody \ + --with-nagios-group=nobody \ + --without-ipv6 + cd $(DIR_APP) && make $(MAKETUNING) + cd $(DIR_APP) && make install + @rm -rf $(DIR_APP) + @$(POSTBUILD) diff --git a/make.sh b/make.sh index b26947090..102914163 100755 --- a/make.sh +++ b/make.sh @@ -1371,6 +1371,7 @@ buildipfire() { lfsmake2 netsnmpd lfsmake2 nagios lfsmake2 nagios_nrpe + lfsmake2 nagios-plugins lfsmake2 icinga lfsmake2 ebtables lfsmake2 directfb From 4ae71b37d49eb1b87dd54ac6f8a4f1de497e5f59 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 16 Dec 2017 12:29:43 +0000 Subject: [PATCH 15/21] nagios nrpe: Depend on nagios-plugins package instead of main nagios package Signed-off-by: Michael Tremer --- lfs/nagios_nrpe | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lfs/nagios_nrpe b/lfs/nagios_nrpe index 050c9294f..6d16661bd 100644 --- a/lfs/nagios_nrpe +++ b/lfs/nagios_nrpe @@ -33,9 +33,9 @@ DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) PROG = nagios_nrpe -PAK_VER = 2 +PAK_VER = 3 -DEPS = "nagios" +DEPS = "nagios-plugins" ############################################################################### # Top-level Rules From 4d86ce702167f55fe1872eec6776b2233a8641da Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 16 Dec 2017 12:31:47 +0000 Subject: [PATCH 16/21] Drop nagios This is no longer maintained and icinga is available. Signed-off-by: Michael Tremer --- config/httpd/vhosts.d/nagios.conf | 41 --- config/rootfiles/common/apache2 | 1 - config/rootfiles/packages/nagios | 453 ------------------------------ lfs/nagios | 114 -------- make.sh | 1 - src/paks/nagios/install.sh | 29 -- src/paks/nagios/uninstall.sh | 27 -- src/paks/nagios/update.sh | 26 -- 8 files changed, 692 deletions(-) delete mode 100644 config/httpd/vhosts.d/nagios.conf delete mode 100644 config/rootfiles/packages/nagios delete mode 100644 lfs/nagios delete mode 100644 src/paks/nagios/install.sh delete mode 100644 src/paks/nagios/uninstall.sh delete mode 100644 src/paks/nagios/update.sh diff --git a/config/httpd/vhosts.d/nagios.conf b/config/httpd/vhosts.d/nagios.conf deleted file mode 100644 index 8a320d793..000000000 --- a/config/httpd/vhosts.d/nagios.conf +++ /dev/null @@ -1,41 +0,0 @@ -Listen 1008 - - - -# SAMPLE CONFIG SNIPPETS FOR APACHE WEB SERVER -# Last Modified: 11-26-2005 -# -# This file contains examples of entries that need -# to be incorporated into your Apache web server -# configuration file. Customize the paths, etc. as -# needed to fit your system. - -ScriptAlias /nagios/cgi-bin "/usr/share/nagios/cgi-bin" - - -# SSLRequireSSL - Options ExecCGI - AllowOverride None -# Require all granted -# Require ip 127.0.0.1 - AuthName "Nagios Access" - AuthType Basic - AuthUserFile /etc/nagios/htpasswd.users - Require valid-user - - -Alias /nagios "/usr/share/nagios" - - -# SSLRequireSSL - Options None - AllowOverride None -# Require all granted -# Require ip 127.0.0.1 - AuthName "Nagios Access" - AuthType Basic - AuthUserFile /etc/nagios/htpasswd.users - Require valid-user - - - diff --git a/config/rootfiles/common/apache2 b/config/rootfiles/common/apache2 index 64faa7926..d7aa00438 100644 --- a/config/rootfiles/common/apache2 +++ b/config/rootfiles/common/apache2 @@ -46,7 +46,6 @@ etc/httpd/conf/uid.conf etc/httpd/conf/vhosts.d/captive.conf etc/httpd/conf/vhosts.d/ipfire-interface-ssl.conf etc/httpd/conf/vhosts.d/ipfire-interface.conf -#etc/httpd/conf/vhosts.d/nagios.conf #etc/httpd/conf/vhosts.d/openmailadmin.conf #srv/web #srv/web/ipfire diff --git a/config/rootfiles/packages/nagios b/config/rootfiles/packages/nagios deleted file mode 100644 index 971a36061..000000000 --- a/config/rootfiles/packages/nagios +++ /dev/null @@ -1,453 +0,0 @@ -etc/httpd/conf/conf.d/nagios.conf -#etc/nagios -etc/nagios/cgi.cfg -etc/nagios/nagios.cfg -#etc/nagios/objects -etc/nagios/objects/commands.cfg -etc/nagios/objects/contacts.cfg -etc/nagios/objects/localhost.cfg -etc/nagios/objects/printer.cfg -etc/nagios/objects/switch.cfg -etc/nagios/objects/templates.cfg -etc/nagios/objects/timeperiods.cfg -etc/nagios/objects/windows.cfg -etc/nagios/resource.cfg -etc/rc.d/init.d/nagios -etc/rc.d/rc0.d/K33nagios -etc/rc.d/rc3.d/S67nagios -etc/rc.d/rc6.d/K33nagios -usr/bin/nagios -usr/bin/nagiostats -usr/bin/p1.pl -usr/lib/nagios -#usr/lib/nagios/check_apt -#usr/lib/nagios/check_breeze -#usr/lib/nagios/check_by_ssh -#usr/lib/nagios/check_clamd -#usr/lib/nagios/check_cluster -#usr/lib/nagios/check_dhcp -#usr/lib/nagios/check_dig -#usr/lib/nagios/check_disk -#usr/lib/nagios/check_disk_smb -#usr/lib/nagios/check_dns -#usr/lib/nagios/check_dummy -#usr/lib/nagios/check_file_age -#usr/lib/nagios/check_flexlm -#usr/lib/nagios/check_ftp -#usr/lib/nagios/check_hpjd -#usr/lib/nagios/check_http -#usr/lib/nagios/check_icmp -#usr/lib/nagios/check_ide_smart -#usr/lib/nagios/check_ifoperstatus -#usr/lib/nagios/check_ifstatus -#usr/lib/nagios/check_imap -#usr/lib/nagios/check_ircd -#usr/lib/nagios/check_jabber -#usr/lib/nagios/check_ldap -#usr/lib/nagios/check_ldaps -#usr/lib/nagios/check_load -#usr/lib/nagios/check_log -#usr/lib/nagios/check_mailq -#usr/lib/nagios/check_mrtg -#usr/lib/nagios/check_mrtgtraf -#usr/lib/nagios/check_mysql -#usr/lib/nagios/check_mysql_query -#usr/lib/nagios/check_nagios -#usr/lib/nagios/check_nntp -#usr/lib/nagios/check_nntps -#usr/lib/nagios/check_nt -#usr/lib/nagios/check_ntp -#usr/lib/nagios/check_ntp_peer -#usr/lib/nagios/check_ntp_time -#usr/lib/nagios/check_nwstat -#usr/lib/nagios/check_oracle -#usr/lib/nagios/check_overcr -#usr/lib/nagios/check_ping -#usr/lib/nagios/check_pop -#usr/lib/nagios/check_procs -#usr/lib/nagios/check_real -#usr/lib/nagios/check_rpc -#usr/lib/nagios/check_sensors -#usr/lib/nagios/check_simap -#usr/lib/nagios/check_smtp -#usr/lib/nagios/check_snmp -#usr/lib/nagios/check_spop -#usr/lib/nagios/check_ssh -#usr/lib/nagios/check_ssmtp -#usr/lib/nagios/check_swap -#usr/lib/nagios/check_tcp -#usr/lib/nagios/check_time -#usr/lib/nagios/check_udp -#usr/lib/nagios/check_ups -#usr/lib/nagios/check_users -#usr/lib/nagios/check_wave -#usr/lib/nagios/negate -#usr/lib/nagios/urlize -#usr/lib/nagios/utils.pm -#usr/lib/nagios/utils.sh -usr/share/locale/de/LC_MESSAGES/nagios-plugins.mo -#usr/share/locale/fr/LC_MESSAGES/nagios-plugins.mo -usr/share/nagios -#usr/share/nagios/cgi-bin -#usr/share/nagios/cgi-bin/avail.cgi -#usr/share/nagios/cgi-bin/cmd.cgi -#usr/share/nagios/cgi-bin/config.cgi -#usr/share/nagios/cgi-bin/extinfo.cgi -#usr/share/nagios/cgi-bin/histogram.cgi -#usr/share/nagios/cgi-bin/history.cgi -#usr/share/nagios/cgi-bin/notifications.cgi -#usr/share/nagios/cgi-bin/outages.cgi -#usr/share/nagios/cgi-bin/showlog.cgi -#usr/share/nagios/cgi-bin/status.cgi -#usr/share/nagios/cgi-bin/statusmap.cgi -#usr/share/nagios/cgi-bin/statuswml.cgi -#usr/share/nagios/cgi-bin/statuswrl.cgi -#usr/share/nagios/cgi-bin/summary.cgi -#usr/share/nagios/cgi-bin/tac.cgi -#usr/share/nagios/cgi-bin/trends.cgi -#usr/share/nagios/contexthelp -#usr/share/nagios/contexthelp/A1.html -#usr/share/nagios/contexthelp/A2.html -#usr/share/nagios/contexthelp/A3.html -#usr/share/nagios/contexthelp/A4.html -#usr/share/nagios/contexthelp/A5.html -#usr/share/nagios/contexthelp/A6.html -#usr/share/nagios/contexthelp/A7.html -#usr/share/nagios/contexthelp/B1.html -#usr/share/nagios/contexthelp/C1.html -#usr/share/nagios/contexthelp/D1.html -#usr/share/nagios/contexthelp/E1.html -#usr/share/nagios/contexthelp/F1.html -#usr/share/nagios/contexthelp/G1.html -#usr/share/nagios/contexthelp/G2.html -#usr/share/nagios/contexthelp/G3.html -#usr/share/nagios/contexthelp/G4.html -#usr/share/nagios/contexthelp/G5.html -#usr/share/nagios/contexthelp/G6.html -#usr/share/nagios/contexthelp/H1.html -#usr/share/nagios/contexthelp/H2.html -#usr/share/nagios/contexthelp/H3.html -#usr/share/nagios/contexthelp/H4.html -#usr/share/nagios/contexthelp/H5.html -#usr/share/nagios/contexthelp/H6.html -#usr/share/nagios/contexthelp/H7.html -#usr/share/nagios/contexthelp/H8.html -#usr/share/nagios/contexthelp/I1.html -#usr/share/nagios/contexthelp/I2.html -#usr/share/nagios/contexthelp/I3.html -#usr/share/nagios/contexthelp/I4.html -#usr/share/nagios/contexthelp/I5.html -#usr/share/nagios/contexthelp/I6.html -#usr/share/nagios/contexthelp/I7.html -#usr/share/nagios/contexthelp/I8.html -#usr/share/nagios/contexthelp/I9.html -#usr/share/nagios/contexthelp/J1.html -#usr/share/nagios/contexthelp/K1.html -#usr/share/nagios/contexthelp/L1.html -#usr/share/nagios/contexthelp/L10.html -#usr/share/nagios/contexthelp/L11.html -#usr/share/nagios/contexthelp/L12.html -#usr/share/nagios/contexthelp/L13.html -#usr/share/nagios/contexthelp/L2.html -#usr/share/nagios/contexthelp/L3.html -#usr/share/nagios/contexthelp/L4.html -#usr/share/nagios/contexthelp/L5.html -#usr/share/nagios/contexthelp/L6.html -#usr/share/nagios/contexthelp/L7.html -#usr/share/nagios/contexthelp/L8.html -#usr/share/nagios/contexthelp/L9.html -#usr/share/nagios/contexthelp/M1.html -#usr/share/nagios/contexthelp/M2.html -#usr/share/nagios/contexthelp/M3.html -#usr/share/nagios/contexthelp/M4.html -#usr/share/nagios/contexthelp/M5.html -#usr/share/nagios/contexthelp/M6.html -#usr/share/nagios/contexthelp/N1.html -#usr/share/nagios/contexthelp/N2.html -#usr/share/nagios/contexthelp/N3.html -#usr/share/nagios/contexthelp/N4.html -#usr/share/nagios/contexthelp/N5.html -#usr/share/nagios/contexthelp/N6.html -#usr/share/nagios/contexthelp/N7.html -#usr/share/nagios/docs -#usr/share/nagios/docs/about.html -#usr/share/nagios/docs/activechecks.html -#usr/share/nagios/docs/adaptive.html -#usr/share/nagios/docs/addons.html -#usr/share/nagios/docs/beginners.html -#usr/share/nagios/docs/cachedchecks.html -#usr/share/nagios/docs/cgiauth.html -#usr/share/nagios/docs/cgiincludes.html -#usr/share/nagios/docs/cgis.html -#usr/share/nagios/docs/cgisecurity.html -#usr/share/nagios/docs/checkscheduling.html -#usr/share/nagios/docs/clusters.html -#usr/share/nagios/docs/config.html -#usr/share/nagios/docs/configcgi.html -#usr/share/nagios/docs/configmain.html -#usr/share/nagios/docs/configobject.html -#usr/share/nagios/docs/customobjectvars.html -#usr/share/nagios/docs/dependencies.html -#usr/share/nagios/docs/dependencychecks.html -#usr/share/nagios/docs/distributed.html -#usr/share/nagios/docs/downtime.html -#usr/share/nagios/docs/embeddedperl.html -#usr/share/nagios/docs/epnplugins.html -#usr/share/nagios/docs/escalations.html -#usr/share/nagios/docs/eventhandlers.html -#usr/share/nagios/docs/extcommands.html -#usr/share/nagios/docs/faststartup.html -#usr/share/nagios/docs/flapping.html -#usr/share/nagios/docs/freshness.html -#usr/share/nagios/docs/funstuff.html -#usr/share/nagios/docs/hostchecks.html -#usr/share/nagios/docs/images -#usr/share/nagios/docs/images/activechecks.png -#usr/share/nagios/docs/images/cachedcheckgraphs.png -#usr/share/nagios/docs/images/cachedchecks.png -#usr/share/nagios/docs/images/cachedchecks1.png -#usr/share/nagios/docs/images/cgi-avail-a.png -#usr/share/nagios/docs/images/cgi-avail-b.png -#usr/share/nagios/docs/images/cgi-cmd.png -#usr/share/nagios/docs/images/cgi-config.png -#usr/share/nagios/docs/images/cgi-extinfo-a.png -#usr/share/nagios/docs/images/cgi-extinfo-b.png -#usr/share/nagios/docs/images/cgi-extinfo-c.png -#usr/share/nagios/docs/images/cgi-extinfo-d.png -#usr/share/nagios/docs/images/cgi-histogram.png -#usr/share/nagios/docs/images/cgi-history.png -#usr/share/nagios/docs/images/cgi-notifications.png -#usr/share/nagios/docs/images/cgi-outages.png -#usr/share/nagios/docs/images/cgi-showlog.png -#usr/share/nagios/docs/images/cgi-status-a.png -#usr/share/nagios/docs/images/cgi-status-b.png -#usr/share/nagios/docs/images/cgi-status-c.png -#usr/share/nagios/docs/images/cgi-status-d.png -#usr/share/nagios/docs/images/cgi-statusmap.png -#usr/share/nagios/docs/images/cgi-statuswml.png -#usr/share/nagios/docs/images/cgi-statuswrl.png -#usr/share/nagios/docs/images/cgi-summary.png -#usr/share/nagios/docs/images/cgi-tac.png -#usr/share/nagios/docs/images/cgi-trends.png -#usr/share/nagios/docs/images/checkmark.png -#usr/share/nagios/docs/images/checktiming.png -#usr/share/nagios/docs/images/configoverview.png -#usr/share/nagios/docs/images/distributed.png -#usr/share/nagios/docs/images/downtime.png -#usr/share/nagios/docs/images/epn.png -#usr/share/nagios/docs/images/eventhandlers.png -#usr/share/nagios/docs/images/externalcommands.png -#usr/share/nagios/docs/images/fast-startup.png -#usr/share/nagios/docs/images/fast-startup1.png -#usr/share/nagios/docs/images/fast-startup2.png -#usr/share/nagios/docs/images/freshness.png -#usr/share/nagios/docs/images/host-dependencies.png -#usr/share/nagios/docs/images/important.gif -#usr/share/nagios/docs/images/integrationoverview.png -#usr/share/nagios/docs/images/interleaved1.png -#usr/share/nagios/docs/images/interleaved2.png -#usr/share/nagios/docs/images/interleaved3.png -#usr/share/nagios/docs/images/logofullsize.png -#usr/share/nagios/docs/images/monitoring-printers.png -#usr/share/nagios/docs/images/monitoring-routers.png -#usr/share/nagios/docs/images/monitoring-windows.png -#usr/share/nagios/docs/images/mrtg-activehostchecks.png -#usr/share/nagios/docs/images/mrtg-activelychecked.png -#usr/share/nagios/docs/images/mrtg-activeservicechecks.png -#usr/share/nagios/docs/images/mrtg-cachedchecks.png -#usr/share/nagios/docs/images/mrtg-commandbuffers.png -#usr/share/nagios/docs/images/mrtg-externalcommands.png -#usr/share/nagios/docs/images/mrtg-hostperfstats.png -#usr/share/nagios/docs/images/mrtg-hoststatechange.png -#usr/share/nagios/docs/images/mrtg-passivechecks.png -#usr/share/nagios/docs/images/mrtg-passivelychecked.png -#usr/share/nagios/docs/images/mrtg-serviceperfstats.png -#usr/share/nagios/docs/images/mrtg-servicestatechange.png -#usr/share/nagios/docs/images/multiple-templates1.png -#usr/share/nagios/docs/images/multiple-templates2.png -#usr/share/nagios/docs/images/nagios.jpg -#usr/share/nagios/docs/images/ndoutils.png -#usr/share/nagios/docs/images/network-outage1.png -#usr/share/nagios/docs/images/network-outage2.png -#usr/share/nagios/docs/images/noninterleaved1.png -#usr/share/nagios/docs/images/noninterleaved2.png -#usr/share/nagios/docs/images/note.gif -#usr/share/nagios/docs/images/nrpe.png -#usr/share/nagios/docs/images/nsca.png -#usr/share/nagios/docs/images/nscpp.png -#usr/share/nagios/docs/images/objects-commands.png -#usr/share/nagios/docs/images/objects-contacts.png -#usr/share/nagios/docs/images/objects-hosts.png -#usr/share/nagios/docs/images/objects-services.png -#usr/share/nagios/docs/images/objects-timeperiods.png -#usr/share/nagios/docs/images/passivechecks.png -#usr/share/nagios/docs/images/passivehosttranslation.png -#usr/share/nagios/docs/images/plugins.png -#usr/share/nagios/docs/images/predictive-dependency-checks.png -#usr/share/nagios/docs/images/printer.png -#usr/share/nagios/docs/images/reachability1.png -#usr/share/nagios/docs/images/reachability2.png -#usr/share/nagios/docs/images/reachability3.png -#usr/share/nagios/docs/images/reachability4.png -#usr/share/nagios/docs/images/redudancy.png -#usr/share/nagios/docs/images/redundancy.png -#usr/share/nagios/docs/images/security.png -#usr/share/nagios/docs/images/security1.png -#usr/share/nagios/docs/images/security2.png -#usr/share/nagios/docs/images/security3.png -#usr/share/nagios/docs/images/seealso.gif -#usr/share/nagios/docs/images/service-dependencies.png -#usr/share/nagios/docs/images/statetransitions.png -#usr/share/nagios/docs/images/statetransitions2.png -#usr/share/nagios/docs/images/stoprestart.png -#usr/share/nagios/docs/images/switch.png -#usr/share/nagios/docs/images/tcpwrappers.png -#usr/share/nagios/docs/images/tip.gif -#usr/share/nagios/docs/images/tuning.png -#usr/share/nagios/docs/images/upto.gif -#usr/share/nagios/docs/index.html -#usr/share/nagios/docs/int-snmptrap.html -#usr/share/nagios/docs/int-tcpwrappers.html -#usr/share/nagios/docs/integration.html -#usr/share/nagios/docs/largeinstalltweaks.html -#usr/share/nagios/docs/macrolist.html -#usr/share/nagios/docs/macros.html -#usr/share/nagios/docs/monitoring-linux.html -#usr/share/nagios/docs/monitoring-netware.html -#usr/share/nagios/docs/monitoring-printers.html -#usr/share/nagios/docs/monitoring-publicservices.html -#usr/share/nagios/docs/monitoring-routers.html -#usr/share/nagios/docs/monitoring-windows.html -#usr/share/nagios/docs/mrtggraphs.html -#usr/share/nagios/docs/nagiostats.html -#usr/share/nagios/docs/networkreachability.html -#usr/share/nagios/docs/notifications.html -#usr/share/nagios/docs/objectdefinitions.html -#usr/share/nagios/docs/objectinheritance.html -#usr/share/nagios/docs/objecttricks.html -#usr/share/nagios/docs/oncallrotation.html -#usr/share/nagios/docs/passivechecks.html -#usr/share/nagios/docs/passivestatetranslation.html -#usr/share/nagios/docs/perfdata.html -#usr/share/nagios/docs/pluginapi.html -#usr/share/nagios/docs/plugins.html -#usr/share/nagios/docs/quickstart-fedora.html -#usr/share/nagios/docs/quickstart-opensuse.html -#usr/share/nagios/docs/quickstart-ubuntu.html -#usr/share/nagios/docs/quickstart.html -#usr/share/nagios/docs/redundancy.html -#usr/share/nagios/docs/robots.txt -#usr/share/nagios/docs/security.html -#usr/share/nagios/docs/servicechecks.html -#usr/share/nagios/docs/stalking.html -#usr/share/nagios/docs/startstop.html -#usr/share/nagios/docs/statetypes.html -#usr/share/nagios/docs/timeperiods.html -#usr/share/nagios/docs/toc.html -#usr/share/nagios/docs/tuning.html -#usr/share/nagios/docs/upgrading.html -#usr/share/nagios/docs/verifyconfig.html -#usr/share/nagios/docs/volatileservices.html -#usr/share/nagios/docs/whatsnew.html -usr/share/nagios/images -#usr/share/nagios/images/NagiosEnterprises-whitebg-112x46.png -#usr/share/nagios/images/ack.gif -#usr/share/nagios/images/action.gif -#usr/share/nagios/images/command.png -#usr/share/nagios/images/comment.gif -#usr/share/nagios/images/contexthelp1.gif -#usr/share/nagios/images/contexthelp2.gif -#usr/share/nagios/images/critical.png -#usr/share/nagios/images/delay.gif -#usr/share/nagios/images/delete.gif -#usr/share/nagios/images/detail.gif -#usr/share/nagios/images/disabled.gif -#usr/share/nagios/images/down.gif -#usr/share/nagios/images/downtime.gif -#usr/share/nagios/images/empty.gif -#usr/share/nagios/images/enabled.gif -#usr/share/nagios/images/extinfo.gif -#usr/share/nagios/images/favicon.ico -#usr/share/nagios/images/flapping.gif -#usr/share/nagios/images/globe-support-150x150.png -#usr/share/nagios/images/greendot.gif -#usr/share/nagios/images/histogram.png -#usr/share/nagios/images/history.gif -#usr/share/nagios/images/hostevent.gif -#usr/share/nagios/images/info.png -#usr/share/nagios/images/left.gif -#usr/share/nagios/images/logofullsize.png -#usr/share/nagios/images/logos -#usr/share/nagios/images/logos/nagios.gd2 -#usr/share/nagios/images/logos/nagios.gif -#usr/share/nagios/images/logos/nagiosvrml.png -#usr/share/nagios/images/logos/unknown.gd2 -#usr/share/nagios/images/logos/unknown.gif -#usr/share/nagios/images/logrotate.png -#usr/share/nagios/images/ndisabled.gif -#usr/share/nagios/images/noack.gif -#usr/share/nagios/images/notes.gif -#usr/share/nagios/images/notify.gif -#usr/share/nagios/images/orangedot.gif -#usr/share/nagios/images/passiveonly.gif -#usr/share/nagios/images/recovery.png -#usr/share/nagios/images/redudancy.png -#usr/share/nagios/images/redundancy.png -#usr/share/nagios/images/restart.gif -#usr/share/nagios/images/right.gif -#usr/share/nagios/images/sblogo.jpg -#usr/share/nagios/images/serviceevent.gif -#usr/share/nagios/images/splunk1.gif -#usr/share/nagios/images/splunk2.gif -#usr/share/nagios/images/start.gif -#usr/share/nagios/images/status.gif -#usr/share/nagios/images/status2.gif -#usr/share/nagios/images/status3.gif -#usr/share/nagios/images/status4.gif -#usr/share/nagios/images/stop.gif -#usr/share/nagios/images/tacdisabled.jpg -#usr/share/nagios/images/tacdisabled.png -#usr/share/nagios/images/tacenabled.jpg -#usr/share/nagios/images/tacenabled.png -#usr/share/nagios/images/thermcrit.png -#usr/share/nagios/images/thermok.png -#usr/share/nagios/images/thermwarn.png -#usr/share/nagios/images/trends.gif -#usr/share/nagios/images/trendshost.png -#usr/share/nagios/images/trendssvc.png -#usr/share/nagios/images/unknown.png -#usr/share/nagios/images/up.gif -#usr/share/nagios/images/warning.png -#usr/share/nagios/images/weblogo1.png -#usr/share/nagios/images/zoom1.gif -#usr/share/nagios/images/zoom2.gif -usr/share/nagios/index.html -usr/share/nagios/main.html -usr/share/nagios/media -#usr/share/nagios/robots.txt -#usr/share/nagios/side.html -usr/share/nagios/ssi -usr/share/nagios/stylesheets -#usr/share/nagios/stylesheets/avail.css -#usr/share/nagios/stylesheets/checksanity.css -#usr/share/nagios/stylesheets/cmd.css -#usr/share/nagios/stylesheets/common.css -#usr/share/nagios/stylesheets/config.css -#usr/share/nagios/stylesheets/extinfo.css -#usr/share/nagios/stylesheets/histogram.css -#usr/share/nagios/stylesheets/history.css -#usr/share/nagios/stylesheets/ministatus.css -#usr/share/nagios/stylesheets/notifications.css -#usr/share/nagios/stylesheets/outages.css -#usr/share/nagios/stylesheets/showlog.css -#usr/share/nagios/stylesheets/status.css -#usr/share/nagios/stylesheets/statusmap.css -#usr/share/nagios/stylesheets/summary.css -#usr/share/nagios/stylesheets/tac.css -#usr/share/nagios/stylesheets/trends.css -var/nagios -var/nagios/archives -var/nagios/rw -var/nagios/spool -var/nagios/spool/checkresults -etc/httpd/conf/vhosts.d/nagios.conf diff --git a/lfs/nagios b/lfs/nagios deleted file mode 100644 index 5ff1499a8..000000000 --- a/lfs/nagios +++ /dev/null @@ -1,114 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007-2012 IPFire Team # -# # -# 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 . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 3.0.6 - -THISAPP = nagios-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = nagios -PAK_VER = 3 - -DEPS = "traceroute" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) \ - nagios-plugins-1.4.13.tar.gz - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) -nagios-plugins-1.4.13.tar.gz = $(DL_FROM)/nagios-plugins-1.4.13.tar.gz - -$(DL_FILE)_MD5 = 900e3f4164f4b2a18485420eeaefe812 -nagios-plugins-1.4.13.tar.gz_MD5 = be6cc7699fff3ee29d1fd4d562377386 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) $(DIR_SRC)/nagios-plugins* && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP) && \ - ./configure --prefix=/usr \ - --sysconfdir=/etc/nagios \ - --datadir=/usr/share/nagios \ - --sbindir=/usr/share/nagios/cgi-bin \ - --localstatedir=/var/nagios \ - --libexecdir=/usr/lib/nagios \ - --with-lockfile=/var/lock/nagios.lock \ - --with-nagios-user=nobody \ - --with-nagios-group=nobody \ - --with-command-user=nobody \ - --with-command-group=nobody \ - --enable-embedded-perl \ - --with-perlcache \ - --with-httpd-conf=/etc/httpd/conf/conf.d \ - --enable-nanosleep - cd $(DIR_APP) && make all $(MAKETUNING) - cd $(DIR_APP) && make install install-init install-commandmode install-config install-webconf - - cd $(DIR_SRC) && tar xfz $(DIR_DL)/nagios-plugins-1.4.13.tar.gz - cd $(DIR_SRC)/nagios-plugins* && ./configure --prefix=/usr \ - --libexecdir=/usr/lib/nagios \ - --with-nagios-user=nobody --with-nagios-group=nobody \ - --without-ipv6 - cd $(DIR_SRC)/nagios-plugins* && make - cd $(DIR_SRC)/nagios-plugins* && make install - chown -R nobody:nobody /var/nagios - ln -s /etc/init.d/nagios /etc/rc.d/rc3.d/S67nagios - ln -s /etc/init.d/nagios /etc/rc.d/rc0.d/K33nagios - ln -s /etc/init.d/nagios /etc/rc.d/rc6.d/K33nagios - @rm -rf $(DIR_APP) $(DIR_SRC)/nagios-plugins* - @$(POSTBUILD) diff --git a/make.sh b/make.sh index 102914163..20f458ffa 100755 --- a/make.sh +++ b/make.sh @@ -1369,7 +1369,6 @@ buildipfire() { lfsmake2 phpSANE lfsmake2 tunctl lfsmake2 netsnmpd - lfsmake2 nagios lfsmake2 nagios_nrpe lfsmake2 nagios-plugins lfsmake2 icinga diff --git a/src/paks/nagios/install.sh b/src/paks/nagios/install.sh deleted file mode 100644 index 4abeba6b9..000000000 --- a/src/paks/nagios/install.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -extract_files -restore_backup ${NAME} -htpasswd -bmc /etc/nagios/htpasswd.users nagiosadmin nagios -/etc/init.d/apache restart -start_service --background ${NAME} diff --git a/src/paks/nagios/uninstall.sh b/src/paks/nagios/uninstall.sh deleted file mode 100644 index a7b8a5370..000000000 --- a/src/paks/nagios/uninstall.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -stop_service ${NAME} -make_backup ${NAME} -remove_files diff --git a/src/paks/nagios/update.sh b/src/paks/nagios/update.sh deleted file mode 100644 index 89c40d0d7..000000000 --- a/src/paks/nagios/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh From f3ddea42c6c403567b4b06f775249a0f4b310b0a Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 16 Dec 2017 12:33:05 +0000 Subject: [PATCH 17/21] Drop openmailadmin package This is EOL upstream for over ten years now and therefore we cannot continue to support this either. Signed-off-by: Michael Tremer --- config/httpd/vhosts.d/openmailadmin.conf | 15 - config/rootfiles/common/apache2 | 1 - config/rootfiles/packages/openmailadmin | 357 ----------------------- lfs/openmailadmin | 91 ------ make.sh | 1 - src/paks/openmailadmin/install.sh | 27 -- src/paks/openmailadmin/uninstall.sh | 25 -- src/paks/openmailadmin/update.sh | 26 -- 8 files changed, 543 deletions(-) delete mode 100644 config/httpd/vhosts.d/openmailadmin.conf delete mode 100644 config/rootfiles/packages/openmailadmin delete mode 100644 lfs/openmailadmin delete mode 100644 src/paks/openmailadmin/install.sh delete mode 100644 src/paks/openmailadmin/uninstall.sh delete mode 100644 src/paks/openmailadmin/update.sh diff --git a/config/httpd/vhosts.d/openmailadmin.conf b/config/httpd/vhosts.d/openmailadmin.conf deleted file mode 100644 index e91be3978..000000000 --- a/config/httpd/vhosts.d/openmailadmin.conf +++ /dev/null @@ -1,15 +0,0 @@ -Listen 1001 - - - - DocumentRoot /srv/web/openmailadmin - - Include /etc/httpd/conf/conf.d/php*.conf - - - Options +FollowSymlinks - AllowOverride None - Require all granted - - - diff --git a/config/rootfiles/common/apache2 b/config/rootfiles/common/apache2 index d7aa00438..3da360b5c 100644 --- a/config/rootfiles/common/apache2 +++ b/config/rootfiles/common/apache2 @@ -46,7 +46,6 @@ etc/httpd/conf/uid.conf etc/httpd/conf/vhosts.d/captive.conf etc/httpd/conf/vhosts.d/ipfire-interface-ssl.conf etc/httpd/conf/vhosts.d/ipfire-interface.conf -#etc/httpd/conf/vhosts.d/openmailadmin.conf #srv/web #srv/web/ipfire #srv/web/ipfire/manual/howto/access.html.es diff --git a/config/rootfiles/packages/openmailadmin b/config/rootfiles/packages/openmailadmin deleted file mode 100644 index 1e71cc600..000000000 --- a/config/rootfiles/packages/openmailadmin +++ /dev/null @@ -1,357 +0,0 @@ -etc/httpd/conf/vhosts.d/openmailadmin.conf -#srv/web/openmailadmin -srv/web/openmailadmin/.htaccess -#srv/web/openmailadmin/INSTALL -srv/web/openmailadmin/LICENSE -srv/web/openmailadmin/addresses.php -srv/web/openmailadmin/adodb -#srv/web/openmailadmin/adodb5 -srv/web/openmailadmin/adodb5/adodb-active-record.inc.php -srv/web/openmailadmin/adodb5/adodb-csvlib.inc.php -srv/web/openmailadmin/adodb5/adodb-datadict.inc.php -srv/web/openmailadmin/adodb5/adodb-error.inc.php -srv/web/openmailadmin/adodb5/adodb-errorhandler.inc.php -srv/web/openmailadmin/adodb5/adodb-errorpear.inc.php -srv/web/openmailadmin/adodb5/adodb-exceptions.inc.php -srv/web/openmailadmin/adodb5/adodb-iterator.inc.php -srv/web/openmailadmin/adodb5/adodb-lib.inc.php -srv/web/openmailadmin/adodb5/adodb-memcache.lib.inc.php -srv/web/openmailadmin/adodb5/adodb-pager.inc.php -srv/web/openmailadmin/adodb5/adodb-pear.inc.php -srv/web/openmailadmin/adodb5/adodb-perf.inc.php -srv/web/openmailadmin/adodb5/adodb-php4.inc.php -srv/web/openmailadmin/adodb5/adodb-time.inc.php -srv/web/openmailadmin/adodb5/adodb-xmlschema.inc.php -srv/web/openmailadmin/adodb5/adodb-xmlschema03.inc.php -srv/web/openmailadmin/adodb5/adodb.inc.php -#srv/web/openmailadmin/adodb5/contrib -srv/web/openmailadmin/adodb5/contrib/toxmlrpc.inc.php -#srv/web/openmailadmin/adodb5/cute_icons_for_site -srv/web/openmailadmin/adodb5/cute_icons_for_site/adodb.gif -srv/web/openmailadmin/adodb5/cute_icons_for_site/adodb2.gif -#srv/web/openmailadmin/adodb5/datadict -srv/web/openmailadmin/adodb5/datadict/datadict-access.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-db2.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-firebird.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-generic.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-ibase.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-informix.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-mssql.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-mysql.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-oci8.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-postgres.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-sapdb.inc.php -srv/web/openmailadmin/adodb5/datadict/datadict-sybase.inc.php -#srv/web/openmailadmin/adodb5/docs -#srv/web/openmailadmin/adodb5/docs/docs-active-record.htm -#srv/web/openmailadmin/adodb5/docs/docs-adodb.htm -#srv/web/openmailadmin/adodb5/docs/docs-datadict.htm -#srv/web/openmailadmin/adodb5/docs/docs-oracle.htm -#srv/web/openmailadmin/adodb5/docs/docs-perf.htm -#srv/web/openmailadmin/adodb5/docs/docs-session.htm -#srv/web/openmailadmin/adodb5/docs/docs-session.old.htm -#srv/web/openmailadmin/adodb5/docs/old-changelog.htm -#srv/web/openmailadmin/adodb5/docs/readme.htm -#srv/web/openmailadmin/adodb5/docs/tips_portable_sql.htm -#srv/web/openmailadmin/adodb5/docs/tute.htm -#srv/web/openmailadmin/adodb5/drivers -srv/web/openmailadmin/adodb5/drivers/adodb-access.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-ado.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-ado5.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-ado5.inc.php.bak -srv/web/openmailadmin/adodb5/drivers/adodb-ado_access.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-ado_mssql.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-borland_ibase.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-csv.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-db2.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-db2.inc.php.bak -srv/web/openmailadmin/adodb5/drivers/adodb-fbsql.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-firebird.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-ibase.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-informix.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-informix72.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-ldap.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-mssql.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-mssql_n.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-mssqlpo.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-mysql.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-mysqli.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-mysqlpo.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-mysqlt.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-netezza.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-oci8.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-oci805.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-oci8po.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-odbc.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-odbc_db2.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-odbc_mssql.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-odbc_oracle.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-odbtp.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-odbtp_unicode.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-oracle.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-pdo.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-pdo_mssql.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-pdo_mysql.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-pdo_oci.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-pdo_pgsql.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-postgres.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-postgres64.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-postgres7.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-postgres8.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-proxy.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-sapdb.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-sqlanywhere.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-sqlite.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-sqlitepo.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-sybase.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-sybase_ase.inc.php -srv/web/openmailadmin/adodb5/drivers/adodb-vfp.inc.php -#srv/web/openmailadmin/adodb5/lang -srv/web/openmailadmin/adodb5/lang/adodb-ar.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-bg.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-bgutf8.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-ca.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-cn.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-cz.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-da.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-de.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-en.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-es.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-esperanto.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-fr.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-hu.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-it.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-nl.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-pl.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-pt-br.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-ro.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-ru1251.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-sv.inc.php -srv/web/openmailadmin/adodb5/lang/adodb-uk1251.inc.php -srv/web/openmailadmin/adodb5/lang/adodb_th.inc.php -srv/web/openmailadmin/adodb5/license.txt -#srv/web/openmailadmin/adodb5/pear -srv/web/openmailadmin/adodb5/pear/Auth -srv/web/openmailadmin/adodb5/pear/Auth/Container -srv/web/openmailadmin/adodb5/pear/Auth/Container/ADOdb.php -#srv/web/openmailadmin/adodb5/pear/readme.Auth.txt -#srv/web/openmailadmin/adodb5/perf -srv/web/openmailadmin/adodb5/perf/perf-db2.inc.php -srv/web/openmailadmin/adodb5/perf/perf-informix.inc.php -srv/web/openmailadmin/adodb5/perf/perf-mssql.inc.php -srv/web/openmailadmin/adodb5/perf/perf-mysql.inc.php -srv/web/openmailadmin/adodb5/perf/perf-oci8.inc.php -srv/web/openmailadmin/adodb5/perf/perf-postgres.inc.php -srv/web/openmailadmin/adodb5/pivottable.inc.php -#srv/web/openmailadmin/adodb5/readme.txt -srv/web/openmailadmin/adodb5/rsfilter.inc.php -srv/web/openmailadmin/adodb5/server.php -#srv/web/openmailadmin/adodb5/session -srv/web/openmailadmin/adodb5/session/adodb-compress-bzip2.php -srv/web/openmailadmin/adodb5/session/adodb-compress-gzip.php -srv/web/openmailadmin/adodb5/session/adodb-cryptsession.php -srv/web/openmailadmin/adodb5/session/adodb-cryptsession2.php -srv/web/openmailadmin/adodb5/session/adodb-encrypt-mcrypt.php -srv/web/openmailadmin/adodb5/session/adodb-encrypt-md5.php -srv/web/openmailadmin/adodb5/session/adodb-encrypt-secret.php -srv/web/openmailadmin/adodb5/session/adodb-encrypt-sha1.php -srv/web/openmailadmin/adodb5/session/adodb-sess.txt -srv/web/openmailadmin/adodb5/session/adodb-session-clob.php -srv/web/openmailadmin/adodb5/session/adodb-session-clob2.php -srv/web/openmailadmin/adodb5/session/adodb-session.php -srv/web/openmailadmin/adodb5/session/adodb-session2.php -srv/web/openmailadmin/adodb5/session/adodb-sessions.mysql.sql -srv/web/openmailadmin/adodb5/session/adodb-sessions.oracle.clob.sql -srv/web/openmailadmin/adodb5/session/adodb-sessions.oracle.sql -#srv/web/openmailadmin/adodb5/session/crypt.inc.php -#srv/web/openmailadmin/adodb5/session/old -srv/web/openmailadmin/adodb5/session/old/adodb-cryptsession.php -srv/web/openmailadmin/adodb5/session/old/adodb-session-clob.php -srv/web/openmailadmin/adodb5/session/old/adodb-session.php -srv/web/openmailadmin/adodb5/session/old/crypt.inc.php -srv/web/openmailadmin/adodb5/session/session_schema.xml -srv/web/openmailadmin/adodb5/session/session_schema2.xml -#srv/web/openmailadmin/adodb5/tests -srv/web/openmailadmin/adodb5/tests/benchmark.php -srv/web/openmailadmin/adodb5/tests/client.php -srv/web/openmailadmin/adodb5/tests/pdo.php -srv/web/openmailadmin/adodb5/tests/test-active-record.php -srv/web/openmailadmin/adodb5/tests/test-active-recs2.php -srv/web/openmailadmin/adodb5/tests/test-datadict.php -srv/web/openmailadmin/adodb5/tests/test-perf.php -srv/web/openmailadmin/adodb5/tests/test-pgblob.php -srv/web/openmailadmin/adodb5/tests/test-php5.php -srv/web/openmailadmin/adodb5/tests/test-xmlschema.php -srv/web/openmailadmin/adodb5/tests/test.php -srv/web/openmailadmin/adodb5/tests/test2.php -srv/web/openmailadmin/adodb5/tests/test3.php -srv/web/openmailadmin/adodb5/tests/test4.php -srv/web/openmailadmin/adodb5/tests/test5.php -srv/web/openmailadmin/adodb5/tests/test_rs_array.php -srv/web/openmailadmin/adodb5/tests/testcache.php -srv/web/openmailadmin/adodb5/tests/testdatabases.inc.php -srv/web/openmailadmin/adodb5/tests/testgenid.php -srv/web/openmailadmin/adodb5/tests/testmssql.php -srv/web/openmailadmin/adodb5/tests/testoci8.php -srv/web/openmailadmin/adodb5/tests/testoci8cursor.php -srv/web/openmailadmin/adodb5/tests/testpaging.php -srv/web/openmailadmin/adodb5/tests/testpear.php -srv/web/openmailadmin/adodb5/tests/testsessions.php -srv/web/openmailadmin/adodb5/tests/time.php -srv/web/openmailadmin/adodb5/tests/tmssql.php -srv/web/openmailadmin/adodb5/tests/xmlschema-mssql.xml -srv/web/openmailadmin/adodb5/tests/xmlschema.xml -srv/web/openmailadmin/adodb5/toexport.inc.php -srv/web/openmailadmin/adodb5/tohtml.inc.php -srv/web/openmailadmin/adodb5/xmlschema.dtd -srv/web/openmailadmin/adodb5/xmlschema03.dtd -#srv/web/openmailadmin/adodb5/xsl -srv/web/openmailadmin/adodb5/xsl/convert-0.1-0.2.xsl -srv/web/openmailadmin/adodb5/xsl/convert-0.1-0.3.xsl -srv/web/openmailadmin/adodb5/xsl/convert-0.2-0.1.xsl -srv/web/openmailadmin/adodb5/xsl/convert-0.2-0.3.xsl -srv/web/openmailadmin/adodb5/xsl/remove-0.2.xsl -srv/web/openmailadmin/adodb5/xsl/remove-0.3.xsl -#srv/web/openmailadmin/design -srv/web/openmailadmin/design/exception.css -srv/web/openmailadmin/design/exception.js -srv/web/openmailadmin/design/favicon.ico -srv/web/openmailadmin/design/openmailadmin.js -srv/web/openmailadmin/design/setup.css -srv/web/openmailadmin/design/shadow.css -srv/web/openmailadmin/design/treeview.css -srv/web/openmailadmin/design/treeview.js -srv/web/openmailadmin/domains.php -srv/web/openmailadmin/favicon.ico -srv/web/openmailadmin/folders.php -#srv/web/openmailadmin/images -#srv/web/openmailadmin/images/acl -srv/web/openmailadmin/images/acl/not.png -srv/web/openmailadmin/images/acl/yes.png -srv/web/openmailadmin/images/destination_transfer.gif -srv/web/openmailadmin/images/error_icon.gif -srv/web/openmailadmin/images/info_icon.gif -#srv/web/openmailadmin/images/setup -srv/web/openmailadmin/images/setup/body.png -srv/web/openmailadmin/images/setup/head_sh.png -srv/web/openmailadmin/images/setup/shadow.png -srv/web/openmailadmin/images/sh_hor.gif -srv/web/openmailadmin/images/sh_lo.gif -srv/web/openmailadmin/images/sh_lu.gif -srv/web/openmailadmin/images/sh_ro.gif -srv/web/openmailadmin/images/sh_ru.gif -srv/web/openmailadmin/images/sh_ver.gif -srv/web/openmailadmin/images/spacer.gif -#srv/web/openmailadmin/images/treeview -srv/web/openmailadmin/images/treeview/+.png -srv/web/openmailadmin/images/treeview/-.png -srv/web/openmailadmin/images/treeview/act_mbox.png -srv/web/openmailadmin/images/treeview/ina_mbox.png -srv/web/openmailadmin/images/treeview/new_mbox.png -srv/web/openmailadmin/images/ver_bl1.gif -srv/web/openmailadmin/images/ver_gy1.png -#srv/web/openmailadmin/inc -srv/web/openmailadmin/inc/.htaccess -srv/web/openmailadmin/inc/_append.php -srv/web/openmailadmin/inc/_prepend.php -srv/web/openmailadmin/inc/config.inc.php -srv/web/openmailadmin/inc/config.local.inc.php -#srv/web/openmailadmin/inc/database -srv/web/openmailadmin/inc/database/domains.adodb.txt -srv/web/openmailadmin/inc/database/imap_demo.adodb.txt -srv/web/openmailadmin/inc/database/user.adodb.txt -srv/web/openmailadmin/inc/database/virtual.adodb.txt -srv/web/openmailadmin/inc/database/virtual_regexp.adodb.txt -srv/web/openmailadmin/inc/exception_handler.php -srv/web/openmailadmin/inc/functions.inc.php -#srv/web/openmailadmin/inc/lang -srv/web/openmailadmin/inc/lang/de.inc.php -srv/web/openmailadmin/inc/lang/en.inc.php -#srv/web/openmailadmin/inc/lang/pl.inc.php -#srv/web/openmailadmin/inc/lang/ru.inc.php -#srv/web/openmailadmin/inc/lang/zh-cn.inc.php -#srv/web/openmailadmin/inc/lang/zh_CN.inc.php -#srv/web/openmailadmin/inc/lib -srv/web/openmailadmin/inc/lib/ConfigurationErrorException.php -srv/web/openmailadmin/inc/lib/ErrorHandler.php -srv/web/openmailadmin/inc/lib/HTMLInputTagGenerator.php -srv/web/openmailadmin/inc/lib/IPasswordStrategy.php -srv/web/openmailadmin/inc/lib/InputValidatorSuite.php -srv/web/openmailadmin/inc/lib/Password.php -srv/web/openmailadmin/inc/lib/PasswordCrypt.php -srv/web/openmailadmin/inc/lib/PasswordMD5.php -srv/web/openmailadmin/inc/lib/PasswordPlaintext.php -srv/web/openmailadmin/inc/lib/PasswordSHA1.php -srv/web/openmailadmin/inc/lib/Quota.php -srv/web/openmailadmin/inc/lib/User.php -#srv/web/openmailadmin/inc/lib/imap -srv/web/openmailadmin/inc/lib/imap/Cyrus_IMAP.php -srv/web/openmailadmin/inc/lib/imap/Fake_IMAP.php -srv/web/openmailadmin/inc/lib/imap/IMAP_Administrator.php -srv/web/openmailadmin/inc/lib/openmailadmin.php -srv/web/openmailadmin/inc/miniauth.inc.php -srv/web/openmailadmin/inc/panel_filter.php -srv/web/openmailadmin/inc/translation.inc.php -srv/web/openmailadmin/index.php -srv/web/openmailadmin/mail.dump -srv/web/openmailadmin/mailboxes.php -srv/web/openmailadmin/regexp.php -#srv/web/openmailadmin/samples -#srv/web/openmailadmin/samples/.htaccess -#srv/web/openmailadmin/samples/config.local.inc.php -#srv/web/openmailadmin/samples/cyrus -#srv/web/openmailadmin/samples/cyrus/cyrus.conf -#srv/web/openmailadmin/samples/cyrus/imapd.conf -#srv/web/openmailadmin/samples/oma_mail.daimon.php -#srv/web/openmailadmin/samples/oma_mail.daimon.pl -#srv/web/openmailadmin/samples/pam -#srv/web/openmailadmin/samples/pam/imap -#srv/web/openmailadmin/samples/pam/imap.caching -#srv/web/openmailadmin/samples/postfix -#srv/web/openmailadmin/samples/postfix/canonical.mysql -#srv/web/openmailadmin/samples/postfix/mydestination.mysql -#srv/web/openmailadmin/samples/postfix/virtual.mysql -srv/web/openmailadmin/setup.php -#srv/web/openmailadmin/templates -srv/web/openmailadmin/templates/.htaccess -srv/web/openmailadmin/templates/ExceptionHandler.tpl -#srv/web/openmailadmin/templates/setup -srv/web/openmailadmin/templates/setup/footer.tpl -srv/web/openmailadmin/templates/setup/header.tpl -srv/web/openmailadmin/templates/setup/step1.tpl -srv/web/openmailadmin/templates/setup/step2.tpl -srv/web/openmailadmin/templates/setup/step3.tpl -#srv/web/openmailadmin/templates/shadow -srv/web/openmailadmin/templates/shadow/__aux.php -#srv/web/openmailadmin/templates/shadow/addresses -srv/web/openmailadmin/templates/shadow/addresses/admin.tpl -srv/web/openmailadmin/templates/shadow/addresses/list.tpl -srv/web/openmailadmin/templates/shadow/caption.tpl -srv/web/openmailadmin/templates/shadow/common-footer.tpl -srv/web/openmailadmin/templates/shadow/common-footer_nv.tpl -srv/web/openmailadmin/templates/shadow/common-header.tpl -#srv/web/openmailadmin/templates/shadow/domains -srv/web/openmailadmin/templates/shadow/domains/admin.tpl -srv/web/openmailadmin/templates/shadow/domains/list.tpl -srv/web/openmailadmin/templates/shadow/error_box.tpl -srv/web/openmailadmin/templates/shadow/filter_panel.tpl -#srv/web/openmailadmin/templates/shadow/folders -srv/web/openmailadmin/templates/shadow/folders/acl_matrix.tpl -srv/web/openmailadmin/templates/shadow/folders/admin.tpl -srv/web/openmailadmin/templates/shadow/folders/list.tpl -srv/web/openmailadmin/templates/shadow/info_box.tpl -srv/web/openmailadmin/templates/shadow/information.tpl -srv/web/openmailadmin/templates/shadow/login.tpl -#srv/web/openmailadmin/templates/shadow/mailboxes -srv/web/openmailadmin/templates/shadow/mailboxes/admin.tpl -srv/web/openmailadmin/templates/shadow/mailboxes/list.tpl -srv/web/openmailadmin/templates/shadow/motd.tpl -#srv/web/openmailadmin/templates/shadow/navigation -srv/web/openmailadmin/templates/shadow/navigation/entry.tpl -srv/web/openmailadmin/templates/shadow/navigation/navigation.tpl -srv/web/openmailadmin/templates/shadow/outer_shadow_start.tpl -srv/web/openmailadmin/templates/shadow/outer_shadow_stop.tpl -srv/web/openmailadmin/templates/shadow/password.tpl -#srv/web/openmailadmin/templates/shadow/regexp -srv/web/openmailadmin/templates/shadow/regexp/admin.tpl -srv/web/openmailadmin/templates/shadow/regexp/list.tpl diff --git a/lfs/openmailadmin b/lfs/openmailadmin deleted file mode 100644 index 1980be70c..000000000 --- a/lfs/openmailadmin +++ /dev/null @@ -1,91 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# 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 . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 1.0.0 - -THISAPP = openmailadmin-$(VER) -DL_FILE = $(THISAPP).tbz2 -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = openmailadmin -PAK_VER = 2 - -DEPS = "cyrus-imapd postfix mysql" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) \ - adodb502.tgz - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) -adodb502.tgz = $(DL_FROM)/adodb502.tgz - -$(DL_FILE)_MD5 = c56bc9c41f9dd25da9dbf1b63a470333 -adodb502.tgz_MD5 = 850fe353400df5af006985a88620936d - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - $(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) -C /srv/web - mv -v /srv/web/openmailadmin-* /srv/web/openmailadmin - cp -fv $(DIR_SRC)/config/openmailadmin/config.local.inc.php \ - /srv/web/openmailadmin/inc - cp -fv $(DIR_SRC)/config/openmailadmin/mail.dump \ - /srv/web/openmailadmin/ - tar xfz $(DIR_DL)/adodb502.tgz -C /srv/web/openmailadmin - ln -svf adodb5 /srv/web/openmailadmin/adodb - chown nobody.nobody /srv/web/openmailadmin/ -Rv - @$(POSTBUILD) diff --git a/make.sh b/make.sh index 20f458ffa..3e8131759 100755 --- a/make.sh +++ b/make.sh @@ -1312,7 +1312,6 @@ buildipfire() { lfsmake2 postfix lfsmake2 fetchmail lfsmake2 cyrus-imapd - lfsmake2 openmailadmin lfsmake2 clamav lfsmake2 spamassassin lfsmake2 amavisd diff --git a/src/paks/openmailadmin/install.sh b/src/paks/openmailadmin/install.sh deleted file mode 100644 index 14948f06c..000000000 --- a/src/paks/openmailadmin/install.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -extract_files -mysql < /srv/web/openmailadmin/mail.dump -/etc/init.d/apache reload diff --git a/src/paks/openmailadmin/uninstall.sh b/src/paks/openmailadmin/uninstall.sh deleted file mode 100644 index e5b5d7fe4..000000000 --- a/src/paks/openmailadmin/uninstall.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -remove_files diff --git a/src/paks/openmailadmin/update.sh b/src/paks/openmailadmin/update.sh deleted file mode 100644 index 89c40d0d7..000000000 --- a/src/paks/openmailadmin/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh From b2d4fa028f0d94138a820794ac9c08f2b7047861 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 16 Dec 2017 12:35:12 +0000 Subject: [PATCH 18/21] Drop cacti This package was discontinued upstream and seems to be a bit more lively again. However, nobody of the team wants to maintain cacti. Therefore this is being dropped for now. Signed-off-by: Michael Tremer --- config/backup/includes/cacti | 1 - config/cacti/cacti.conf | 16 - config/cacti/cacti.cron | 1 - config/cacti/cacti.logrotate | 6 - config/cacti/d.gif | Bin 2944 -> 0 bytes config/cacti/d.png | Bin 7635 -> 0 bytes config/cacti/throbber.gif | Bin 1849 -> 0 bytes config/rootfiles/packages/cacti | 533 -- lfs/cacti | 114 - make.sh | 1 - src/paks/cacti/install.sh | 26 - src/paks/cacti/uninstall.sh | 27 - src/paks/cacti/update.sh | 26 - src/patches/cacti/cacti-0.8.8a-legal.patch | 8166 ----------------- ...8a-replace_treeview_by_jquery.jstree.patch | 607 -- .../cacti/cacti-0.8.8b-html-injection.patch | 19 - ...acti-0.8.8b-remote-command-execution.patch | 28 - .../cacti/cacti-0.8.8b-rra-comments.patch | 42 - .../cacti-0.8.8b-sanitize-variables.patch | 155 - ...-0.8.8b-sql-injection-shell-escaping.patch | 117 - 20 files changed, 9885 deletions(-) delete mode 100644 config/backup/includes/cacti delete mode 100644 config/cacti/cacti.conf delete mode 100755 config/cacti/cacti.cron delete mode 100644 config/cacti/cacti.logrotate delete mode 100644 config/cacti/d.gif delete mode 100644 config/cacti/d.png delete mode 100644 config/cacti/throbber.gif delete mode 100644 config/rootfiles/packages/cacti delete mode 100644 lfs/cacti delete mode 100644 src/paks/cacti/install.sh delete mode 100644 src/paks/cacti/uninstall.sh delete mode 100644 src/paks/cacti/update.sh delete mode 100644 src/patches/cacti/cacti-0.8.8a-legal.patch delete mode 100644 src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch delete mode 100644 src/patches/cacti/cacti-0.8.8b-html-injection.patch delete mode 100644 src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch delete mode 100644 src/patches/cacti/cacti-0.8.8b-rra-comments.patch delete mode 100644 src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch delete mode 100644 src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch diff --git a/config/backup/includes/cacti b/config/backup/includes/cacti deleted file mode 100644 index fc3ff672f..000000000 --- a/config/backup/includes/cacti +++ /dev/null @@ -1 +0,0 @@ -/var/cacti/ diff --git a/config/cacti/cacti.conf b/config/cacti/cacti.conf deleted file mode 100644 index 024449d30..000000000 --- a/config/cacti/cacti.conf +++ /dev/null @@ -1,16 +0,0 @@ -Listen 1009 - - - DocumentRoot /usr/share/cacti - - Include /etc/httpd/conf/conf.d/php*.conf - - Alias /cacti /usr/share/cacti - - Options FollowSymLinks - AllowOverride None - - - RewriteEngine on - RewriteRule ^/$ /cacti/ [R] - diff --git a/config/cacti/cacti.cron b/config/cacti/cacti.cron deleted file mode 100755 index c56699526..000000000 --- a/config/cacti/cacti.cron +++ /dev/null @@ -1 +0,0 @@ -php /usr/share/cacti/poller.php > /dev/null 2>&1 diff --git a/config/cacti/cacti.logrotate b/config/cacti/cacti.logrotate deleted file mode 100644 index 3ff439585..000000000 --- a/config/cacti/cacti.logrotate +++ /dev/null @@ -1,6 +0,0 @@ -/var/log/cacti/cacti.log { - missingok - monthly - notifempty - compress -} diff --git a/config/cacti/d.gif b/config/cacti/d.gif deleted file mode 100644 index 0e958d38716d93d4050a993398dec77490f836c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2944 zcmV-`3xD)SNk%w1VQc_M0QUd@|Ns9T9UI-*+}hOI)X&uI>Fueesi&l;_4D=X>Ff9N z_^73+<>2S=?eg2$-Rb7+rKF~$qowBL>HGTqot@-$b)vAa-N3-zetw2ZN=<`h9~Dx1iA9(#Y7#W29s5^zQNY z@mHQyr@5v^Z9@@%1}KXkHjyloo07WIwi}EEn4Om$l>sxE8(FDGBAoytl>{Z40y?1` zR;@iNqyQcB$0153RSP`?#W!4_i2E@;Uzh|^(_*KC^Fd34k}d(%gV-cq&f zk(TFNpXh9@?t9Psr`!C!#Q%zrxLR+6GTYq7|NF z_U*{{@Xh$@y6D%T@Zqx0!<^a8r}*#F`t#hOjaS64bn@Dk-pPvG$dJ{=ne*nrpNdnv zq-VjYY^#`N%eH^y&Y01@jOE+L-@1tC)3*2P+xYF?`S0TT^5@;6S>C8);HqZcsb=7- zXy2-6;jC)mt!&?{YvHbK@!7of<gww0>FMX^=jG+);^N}n-QC*S+SS$7&CSiJsi~)@r=_K(qobptp`o9jpPHJQSy@>o zCMG2%CIA2bA^8LW00930EC2ui0BitA000R80RIUbNU)&6g9sBUT*$DY!-o(d28cLO zBE^UpGiuz(vE#;y4?#K<*^s2ilPFU{ytlDm$cHRVE}ZCcBusl5`}tEj@E%T#I(Z7b z$4+0we*9{dgjw`x(w7eJm19TlA=0NprBb!Z4=Ycp<=km#c-1SziD>`H99k~y*t7`C zx`dl>?Lneqe3+rMx0onU4s#RHpUovaz>VxF=EdAIJ4)^ zphIiyEV{Jm)1XPCUd@`PqSvq`Y0`v=XXkzT@ae{vuea}f`v~sK7Xdz@ z?&tU*Kww@_5uoeX0sZ;orxHUCCqR7v00APy#(eS8sbA0DT|R>N(w*z!qrUwfHPYdO zpU#~B|K&{3Lk|e-R~;aXF!F~YlE_9ICYLOsI4I3Dw$RCR^Vx4x|`Qb-|1gYTU zlO~XW!380>ph5~7;o}ZF@3@mAh$5bYPKy5=V8a-A*m1|2cC<-`4F?bu0RlT1AwiA} z>_CPba*Tn5L6Q*3h$Mgr;)fuM6jBJ21E~POqmP=yfd&_p0DuWt9@LqZ?!W`jJ2}q4 zK{^PGNzei~ctHmpb+lRspIhMn5a&P}=&*$wMm&(f4r9>KMjKWX0jM8^EE1?7f&`){ zA&d&-=m^k43jn2-n!tia5p)_44WD}XAv&fGw15p(#4*RYbFd1B7B(zEP!UzU0S6p1 zda=g6S{U(OL7E6cNFkd1k*u9v|Jlr0VNY};*)>VzxMxK_vu zM;supVa5_OxI0i0P=Eo38DeMw1{YU6aRUN17KBM4lMsT5AAuNR$Rt2F`wzm=F5K|L z*t!$XJo3mx1Ginypz%NBRuP68_o|Ub7gvyMvWh!Ukp&lIV-bZCH#9J{K$sYU$Rs=W zjL6)GG;%Ni2`kL7!`34I)LFLj%)@lWP`5Mn0y8Yph00)XjYSqD8$i%K3fw>h6H-XQ zgc3kJ(2jluIl{*wb34NG+=rxYcawN0Y&733BrOj;f;a6n4ev~CK;leHk$L7$Bmufz`&=V6J&`YnPif>C4!`0eI~0n3hDPAP(Z?^nHu!BJM+*(d+im& zqq__|B+-Nu^f!^j5j@E7^*_hcL%uEZy=RGL?jlN3G7vGfsp9lKw3b- z3bx<_6hHw5J)jtOsPBX8n@4(THWYLK;Rh&8;SYE)GYH7(9D);o5pJ+8Zn*3S{5}8rcUv>Osgt z8uA{&8OU(%VSq+DvXRqCq(Fv)oO|3O0?(liK^noyPS(+mkiert#36zdAkhROc)=4} za}r9p@|CQNWoT3*%UaqpmYtbJFMh$xU-;se!1To|2qKD6kOCE^Fa;?{kxXTdLKMUt z#VMv)ifWeP6sAzcGjCZCU+jVx;0&iYk>Lx1kRlYg2!$-x$xd{_f)oTP1uUFF&wAz} z7omWKEKb4yn$G+p8MaUcGiadSxwyqI2x5v*vCEMJH(Cij3OAqkI|z zG*{zKWFVs!CrySjmSGEZx|ATP_=Kuh%r>M@YTL1aq+g3{a*M%Qv>qe6|CsI)diOgi1P=mi&SA+r-uZXggH|h$*4rCO&aD|q~tK}~5!pdWv#V>?G<}#Z(7-AJjF;TIKHoLk1 z&8FDqK#JK+Rj9%g)10Q9g?!pR`?)l<{Ij43jgde{#2W@dG@()Q1%!0t8;TalH^T9a zMLT9AZn%RS3?dC{aKjsl_Qp590gg%|WF70U^gxzikT1x=4P+rm!|(=qX+a=b zSi{xU@PvanI~vi>2DQ6!ZER;d*tlHC6VPx5Go%3uVmJeEn~;!d*!mgIP&YRgvW_4a zT-$?g0&u(FI4m4NA+?5fy1PMegTGsrsyV{rvJi!iKfK@4c(%l)P4R>j{Nk2f7Qz(h z=L8`rq#DzhM#w{M>u79a;Mhhu#vdYtCN#n2384lyU>@^pINR3N*akL!4R2NdV+ccF qh|s4|4QdF4*3gi~HB8?0oePB;MxS-nolf>ymi_E#FNj?N0suQ%s<;XO diff --git a/config/cacti/d.png b/config/cacti/d.png deleted file mode 100644 index 8540175a04b0cd303e3966d1727f30ee9b8a7254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7635 zcmV;^9W3IBP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000vHNklkeo4NhWTfn=+1QwHZ%TF>&mGTSFKuQ1{Fde~SV>6<3l=QkzWeSogR!W=I?;zJ z<49gtPQZi^l$Mrq;e{7+`|Y=zfA*rfpTumRee$$2tgF9rvaM?%^XbocJJ(HP49(5W ztX{pETW+~U3!9V7&O2-Phz&uzO+p1>W`dU>l(;>`ZGQ!U`lD87$}3!P#TAF;rVq3ouIoBv8zzL{l1nZbQeYj< z>l(>)47W_jNE>0;NE>0;2*XC&VczWFwAc?eK538wj6rLSF$xuUsVhO?xoG7vdD_@- zlpk~Deg9~N^~JSMGi>?t<;HOwEX(Q@w`6Os>vGLC*Yx<3<;$0wa5#)5ZG;e6pBD%W z3Z->UIa123a}h!yu|Pne{ETus+xr_IGt-Wr3#4uv4Hysxj7t72G)4!!@c8{KSoGih za{ZV5$A6hwvrc4pO)WLGHB^+3BNU3T{REDJilTuPpP=MAN-}kXB8z}`+N`w$t!a`UAVM#0@ zv28nJNx>3Hk+1K1m4sDCdC^21laGZ1Ktd!pxV=d+iZYHJHv=iGi~%k{M@t6)0YP#e zmW^#&gk+d)joW$8T@Sz~3eLuu?CUi;0G&W756iOHvE_A+IqA$K%TO4j5$Gh_gyHE2 zmt~Z*=xd8Js*E5|G`F@fbwVZaSe)IpO-!0H6=^)K`1(y|#sB7J?0|BKonZOCk5Z}& zEXzhoh13!e2#jr`l*;UO3V|2+>`1)9aVJK=v&ge535mSqeG?_7+NdlY&DI^8m>x{S z5;7xTwzS#Wyp1T099wWQmSa#Vz`|zJzRm2AuToxC1i&9^9>)0PSr@7T4`UR@_#gyY z`5+7`(T22>cFprOq<}M8XO;EPuYb|2&+~lRJEHu2*)Q>Z7+o})M;^F`FI{>i`JvH+ z&#?5uluBQgWntSkN(C4!v^Lnbg;6G>no9Obj4;$kYshQ1fDef1V#0O^5V(O$o+twL zva@X;rouo5IaRo4?D3}}EJM}4DmEov#4g)U)xMno>}lv=k}l4n z5?#;%M*EmR5Cm?LO=xrg#;7FOghFeT6EFbllfBirT7NzOz7KZF7qBb~t@NPf672(3 zP$$E>J0DU?j4|mk!Vw4YWCR^imxfpy`PL{pXa_%KE7cf?z{dLZH1E$tOcw}x%WHL; z_|?0&5t&*?NQc>@cR?+b6pUfb{$Ek+{Ec8&a*j^xSpKd2IvVO4vd+o(5Iw1Fw^SvgDV`=Sjr*KSPC#qwx~)?(X5yl=lsb1aG%Kw)$e z-8hu*t3=-g;}Q6A5DMidFlay%xa}CN(Ar4>7#x&gS#70(An4%^_o)rI z9;TGS_kE<4X;8G*>7S*PNXt4XU@<>RQ%fy*RsoK*kg^Fk@Y$bepuT+{uCFmcDC_g3 zkuq*P;Vyo-_Ur5_e~U;6HnI-<~x@%=b{tQ8gbSe8Kf zi4?O8CP<*QCQxqDei@A(Aj6C{Jpmi!I4mQ>4s<9wRbrO`55RGGuE1r!9jD>0UlWYTcrgcG=8#(%MN>&-M4Y$0MN!zEWkNicyMr`^TeqvqlUaUymk z>wMNd^=&if{EOQ5?)YG|<>cWL;QI*#3S$($=OsPZSW^lxFlOKk^Zm>o??=Y4Aaz7K zLF#lsIswgTzfxZtPXyGpC$LFi+tB%x(BKE)DQL}$=UBMG(=I2DpUD#LVCmMIsgYZ- zEy1Y7coxsPgENnrha1GOjFs)+gaH3ftG-FlUO(D%V+b#fWx>>Aj%D5Nmvj1gSK+!* zFq*)Nf;Jcev{pIS+38?pa_@rxqS08o&vERJmSM>+4zO*z*9nnQ_Q*bD&SFT4#CQT% zfRM@1rZeJEpnQ#1HszzHAduurXGZ-f$CgiH33sq!+Yi|1`&={gJDf3f4l%zYwINyA zUJfX&eN-Y&Jlcw7*-7s=6hf;2(0GYOB91bT3red$oaoxSf9w*EMIJU)EV?T%Q2gGz6j@8Xp zIS_;trIAX`ow|UC6GEBHr`fh`!r?H+7-mnIMM3EuB;0@#Dv!gmB#5L^^43qu4iTKABYW-o1M%DJe%Z5vzU*4=?t>7;EYIqTM~ z>*0-dXZL~g)2Sr#0d}xm2(js$MGu^?;;xR(smK_CC^DG2Nf+MGX<@Z7U2#)C%T8Bc zbp?+-y#gb{IF7@pyxpvS^M{m=pH53_+u&#Ghim)w(l45{Hc4-V;ff_s9hNU3jTA5s zlQzPzA=*aX={SrS)-RQ~w8?JkKnnHjP7A9~pUbL5-q1L(znBh@W%)5$k z#Zi5FFo-r&_uSpR`mJyQ5M{q?FcKJCFkZNLxpIsgW4Cq-}@wm3z>NCZCH__ z%qPuC=Ba{MQ_}O3HZ{+GZ^+xQuE1GZ*o9*-DnR=Qq~(CL5LS{Y$xTZ3N!vkKAw;H( zM{4Y!cCPDF#d-Gl$&j&tne6l1>rwzKgtU^(wH$;U;ltXkYz*EZ-;&G?pETh7-{H^( z^lrV;3hgJ*ZVZ)ZN4rt98%tiki}n*3KY>oyk}?OxCUDu2c!Q#&_d`(~d1E>#C`(XK zmLR`03Pp8P9-Uw}n=nBleIO3ZNeXGxQd>pK_P-|USXyCpvh?v`?N-+7b&M|4*d+lk z?pcd+JBGXs>lN7=^)xtgj?G8o7J>PkUCJcfwRhva0S0s!HGOQE~o$;dvzT-WWbMtczhDrZcxE zb!XlOqyo!ej7CZ;Y0nPQ`ciSu#IAIDO7CTRwu*CISH=0>qZU(s(gp0P+cb(gp zxC{@5DIe`6kfBK05lp+(DYlv5;0cmLtvCy#Fo8?ylv7v+T(=G0;;nSW`OcY3IQ_&k z3F2)?%f<>94vSo32EdXi^#o1zV4LZ~Y3^&qIkzq|_=$E(#(sij!2hflygu6FM>DVH zUuMikC6Y0nX4Da%!RUX*ITZwJH;U&cE3o)cLQdCa$WR1?h0y^HCbPq!71ECMx#BFH z{G=Mr#4%+YiBZhjGNtd+8leG+6S6{jZyY3bw-FNPTvAS{Q`$DfS}{H`oU zr^_v5I{SbSn7}(ACQIQJxCF5#E;?;4Uq0pZjAPRBEQcW4*yWY>kmHkRs3KH6G2K@( zV}ANj^o-dw@%nc%${Df@Q}H(Ho?VIz=O?ojxzaqwV3d!F_pYRBFUHPup_LE)WeRjT;d4BMi|!Bekw$1 zwtKe<5jp5-5~5$%aA4R+2H1&`njyjoInULWTe z1`1MFcqpp!KL7Q%&UgI!dX?Td@wA_9zG36Zcb$B7wlS;o^1iiq$r59pe9|;6Tjo7q zQL(V|-YetAEsU*P>6z+k6MN!`_O->u=Vg1SY0{lZU#N!|9qdX@cp? zxPA%EzpnhmrMQz$2$I4S$SR#z(xbdH8wVy#>Pei%m=1t0_{i! ztgly(1&>)WZT?rES@3k^%F1a6p58GxO#I~Si!Xbra&%eQ8+-pkED`61FD-be=*ID% z?LJPyah_5HEiJ^?uBH7aKcQgrW@qkAH?9244L7XJ4+4jsJ7NER`0zs_MMa}V6&IhL zLkT!3(0KWcH8eIht_3~@R08=!MLqVr;+*&O37@+Ds?(l4b;iu1isGV=iOb99n}_$+ z0TlfE#1npS?FG*i7E-abaWh&ajr{tp+pF7JR9!bGK|Bt3RzbN9Un~dw#zvy|-%tLW zIoO~6G^Vu`;W$uOi1s|*yyK3iKHRqL7pETFhVj62_XE(_*!X-|S=r}P_v?WeUHRpq zpXqR}9(&q_7nQFezop={>Q@;vu5{M5Up@6@acS8(Ma2b`*Ia(mi`Dx7DmLwmVw+Kf zWSDoVn&17)E6oedBMonNQ%Ob$vHNlO_Pbz?OM)f>Aii!L;l@Vn&wK_e6vFd;^X5Yj zJ+*twmhW5yyZahk901xmfJ?HT?GBq>h)t5nMWEnW-$B)*!8Fo*YC9L86`@6+@yZVfT}8t=V8sC z&wHCUZ~kD*mg_GyrnbM4U^md#mX(zq540TVfc5LGDf8f-*Z;QGxp?E-O||Wj(vWnCJE- zU4Ig;ORTyYs;g~j+sEb*sXOh{0bp$(Djwp18P-ibKHI#l{PIx8lqRcX%KNR=V=gu; zcmJ&qxj*5!?k^kL+kewuT8g$T+N5NMQctRQ{96*fxdooAC;7TSlh*vbs_HlGd-g2P zA=U@lfbME=NP#sd*?J*_;IeU_Mi4)!gK@xfkHW+t9RAU$yu7c(TUvhWz>QxvW*5K{ zLQHnyXA|KI%|blr8uPtNp(fLR50pyihEsuaF<_DWz2%lnU=4@L!(m-sNdYEP*$$^0 zv)e5ZBQx4|Y-Q?nr@Px3?9h(3ZWr3^tj=`TP57gKr87N$ zp2wWee1GRRCwo_xahnw)5cxNPJbCg2L6DV|6`#+yw6v6!mDS$f9-JvFD^n;GQ&UrZ zzh5jCkByB101O60U0q#p_1BM>Cv-vP?&s4@g_((4_1L=L$(a91)0=J91Gas#R{McE znYG^9*0A5YZ>#;~+Wkn(W5B0^yELIYLP!K}mB~<)AM@1&nqekynuaEGqPrzoH|KodRXJy)%+w_fu3nE5>@Bd_b zqC$EQ;{c`T&?EsNO|igL9gC7Ygxv?aQUEXMq?~>wg{EyW;VcJ37CUF#HjrT=KQO_* zS>M9yydXk18D(+QDJ1>r);Lav_uYKp$T?4vr{Q$lTo&pKv^?(>L-)G2*lwH!Ah7k? z7oH<8h-(KTKt5V6$8gF)C7Io&P5=SjTh)=zV=E2EUhQZP##L8S{d%UK>>+y82>+FV+#^BzW7u3F)Bb>=lYQ%%j`F>ASe zo*cw@V#u6T`A2He;70mR(V&iV&-7{qP~=SRf&jm9-T{*ZeZ}$rd0#6c&fLG^xJcf5 z+p<`wJYgW+_s*V{uI$nMB;%8`S_3>PfGOj3Rq}@Cx^+j?rk92fANSFDBYnOqQ>Vdj z)(|$AhP4t&Lb=Gvo2#3Gl%9<=Gv`Mz?Po@P4iLF!x}GUWJICDlFk-hS^Whyh7x~VH z@0vD1>HYD4&e+~yzS*-sFR{9`{QEEZO1zg7>R&7cHts-6j!xHVdA8eI+ZlVzd%`es zJT@$#GX(gvCJ1oJN%yLBK}{V=V;seo;!w|Yte!W1%5qLNFWqvZW>h&IiH+oPT=b@E zPhGzv5=(Un*X>v`>%8h_nj^NdYcE6NHS_ifkCV$*D)Tqrbu`s;<=t<4 zAHNqNV?6(g<1PY-w@#I-WYFViz?9TrkMr)u0g`O`u|>T;k|2sV*YF^punvT;$SuTy{j3Gv)yqD!R_CF>yR)MzmmYS5v+~R zXAdD%ng9?df;wd8GxR#%3O+gz};Vo;)sK%Bj-q>Oq%R7JU-KD?vYu>#2UjaDo z&8$>5xW~?KPD_#XFToU1hIb*VOMidUr6iYiO0N|i-7s`T8!cFT`rN!^1Pt78J93i6 z5HI1wIM$94m{3SLDvISDe6$ZG1;eq_D9RTaaC>=cO{@Bs>$IlPCPJJ$h$)-3vzNUQ6OsN#_zWxey!_9%hxwH2_dEJi=yY|1c7nDm2_Lm!Cof8-R_+9UkS zcBE(o47yE)oMR(Q=dp1a2wTX5KvvGyLqlWTa7V&!A*|w|)ax~1_~aJ0=_Lilg*0iQk7#ZD EAHN$8j{pDw diff --git a/config/rootfiles/packages/cacti b/config/rootfiles/packages/cacti deleted file mode 100644 index de0e2c773..000000000 --- a/config/rootfiles/packages/cacti +++ /dev/null @@ -1,533 +0,0 @@ -etc/fcron.cyclic/cacti.cron -etc/httpd/conf/vhosts.d/cacti.conf -#etc/logrotate.d -etc/logrotate.d/cacti -#usr/share/cacti -#usr/share/cacti/LICENSE -#usr/share/cacti/README -usr/share/cacti/about.php -usr/share/cacti/auth_changepassword.php -usr/share/cacti/auth_login.php -usr/share/cacti/cacti.sql -usr/share/cacti/cdef.php -#usr/share/cacti/cli -usr/share/cacti/cli/.htaccess -usr/share/cacti/cli/add_data_query.php -usr/share/cacti/cli/add_device.php -usr/share/cacti/cli/add_graph_template.php -usr/share/cacti/cli/add_graphs.php -usr/share/cacti/cli/add_perms.php -usr/share/cacti/cli/add_tree.php -usr/share/cacti/cli/analyze_database.php -usr/share/cacti/cli/convert_innodb.php -usr/share/cacti/cli/copy_user.php -usr/share/cacti/cli/data_template_associate_rra.php -usr/share/cacti/cli/host_update_template.php -usr/share/cacti/cli/import_template.php -usr/share/cacti/cli/poller_data_sources_reapply_names.php -usr/share/cacti/cli/poller_graphs_reapply_names.php -usr/share/cacti/cli/poller_output_empty.php -usr/share/cacti/cli/poller_reindex_hosts.php -usr/share/cacti/cli/rebuild_poller_cache.php -usr/share/cacti/cli/reorder_data_query.php -usr/share/cacti/cli/repair_database.php -usr/share/cacti/cli/repair_templates.php -usr/share/cacti/cli/structure_rra_paths.php -usr/share/cacti/cli/upgrade_database.php -usr/share/cacti/cmd.php -usr/share/cacti/color.php -usr/share/cacti/data_input.php -usr/share/cacti/data_queries.php -usr/share/cacti/data_sources.php -usr/share/cacti/data_templates.php -#usr/share/cacti/docs -#usr/share/cacti/docs/CHANGELOG -#usr/share/cacti/docs/CONTRIB -#usr/share/cacti/docs/README -#usr/share/cacti/docs/html -#usr/share/cacti/docs/html/LICENSE.html -#usr/share/cacti/docs/html/advanced_topics.html -#usr/share/cacti/docs/html/basics.html -#usr/share/cacti/docs/html/batch_copy_users.html -#usr/share/cacti/docs/html/bsd_ports.html -#usr/share/cacti/docs/html/cacti_help.html -#usr/share/cacti/docs/html/cdefs.html -#usr/share/cacti/docs/html/check_cacti_poller.html -#usr/share/cacti/docs/html/check_data_gathering.html -#usr/share/cacti/docs/html/check_mysql_updating.html -#usr/share/cacti/docs/html/check_rrd_graph.html -#usr/share/cacti/docs/html/check_rrd_numbers.html -#usr/share/cacti/docs/html/check_rrd_owner.html -#usr/share/cacti/docs/html/check_rrd_updating.html -#usr/share/cacti/docs/html/check_zero_values.html -#usr/share/cacti/docs/html/cli_add_data_query.html -#usr/share/cacti/docs/html/cli_add_device.html -#usr/share/cacti/docs/html/cli_add_graph_template.html -#usr/share/cacti/docs/html/cli_add_graphs.html -#usr/share/cacti/docs/html/cli_add_perms.html -#usr/share/cacti/docs/html/cli_add_tree.html -#usr/share/cacti/docs/html/cli_copy_user.html -#usr/share/cacti/docs/html/cli_poller_graphs_reapply_names.html -#usr/share/cacti/docs/html/cli_poller_output_empty.html -#usr/share/cacti/docs/html/cli_poller_reindex_hosts.html -#usr/share/cacti/docs/html/copying_user.html -#usr/share/cacti/docs/html/create_new_user.html -#usr/share/cacti/docs/html/data_input_methods.html -#usr/share/cacti/docs/html/data_presentation.html -#usr/share/cacti/docs/html/data_queries.html -#usr/share/cacti/docs/html/data_storage.html -#usr/share/cacti/docs/html/debug_miscellaneous.html -#usr/share/cacti/docs/html/debug_rpm_installation.html -#usr/share/cacti/docs/html/debugging.html -#usr/share/cacti/docs/html/delete_users.html -#usr/share/cacti/docs/html/enable_disable_users.html -#usr/share/cacti/docs/html/faq.html -#usr/share/cacti/docs/html/graph_howto.html -#usr/share/cacti/docs/html/graph_overview.html -#usr/share/cacti/docs/html/graph_snmp_oid.html -#usr/share/cacti/docs/html/graph_templates.html -#usr/share/cacti/docs/html/graph_viewing.html -#usr/share/cacti/docs/html/guest_access.html -#usr/share/cacti/docs/html/host_templates.html -#usr/share/cacti/docs/html/host_variables.html -#usr/share/cacti/docs/html/how_to.html -#usr/share/cacti/docs/html/images -#usr/share/cacti/docs/html/images/data_source_title_example1.png -#usr/share/cacti/docs/html/images/data_source_title_example2.png -#usr/share/cacti/docs/html/images/data_source_title_template.png -#usr/share/cacti/docs/html/images/data_template.png -#usr/share/cacti/docs/html/images/export_template.png -#usr/share/cacti/docs/html/images/graph_template.png -#usr/share/cacti/docs/html/images/graph_tree.png -#usr/share/cacti/docs/html/images/host_template.png -#usr/share/cacti/docs/html/images/import_template.png -#usr/share/cacti/docs/html/images/new_device.png -#usr/share/cacti/docs/html/images/new_graphs.png -#usr/share/cacti/docs/html/images/principles_of_operation.png -#usr/share/cacti/docs/html/images/user_management_batch_copy_1.png -#usr/share/cacti/docs/html/images/user_management_batch_copy_2.png -#usr/share/cacti/docs/html/images/user_management_copy_1.png -#usr/share/cacti/docs/html/images/user_management_copy_2.png -#usr/share/cacti/docs/html/images/user_management_delete_1.png -#usr/share/cacti/docs/html/images/user_management_delete_2.png -#usr/share/cacti/docs/html/images/user_management_edit.png -#usr/share/cacti/docs/html/images/user_management_enable_disable_1.png -#usr/share/cacti/docs/html/images/user_management_enable_disable_2.png -#usr/share/cacti/docs/html/images/user_management_list.png -#usr/share/cacti/docs/html/images/user_management_new.png -#usr/share/cacti/docs/html/index.html -#usr/share/cacti/docs/html/install_unix.html -#usr/share/cacti/docs/html/install_windows.html -#usr/share/cacti/docs/html/installation.html -#usr/share/cacti/docs/html/making_scripts_work_with_cacti.html -#usr/share/cacti/docs/html/migration_php_scripts_to_script_server.html -#usr/share/cacti/docs/html/new_graphs.html -#usr/share/cacti/docs/html/operating_principles.html -#usr/share/cacti/docs/html/php_script_server.html -#usr/share/cacti/docs/html/reference.html -#usr/share/cacti/docs/html/requirements.html -#usr/share/cacti/docs/html/rrdtool_features.html -#usr/share/cacti/docs/html/script_query_xml.html -#usr/share/cacti/docs/html/scripts.html -#usr/share/cacti/docs/html/snmp_query_xml.html -#usr/share/cacti/docs/html/template_export.html -#usr/share/cacti/docs/html/template_import.html -#usr/share/cacti/docs/html/templates.html -#usr/share/cacti/docs/html/testing_script_in_script_server.html -#usr/share/cacti/docs/html/unix_apply_patches.html -#usr/share/cacti/docs/html/unix_configure_cacti.html -#usr/share/cacti/docs/html/unix_configure_httpd.html -#usr/share/cacti/docs/html/unix_configure_mysql.html -#usr/share/cacti/docs/html/unix_configure_php.html -#usr/share/cacti/docs/html/unix_configure_spine.html -#usr/share/cacti/docs/html/upgrade.html -#usr/share/cacti/docs/html/upgrade_using_hostmib_data_queries.html -#usr/share/cacti/docs/html/user_management.html -#usr/share/cacti/docs/html/using_spine.html -#usr/share/cacti/docs/html/variables.html -#usr/share/cacti/docs/pdf -#usr/share/cacti/docs/pdf/README -#usr/share/cacti/docs/txt -#usr/share/cacti/docs/txt/manual.txt -usr/share/cacti/gprint_presets.php -usr/share/cacti/graph.php -usr/share/cacti/graph_image.php -usr/share/cacti/graph_settings.php -usr/share/cacti/graph_templates.php -usr/share/cacti/graph_templates_inputs.php -usr/share/cacti/graph_templates_items.php -usr/share/cacti/graph_view.php -usr/share/cacti/graph_xport.php -usr/share/cacti/graphs.php -usr/share/cacti/graphs_items.php -usr/share/cacti/graphs_new.php -usr/share/cacti/host.php -usr/share/cacti/host_templates.php -#usr/share/cacti/images -usr/share/cacti/images/arrow.gif -usr/share/cacti/images/auth_deny.gif -usr/share/cacti/images/auth_login.gif -usr/share/cacti/images/auth_logout.gif -usr/share/cacti/images/button_add.gif -usr/share/cacti/images/button_cancel.gif -usr/share/cacti/images/button_cancel2.gif -usr/share/cacti/images/button_clear.gif -usr/share/cacti/images/button_colapse_all.gif -usr/share/cacti/images/button_create.gif -usr/share/cacti/images/button_default.gif -usr/share/cacti/images/button_delete.gif -usr/share/cacti/images/button_expand_all.gif -usr/share/cacti/images/button_export.gif -usr/share/cacti/images/button_go.gif -usr/share/cacti/images/button_help.gif -usr/share/cacti/images/button_import.gif -usr/share/cacti/images/button_no.gif -usr/share/cacti/images/button_purge.gif -usr/share/cacti/images/button_refresh.gif -usr/share/cacti/images/button_save.gif -usr/share/cacti/images/button_view.gif -usr/share/cacti/images/button_yes.gif -usr/share/cacti/images/cacti_about_logo.gif -usr/share/cacti/images/cacti_backdrop.gif -usr/share/cacti/images/cacti_backdrop2.gif -usr/share/cacti/images/cacti_logo.gif -usr/share/cacti/images/calendar.gif -usr/share/cacti/images/delete_icon.gif -usr/share/cacti/images/delete_icon_large.gif -usr/share/cacti/images/disable_icon.png -usr/share/cacti/images/enable_icon.png -usr/share/cacti/images/enable_icon_disabled.png -usr/share/cacti/images/favicon.ico -usr/share/cacti/images/graph_page_top.gif -usr/share/cacti/images/graph_properties.gif -usr/share/cacti/images/graph_query.png -usr/share/cacti/images/graph_zoom.gif -usr/share/cacti/images/hide.gif -usr/share/cacti/images/install_icon.png -usr/share/cacti/images/install_icon_disabled.png -usr/share/cacti/images/left_border.gif -usr/share/cacti/images/menu_line.gif -usr/share/cacti/images/menuarrow.gif -usr/share/cacti/images/move_down.gif -usr/share/cacti/images/move_left.gif -usr/share/cacti/images/move_right.gif -usr/share/cacti/images/move_up.gif -usr/share/cacti/images/reload_icon_small.gif -usr/share/cacti/images/shadow.gif -usr/share/cacti/images/shadow_gray.gif -usr/share/cacti/images/show.gif -usr/share/cacti/images/tab_cacti.gif -usr/share/cacti/images/tab_console.gif -usr/share/cacti/images/tab_console_down.gif -usr/share/cacti/images/tab_graphs.gif -usr/share/cacti/images/tab_graphs_down.gif -usr/share/cacti/images/tab_mode_list.gif -usr/share/cacti/images/tab_mode_list_down.gif -usr/share/cacti/images/tab_mode_preview.gif -usr/share/cacti/images/tab_mode_preview_down.gif -usr/share/cacti/images/tab_mode_tree.gif -usr/share/cacti/images/tab_mode_tree_down.gif -usr/share/cacti/images/tab_settings.gif -usr/share/cacti/images/tab_settings_down.gif -usr/share/cacti/images/transparent_line.gif -usr/share/cacti/images/uninstall_icon.gif -usr/share/cacti/images/view_none.gif -#usr/share/cacti/include -usr/share/cacti/include/auth.php -usr/share/cacti/include/bottom_footer.php -usr/share/cacti/include/config.php -usr/share/cacti/include/global.php -usr/share/cacti/include/global_arrays.php -usr/share/cacti/include/global_constants.php -usr/share/cacti/include/global_form.php -usr/share/cacti/include/global_settings.php -usr/share/cacti/include/js -usr/share/cacti/include/js/jquery -usr/share/cacti/include/js/jquery/colorpicker.js -usr/share/cacti/include/js/jquery/jquery-ui.js -usr/share/cacti/include/js/jquery/jquery.cookie.js -usr/share/cacti/include/js/jquery/jquery.dd.js -usr/share/cacti/include/js/jquery/jquery.dropdown.js -usr/share/cacti/include/js/jquery/jquery.js -usr/share/cacti/include/js/jquery/jquery.jstree.js -usr/share/cacti/include/js/jquery/jquery.tablednd.js -usr/share/cacti/include/js/jquery/jquery.timepicker.js -usr/share/cacti/include/js/jquery/jquery.zoom.js -usr/share/cacti/include/js/jquery/themes -usr/share/cacti/include/js/jquery/themes/default -usr/share/cacti/include/js/jquery/themes/default/d.gif -usr/share/cacti/include/js/jquery/themes/default/d.png -usr/share/cacti/include/js/jquery/themes/default/style.css -usr/share/cacti/include/js/jquery/themes/default/throbber.gif -usr/share/cacti/include/jscalendar -usr/share/cacti/include/jscalendar/calendar-setup.js -usr/share/cacti/include/jscalendar/calendar.js -usr/share/cacti/include/jscalendar/lang -usr/share/cacti/include/jscalendar/lang/calendar-af.js -usr/share/cacti/include/jscalendar/lang/calendar-al.js -usr/share/cacti/include/jscalendar/lang/calendar-bg.js -usr/share/cacti/include/jscalendar/lang/calendar-big5-utf8.js -usr/share/cacti/include/jscalendar/lang/calendar-big5.js -usr/share/cacti/include/jscalendar/lang/calendar-br.js -usr/share/cacti/include/jscalendar/lang/calendar-ca.js -usr/share/cacti/include/jscalendar/lang/calendar-cs-utf8.js -usr/share/cacti/include/jscalendar/lang/calendar-cs-win.js -usr/share/cacti/include/jscalendar/lang/calendar-da.js -usr/share/cacti/include/jscalendar/lang/calendar-de.js -usr/share/cacti/include/jscalendar/lang/calendar-du.js -usr/share/cacti/include/jscalendar/lang/calendar-el.js -usr/share/cacti/include/jscalendar/lang/calendar-en.js -usr/share/cacti/include/jscalendar/lang/calendar-es.js -usr/share/cacti/include/jscalendar/lang/calendar-fi.js -usr/share/cacti/include/jscalendar/lang/calendar-fr.js -usr/share/cacti/include/jscalendar/lang/calendar-he-utf8.js -usr/share/cacti/include/jscalendar/lang/calendar-hr-utf8.js -usr/share/cacti/include/jscalendar/lang/calendar-hr.js -usr/share/cacti/include/jscalendar/lang/calendar-hu.js -usr/share/cacti/include/jscalendar/lang/calendar-it.js -usr/share/cacti/include/jscalendar/lang/calendar-jp.js -usr/share/cacti/include/jscalendar/lang/calendar-ko-utf8.js -usr/share/cacti/include/jscalendar/lang/calendar-ko.js -usr/share/cacti/include/jscalendar/lang/calendar-lt-utf8.js -usr/share/cacti/include/jscalendar/lang/calendar-lt.js -usr/share/cacti/include/jscalendar/lang/calendar-lv.js -usr/share/cacti/include/jscalendar/lang/calendar-nl.js -usr/share/cacti/include/jscalendar/lang/calendar-no.js -usr/share/cacti/include/jscalendar/lang/calendar-pl-utf8.js -usr/share/cacti/include/jscalendar/lang/calendar-pl.js -usr/share/cacti/include/jscalendar/lang/calendar-pt.js -usr/share/cacti/include/jscalendar/lang/calendar-ro.js -usr/share/cacti/include/jscalendar/lang/calendar-ru.js -usr/share/cacti/include/jscalendar/lang/calendar-ru_win_.js -usr/share/cacti/include/jscalendar/lang/calendar-si.js -usr/share/cacti/include/jscalendar/lang/calendar-sk.js -usr/share/cacti/include/jscalendar/lang/calendar-sp.js -usr/share/cacti/include/jscalendar/lang/calendar-sv.js -usr/share/cacti/include/jscalendar/lang/calendar-tr.js -usr/share/cacti/include/jscalendar/lang/calendar-zh.js -usr/share/cacti/include/jscalendar/lang/cn_utf8.js -usr/share/cacti/include/layout.js -usr/share/cacti/include/main.css -usr/share/cacti/include/plugins.php -usr/share/cacti/include/top_graph_header.php -usr/share/cacti/include/top_header.php -usr/share/cacti/include/zoom.js -usr/share/cacti/index.php -#usr/share/cacti/install -usr/share/cacti/install/0_8_1_to_0_8_2.php -usr/share/cacti/install/0_8_2_to_0_8_2a.php -usr/share/cacti/install/0_8_2a_to_0_8_3.php -usr/share/cacti/install/0_8_3_to_0_8_4.php -usr/share/cacti/install/0_8_4_to_0_8_5.php -usr/share/cacti/install/0_8_5a_to_0_8_6.php -usr/share/cacti/install/0_8_6_to_0_8_6a.php -usr/share/cacti/install/0_8_6c_to_0_8_6d.php -usr/share/cacti/install/0_8_6d_to_0_8_6e.php -usr/share/cacti/install/0_8_6f_to_0_8_6g.php -usr/share/cacti/install/0_8_6g_to_0_8_6h.php -usr/share/cacti/install/0_8_6h_to_0_8_6i.php -usr/share/cacti/install/0_8_6j_to_0_8_7.php -usr/share/cacti/install/0_8_7_to_0_8_7a.php -usr/share/cacti/install/0_8_7a_to_0_8_7b.php -usr/share/cacti/install/0_8_7b_to_0_8_7c.php -usr/share/cacti/install/0_8_7c_to_0_8_7d.php -usr/share/cacti/install/0_8_7d_to_0_8_7e.php -usr/share/cacti/install/0_8_7e_to_0_8_7f.php -usr/share/cacti/install/0_8_7f_to_0_8_7g.php -usr/share/cacti/install/0_8_7g_to_0_8_7h.php -usr/share/cacti/install/0_8_7h_to_0_8_7i.php -usr/share/cacti/install/0_8_7i_to_0_8_8.php -usr/share/cacti/install/0_8_8_to_0_8_8a.php -usr/share/cacti/install/0_8_8_to_0_8_8b.php -usr/share/cacti/install/0_8_to_0_8_1.php -usr/share/cacti/install/index.php -usr/share/cacti/install/install_finish.gif -usr/share/cacti/install/install_next.gif -#usr/share/cacti/lib -#usr/share/cacti/lib/adodb -usr/share/cacti/lib/adodb/adodb-csvlib.inc.php -usr/share/cacti/lib/adodb/adodb-datadict.inc.php -usr/share/cacti/lib/adodb/adodb-error.inc.php -usr/share/cacti/lib/adodb/adodb-errorhandler.inc.php -usr/share/cacti/lib/adodb/adodb-errorpear.inc.php -usr/share/cacti/lib/adodb/adodb-exceptions.inc.php -usr/share/cacti/lib/adodb/adodb-iterator.inc.php -usr/share/cacti/lib/adodb/adodb-lib.inc.php -usr/share/cacti/lib/adodb/adodb-pear.inc.php -usr/share/cacti/lib/adodb/adodb-perf.inc.php -usr/share/cacti/lib/adodb/adodb-php4.inc.php -usr/share/cacti/lib/adodb/adodb-time.inc.php -usr/share/cacti/lib/adodb/adodb-xmlschema.inc.php -usr/share/cacti/lib/adodb/adodb.inc.php -usr/share/cacti/lib/adodb/datadict -usr/share/cacti/lib/adodb/datadict/datadict-access.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-db2.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-firebird.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-generic.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-ibase.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-informix.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-mssql.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-mysql.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-oci8.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-postgres.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-sapdb.inc.php -usr/share/cacti/lib/adodb/datadict/datadict-sybase.inc.php -usr/share/cacti/lib/adodb/drivers -usr/share/cacti/lib/adodb/drivers/adodb-access.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-ado.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-ado5.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-ado_access.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-ado_mssql.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-borland_ibase.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-csv.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-db2.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-fbsql.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-firebird.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-ibase.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-informix.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-informix72.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-ldap.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-mssql.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-mssqlpo.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-mysql.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-mysqli.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-mysqlt.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-netezza.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-oci8.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-oci805.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-oci8po.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-odbc.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-odbc_mssql.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-odbc_oracle.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-odbtp.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-odbtp_unicode.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-oracle.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-pdo.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-postgres.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-postgres64.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-postgres7.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-proxy.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-sapdb.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-sqlanywhere.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-sqlite.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-sqlitepo.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-sybase.inc.php -usr/share/cacti/lib/adodb/drivers/adodb-vfp.inc.php -usr/share/cacti/lib/adodb/lang -usr/share/cacti/lib/adodb/lang/adodb-ar.inc.php -usr/share/cacti/lib/adodb/lang/adodb-bg.inc.php -usr/share/cacti/lib/adodb/lang/adodb-bgutf8.inc.php -usr/share/cacti/lib/adodb/lang/adodb-ca.inc.php -usr/share/cacti/lib/adodb/lang/adodb-cn.inc.php -usr/share/cacti/lib/adodb/lang/adodb-cz.inc.php -usr/share/cacti/lib/adodb/lang/adodb-de.inc.php -usr/share/cacti/lib/adodb/lang/adodb-en.inc.php -usr/share/cacti/lib/adodb/lang/adodb-es.inc.php -usr/share/cacti/lib/adodb/lang/adodb-fr.inc.php -usr/share/cacti/lib/adodb/lang/adodb-hu.inc.php -usr/share/cacti/lib/adodb/lang/adodb-it.inc.php -usr/share/cacti/lib/adodb/lang/adodb-nl.inc.php -usr/share/cacti/lib/adodb/lang/adodb-pl.inc.php -usr/share/cacti/lib/adodb/lang/adodb-pt-br.inc.php -usr/share/cacti/lib/adodb/lang/adodb-ro.inc.php -usr/share/cacti/lib/adodb/lang/adodb-ru1251.inc.php -usr/share/cacti/lib/adodb/lang/adodb-sv.inc.php -usr/share/cacti/lib/adodb/license.txt -usr/share/cacti/lib/adodb/toexport.inc.php -usr/share/cacti/lib/adodb/tohtml.inc.php -usr/share/cacti/lib/api_automation_tools.php -usr/share/cacti/lib/api_data_source.php -usr/share/cacti/lib/api_device.php -usr/share/cacti/lib/api_graph.php -usr/share/cacti/lib/api_poller.php -usr/share/cacti/lib/api_tree.php -usr/share/cacti/lib/auth.php -usr/share/cacti/lib/cdef.php -usr/share/cacti/lib/data_query.php -usr/share/cacti/lib/database.php -usr/share/cacti/lib/export.php -usr/share/cacti/lib/functions.php -usr/share/cacti/lib/graph_export.php -usr/share/cacti/lib/graph_variables.php -usr/share/cacti/lib/html.php -usr/share/cacti/lib/html_form.php -usr/share/cacti/lib/html_form_template.php -usr/share/cacti/lib/html_tree.php -usr/share/cacti/lib/html_utility.php -usr/share/cacti/lib/html_validate.php -usr/share/cacti/lib/import.php -usr/share/cacti/lib/ldap.php -usr/share/cacti/lib/ping.php -usr/share/cacti/lib/plugins.php -usr/share/cacti/lib/poller.php -usr/share/cacti/lib/rrd.php -usr/share/cacti/lib/snmp.php -usr/share/cacti/lib/sort.php -usr/share/cacti/lib/template.php -usr/share/cacti/lib/time.php -usr/share/cacti/lib/timespan_settings.php -usr/share/cacti/lib/tree.php -usr/share/cacti/lib/utility.php -usr/share/cacti/lib/variables.php -usr/share/cacti/lib/xml.php -usr/share/cacti/log -usr/share/cacti/logout.php -usr/share/cacti/plugins -usr/share/cacti/plugins.php -usr/share/cacti/plugins/index.php -usr/share/cacti/poller.php -usr/share/cacti/poller_commands.php -usr/share/cacti/poller_export.php -#usr/share/cacti/resource -#usr/share/cacti/resource/script_queries -usr/share/cacti/resource/script_queries/host_cpu.xml -usr/share/cacti/resource/script_queries/host_disk.xml -usr/share/cacti/resource/script_queries/unix_disk.xml -usr/share/cacti/resource/script_server -usr/share/cacti/resource/script_server/host_cpu.xml -usr/share/cacti/resource/script_server/host_disk.xml -#usr/share/cacti/resource/snmp_queries -usr/share/cacti/resource/snmp_queries/host_disk.xml -usr/share/cacti/resource/snmp_queries/interface.xml -usr/share/cacti/resource/snmp_queries/kbridge.xml -usr/share/cacti/resource/snmp_queries/net-snmp_disk.xml -usr/share/cacti/resource/snmp_queries/netware_cpu.xml -usr/share/cacti/resource/snmp_queries/netware_disk.xml -usr/share/cacti/rra -usr/share/cacti/rra.php -usr/share/cacti/script_server.php -usr/share/cacti/script_server.pl -#usr/share/cacti/scripts -usr/share/cacti/scripts/3com_cable_modem.pl -usr/share/cacti/scripts/diskfree.pl -usr/share/cacti/scripts/diskfree.sh -usr/share/cacti/scripts/linux_memory.pl -usr/share/cacti/scripts/loadavg.pl -usr/share/cacti/scripts/loadavg_multi.pl -usr/share/cacti/scripts/ping.pl -usr/share/cacti/scripts/query_host_cpu.php -usr/share/cacti/scripts/query_host_partitions.php -usr/share/cacti/scripts/query_unix_partitions.pl -usr/share/cacti/scripts/sql.php -usr/share/cacti/scripts/ss_fping.php -usr/share/cacti/scripts/ss_host_cpu.php -usr/share/cacti/scripts/ss_host_disk.php -usr/share/cacti/scripts/ss_sql.php -usr/share/cacti/scripts/unix_processes.pl -usr/share/cacti/scripts/unix_tcp_connections.pl -usr/share/cacti/scripts/unix_users.pl -usr/share/cacti/scripts/weatherbug.pl -usr/share/cacti/scripts/webhits.pl -usr/share/cacti/settings.php -usr/share/cacti/templates_export.php -usr/share/cacti/templates_import.php -usr/share/cacti/tree.php -usr/share/cacti/user_admin.php -usr/share/cacti/utilities.php -#var/cacti -#var/cacti/log -var/cacti/log/.htaccess -#var/cacti/log/cacti.log -#var/cacti/rra -var/cacti/rra/.htaccess -var/ipfire/backup/addons/includes/cacti diff --git a/lfs/cacti b/lfs/cacti deleted file mode 100644 index d0e967d22..000000000 --- a/lfs/cacti +++ /dev/null @@ -1,114 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007-2011 IPFire Team # -# # -# 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 . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.8.8b - -THISAPP = cacti-$(VER) -DL_FILE = $(THISAPP).tar.gz -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = cacti -PAK_VER = 6 - -DEPS = "netsnmpd mysql" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = acb40deae073ca22e5c01a8e3ba389fb - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - - cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8a-legal.patch - cd $(DIR_APP) && patch -p1 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch - cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-html-injection.patch - cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch - cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-rra-comments.patch - cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch - cd $(DIR_APP) && patch -p2 -i $(DIR_SRC)/src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch - cp -vf \ - $(DIR_SRC)/config/cacti/d.gif \ - $(DIR_SRC)/config/cacti/d.png \ - $(DIR_SRC)/config/cacti/throbber.gif \ - $(DIR_APP)/include/js/jquery/themes/default/ - cd $(DIR_APP) && rm -rf include/treeview - - @rm -rf /var/cacti /usr/share/cacti - mkdir -pv /var/cacti /usr/share/cacti - - cd $(DIR_APP) && mv -vf * /usr/share/cacti - cp -vf $(DIR_SRC)/config/cacti/cacti.conf /etc/httpd/conf/vhosts.d/ - install -v -m 755 $(DIR_SRC)/config/cacti/cacti.cron /etc/fcron.cyclic/cacti.cron - install -v -m 644 $(DIR_SRC)/config/backup/includes/cacti \ - /var/ipfire/backup/addons/includes/cacti - - mv -vf /usr/share/cacti/log /var/cacti - mv -vf /usr/share/cacti/rra /var/cacti - ln -s /var/cacti/log /usr/share/cacti/log - ln -s /var/cacti/rra /usr/share/cacti/rra - - -mkdir -pv /etc/logrotate.d - install -v -m 644 $(DIR_SRC)/config/cacti/cacti.logrotate /etc/logrotate.d/cacti - - chown -R nobody:nobody /var/cacti/rra /var/cacti/log - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/make.sh b/make.sh index 3e8131759..234f09496 100755 --- a/make.sh +++ b/make.sh @@ -1422,7 +1422,6 @@ buildipfire() { lfsmake2 perl-DBD-mysql lfsmake2 perl-DBD-SQLite lfsmake2 perl-File-ReadBackwards - lfsmake2 cacti lfsmake2 openvmtools lfsmake2 motion lfsmake2 joe diff --git a/src/paks/cacti/install.sh b/src/paks/cacti/install.sh deleted file mode 100644 index 8268992b9..000000000 --- a/src/paks/cacti/install.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -extract_files -/etc/init.d/apache restart diff --git a/src/paks/cacti/uninstall.sh b/src/paks/cacti/uninstall.sh deleted file mode 100644 index a7b8a5370..000000000 --- a/src/paks/cacti/uninstall.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -stop_service ${NAME} -make_backup ${NAME} -remove_files diff --git a/src/paks/cacti/update.sh b/src/paks/cacti/update.sh deleted file mode 100644 index 89c40d0d7..000000000 --- a/src/paks/cacti/update.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -############################################################################ -# # -# This file is part of the IPFire Firewall. # -# # -# IPFire is free software; you can redistribute it and/or modify # -# it under the terms of the GNU General Public License as published by # -# the Free Software Foundation; either version 2 of the License, or # -# (at your option) any later version. # -# # -# IPFire 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 IPFire; if not, write to the Free Software # -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# # -# Copyright (C) 2007 IPFire-Team . # -# # -############################################################################ -# -. /opt/pakfire/lib/functions.sh -./uninstall.sh -./install.sh diff --git a/src/patches/cacti/cacti-0.8.8a-legal.patch b/src/patches/cacti/cacti-0.8.8a-legal.patch deleted file mode 100644 index af092096f..000000000 --- a/src/patches/cacti/cacti-0.8.8a-legal.patch +++ /dev/null @@ -1,8166 +0,0 @@ -diff -up cacti-0.8.8a/include/js/jquery/colorpicker.js.legal cacti-0.8.8a/include/js/jquery/colorpicker.js ---- cacti-0.8.8a/include/js/jquery/colorpicker.js.legal 2013-01-04 15:44:38.025416061 -0500 -+++ cacti-0.8.8a/include/js/jquery/colorpicker.js 2013-01-04 15:43:12.644377988 -0500 -@@ -0,0 +1,484 @@ -+/** -+ * -+ * Color picker -+ * Author: Stefan Petre www.eyecon.ro -+ * -+ * Dual licensed under the MIT and GPL licenses -+ * -+ */ -+(function ($) { -+ var ColorPicker = function () { -+ var -+ ids = {}, -+ inAction, -+ charMin = 65, -+ visible, -+ tpl = '
', -+ defaults = { -+ eventName: 'click', -+ onShow: function () {}, -+ onBeforeShow: function(){}, -+ onHide: function () {}, -+ onChange: function () {}, -+ onSubmit: function () {}, -+ color: 'ff0000', -+ livePreview: true, -+ flat: false -+ }, -+ fillRGBFields = function (hsb, cal) { -+ var rgb = HSBToRGB(hsb); -+ $(cal).data('colorpicker').fields -+ .eq(1).val(rgb.r).end() -+ .eq(2).val(rgb.g).end() -+ .eq(3).val(rgb.b).end(); -+ }, -+ fillHSBFields = function (hsb, cal) { -+ $(cal).data('colorpicker').fields -+ .eq(4).val(hsb.h).end() -+ .eq(5).val(hsb.s).end() -+ .eq(6).val(hsb.b).end(); -+ }, -+ fillHexFields = function (hsb, cal) { -+ $(cal).data('colorpicker').fields -+ .eq(0).val(HSBToHex(hsb)).end(); -+ }, -+ setSelector = function (hsb, cal) { -+ $(cal).data('colorpicker').selector.css('backgroundColor', '#' + HSBToHex({h: hsb.h, s: 100, b: 100})); -+ $(cal).data('colorpicker').selectorIndic.css({ -+ left: parseInt(150 * hsb.s/100, 10), -+ top: parseInt(150 * (100-hsb.b)/100, 10) -+ }); -+ }, -+ setHue = function (hsb, cal) { -+ $(cal).data('colorpicker').hue.css('top', parseInt(150 - 150 * hsb.h/360, 10)); -+ }, -+ setCurrentColor = function (hsb, cal) { -+ $(cal).data('colorpicker').currentColor.css('backgroundColor', '#' + HSBToHex(hsb)); -+ }, -+ setNewColor = function (hsb, cal) { -+ $(cal).data('colorpicker').newColor.css('backgroundColor', '#' + HSBToHex(hsb)); -+ }, -+ keyDown = function (ev) { -+ var pressedKey = ev.charCode || ev.keyCode || -1; -+ if ((pressedKey > charMin && pressedKey <= 90) || pressedKey == 32) { -+ return false; -+ } -+ var cal = $(this).parent().parent(); -+ if (cal.data('colorpicker').livePreview === true) { -+ change.apply(this); -+ } -+ }, -+ change = function (ev) { -+ var cal = $(this).parent().parent(), col; -+ if (this.parentNode.className.indexOf('_hex') > 0) { -+ cal.data('colorpicker').color = col = HexToHSB(fixHex(this.value)); -+ } else if (this.parentNode.className.indexOf('_hsb') > 0) { -+ cal.data('colorpicker').color = col = fixHSB({ -+ h: parseInt(cal.data('colorpicker').fields.eq(4).val(), 10), -+ s: parseInt(cal.data('colorpicker').fields.eq(5).val(), 10), -+ b: parseInt(cal.data('colorpicker').fields.eq(6).val(), 10) -+ }); -+ } else { -+ cal.data('colorpicker').color = col = RGBToHSB(fixRGB({ -+ r: parseInt(cal.data('colorpicker').fields.eq(1).val(), 10), -+ g: parseInt(cal.data('colorpicker').fields.eq(2).val(), 10), -+ b: parseInt(cal.data('colorpicker').fields.eq(3).val(), 10) -+ })); -+ } -+ if (ev) { -+ fillRGBFields(col, cal.get(0)); -+ fillHexFields(col, cal.get(0)); -+ fillHSBFields(col, cal.get(0)); -+ } -+ setSelector(col, cal.get(0)); -+ setHue(col, cal.get(0)); -+ setNewColor(col, cal.get(0)); -+ cal.data('colorpicker').onChange.apply(cal, [col, HSBToHex(col), HSBToRGB(col)]); -+ }, -+ blur = function (ev) { -+ var cal = $(this).parent().parent(); -+ cal.data('colorpicker').fields.parent().removeClass('colorpicker_focus'); -+ }, -+ focus = function () { -+ charMin = this.parentNode.className.indexOf('_hex') > 0 ? 70 : 65; -+ $(this).parent().parent().data('colorpicker').fields.parent().removeClass('colorpicker_focus'); -+ $(this).parent().addClass('colorpicker_focus'); -+ }, -+ downIncrement = function (ev) { -+ var field = $(this).parent().find('input').focus(); -+ var current = { -+ el: $(this).parent().addClass('colorpicker_slider'), -+ max: this.parentNode.className.indexOf('_hsb_h') > 0 ? 360 : (this.parentNode.className.indexOf('_hsb') > 0 ? 100 : 255), -+ y: ev.pageY, -+ field: field, -+ val: parseInt(field.val(), 10), -+ preview: $(this).parent().parent().data('colorpicker').livePreview -+ }; -+ $(document).bind('mouseup', current, upIncrement); -+ $(document).bind('mousemove', current, moveIncrement); -+ }, -+ moveIncrement = function (ev) { -+ ev.data.field.val(Math.max(0, Math.min(ev.data.max, parseInt(ev.data.val + ev.pageY - ev.data.y, 10)))); -+ if (ev.data.preview) { -+ change.apply(ev.data.field.get(0), [true]); -+ } -+ return false; -+ }, -+ upIncrement = function (ev) { -+ change.apply(ev.data.field.get(0), [true]); -+ ev.data.el.removeClass('colorpicker_slider').find('input').focus(); -+ $(document).unbind('mouseup', upIncrement); -+ $(document).unbind('mousemove', moveIncrement); -+ return false; -+ }, -+ downHue = function (ev) { -+ var current = { -+ cal: $(this).parent(), -+ y: $(this).offset().top -+ }; -+ current.preview = current.cal.data('colorpicker').livePreview; -+ $(document).bind('mouseup', current, upHue); -+ $(document).bind('mousemove', current, moveHue); -+ }, -+ moveHue = function (ev) { -+ change.apply( -+ ev.data.cal.data('colorpicker') -+ .fields -+ .eq(4) -+ .val(parseInt(360*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.y))))/150, 10)) -+ .get(0), -+ [ev.data.preview] -+ ); -+ return false; -+ }, -+ upHue = function (ev) { -+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); -+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); -+ $(document).unbind('mouseup', upHue); -+ $(document).unbind('mousemove', moveHue); -+ return false; -+ }, -+ downSelector = function (ev) { -+ var current = { -+ cal: $(this).parent(), -+ pos: $(this).offset() -+ }; -+ current.preview = current.cal.data('colorpicker').livePreview; -+ $(document).bind('mouseup', current, upSelector); -+ $(document).bind('mousemove', current, moveSelector); -+ }, -+ moveSelector = function (ev) { -+ change.apply( -+ ev.data.cal.data('colorpicker') -+ .fields -+ .eq(6) -+ .val(parseInt(100*(150 - Math.max(0,Math.min(150,(ev.pageY - ev.data.pos.top))))/150, 10)) -+ .end() -+ .eq(5) -+ .val(parseInt(100*(Math.max(0,Math.min(150,(ev.pageX - ev.data.pos.left))))/150, 10)) -+ .get(0), -+ [ev.data.preview] -+ ); -+ return false; -+ }, -+ upSelector = function (ev) { -+ fillRGBFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); -+ fillHexFields(ev.data.cal.data('colorpicker').color, ev.data.cal.get(0)); -+ $(document).unbind('mouseup', upSelector); -+ $(document).unbind('mousemove', moveSelector); -+ return false; -+ }, -+ enterSubmit = function (ev) { -+ $(this).addClass('colorpicker_focus'); -+ }, -+ leaveSubmit = function (ev) { -+ $(this).removeClass('colorpicker_focus'); -+ }, -+ clickSubmit = function (ev) { -+ var cal = $(this).parent(); -+ var col = cal.data('colorpicker').color; -+ cal.data('colorpicker').origColor = col; -+ setCurrentColor(col, cal.get(0)); -+ cal.data('colorpicker').onSubmit(col, HSBToHex(col), HSBToRGB(col), cal.data('colorpicker').el); -+ }, -+ show = function (ev) { -+ var cal = $('#' + $(this).data('colorpickerId')); -+ cal.data('colorpicker').onBeforeShow.apply(this, [cal.get(0)]); -+ var pos = $(this).offset(); -+ var viewPort = getViewport(); -+ var top = pos.top + this.offsetHeight; -+ var left = pos.left; -+ if (top + 176 > viewPort.t + viewPort.h) { -+ top -= this.offsetHeight + 176; -+ } -+ if (left + 356 > viewPort.l + viewPort.w) { -+ left -= 356; -+ } -+ cal.css({left: left + 'px', top: top + 'px'}); -+ if (cal.data('colorpicker').onShow.apply(this, [cal.get(0)]) != false) { -+ cal.show(); -+ } -+ $(document).bind('mousedown', {cal: cal}, hide); -+ return false; -+ }, -+ hide = function (ev) { -+ if (!isChildOf(ev.data.cal.get(0), ev.target, ev.data.cal.get(0))) { -+ if (ev.data.cal.data('colorpicker').onHide.apply(this, [ev.data.cal.get(0)]) != false) { -+ ev.data.cal.hide(); -+ } -+ $(document).unbind('mousedown', hide); -+ } -+ }, -+ isChildOf = function(parentEl, el, container) { -+ if (parentEl == el) { -+ return true; -+ } -+ if (parentEl.contains) { -+ return parentEl.contains(el); -+ } -+ if ( parentEl.compareDocumentPosition ) { -+ return !!(parentEl.compareDocumentPosition(el) & 16); -+ } -+ var prEl = el.parentNode; -+ while(prEl && prEl != container) { -+ if (prEl == parentEl) -+ return true; -+ prEl = prEl.parentNode; -+ } -+ return false; -+ }, -+ getViewport = function () { -+ var m = document.compatMode == 'CSS1Compat'; -+ return { -+ l : window.pageXOffset || (m ? document.documentElement.scrollLeft : document.body.scrollLeft), -+ t : window.pageYOffset || (m ? document.documentElement.scrollTop : document.body.scrollTop), -+ w : window.innerWidth || (m ? document.documentElement.clientWidth : document.body.clientWidth), -+ h : window.innerHeight || (m ? document.documentElement.clientHeight : document.body.clientHeight) -+ }; -+ }, -+ fixHSB = function (hsb) { -+ return { -+ h: Math.min(360, Math.max(0, hsb.h)), -+ s: Math.min(100, Math.max(0, hsb.s)), -+ b: Math.min(100, Math.max(0, hsb.b)) -+ }; -+ }, -+ fixRGB = function (rgb) { -+ return { -+ r: Math.min(255, Math.max(0, rgb.r)), -+ g: Math.min(255, Math.max(0, rgb.g)), -+ b: Math.min(255, Math.max(0, rgb.b)) -+ }; -+ }, -+ fixHex = function (hex) { -+ var len = 6 - hex.length; -+ if (len > 0) { -+ var o = []; -+ for (var i=0; i -1) ? hex.substring(1) : hex), 16); -+ return {r: hex >> 16, g: (hex & 0x00FF00) >> 8, b: (hex & 0x0000FF)}; -+ }, -+ HexToHSB = function (hex) { -+ return RGBToHSB(HexToRGB(hex)); -+ }, -+ RGBToHSB = function (rgb) { -+ var hsb = { -+ h: 0, -+ s: 0, -+ b: 0 -+ }; -+ var min = Math.min(rgb.r, rgb.g, rgb.b); -+ var max = Math.max(rgb.r, rgb.g, rgb.b); -+ var delta = max - min; -+ hsb.b = max; -+ if (max != 0) { -+ -+ } -+ hsb.s = max != 0 ? 255 * delta / max : 0; -+ if (hsb.s != 0) { -+ if (rgb.r == max) { -+ hsb.h = (rgb.g - rgb.b) / delta; -+ } else if (rgb.g == max) { -+ hsb.h = 2 + (rgb.b - rgb.r) / delta; -+ } else { -+ hsb.h = 4 + (rgb.r - rgb.g) / delta; -+ } -+ } else { -+ hsb.h = -1; -+ } -+ hsb.h *= 60; -+ if (hsb.h < 0) { -+ hsb.h += 360; -+ } -+ hsb.s *= 100/255; -+ hsb.b *= 100/255; -+ return hsb; -+ }, -+ HSBToRGB = function (hsb) { -+ var rgb = {}; -+ var h = Math.round(hsb.h); -+ var s = Math.round(hsb.s*255/100); -+ var v = Math.round(hsb.b*255/100); -+ if(s == 0) { -+ rgb.r = rgb.g = rgb.b = v; -+ } else { -+ var t1 = v; -+ var t2 = (255-s)*v/255; -+ var t3 = (t1-t2)*(h%60)/60; -+ if(h==360) h = 0; -+ if(h<60) {rgb.r=t1; rgb.b=t2; rgb.g=t2+t3} -+ else if(h<120) {rgb.g=t1; rgb.b=t2; rgb.r=t1-t3} -+ else if(h<180) {rgb.g=t1; rgb.r=t2; rgb.b=t2+t3} -+ else if(h<240) {rgb.b=t1; rgb.r=t2; rgb.g=t1-t3} -+ else if(h<300) {rgb.b=t1; rgb.g=t2; rgb.r=t2+t3} -+ else if(h<360) {rgb.r=t1; rgb.g=t2; rgb.b=t1-t3} -+ else {rgb.r=0; rgb.g=0; rgb.b=0} -+ } -+ return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)}; -+ }, -+ RGBToHex = function (rgb) { -+ var hex = [ -+ rgb.r.toString(16), -+ rgb.g.toString(16), -+ rgb.b.toString(16) -+ ]; -+ $.each(hex, function (nr, val) { -+ if (val.length == 1) { -+ hex[nr] = '0' + val; -+ } -+ }); -+ return hex.join(''); -+ }, -+ HSBToHex = function (hsb) { -+ return RGBToHex(HSBToRGB(hsb)); -+ }, -+ restoreOriginal = function () { -+ var cal = $(this).parent(); -+ var col = cal.data('colorpicker').origColor; -+ cal.data('colorpicker').color = col; -+ fillRGBFields(col, cal.get(0)); -+ fillHexFields(col, cal.get(0)); -+ fillHSBFields(col, cal.get(0)); -+ setSelector(col, cal.get(0)); -+ setHue(col, cal.get(0)); -+ setNewColor(col, cal.get(0)); -+ }; -+ return { -+ init: function (opt) { -+ opt = $.extend({}, defaults, opt||{}); -+ if (typeof opt.color == 'string') { -+ opt.color = HexToHSB(opt.color); -+ } else if (opt.color.r != undefined && opt.color.g != undefined && opt.color.b != undefined) { -+ opt.color = RGBToHSB(opt.color); -+ } else if (opt.color.h != undefined && opt.color.s != undefined && opt.color.b != undefined) { -+ opt.color = fixHSB(opt.color); -+ } else { -+ return this; -+ } -+ return this.each(function () { -+ if (!$(this).data('colorpickerId')) { -+ var options = $.extend({}, opt); -+ options.origColor = opt.color; -+ var id = 'collorpicker_' + parseInt(Math.random() * 1000); -+ $(this).data('colorpickerId', id); -+ var cal = $(tpl).attr('id', id); -+ if (options.flat) { -+ cal.appendTo(this).show(); -+ } else { -+ cal.appendTo(document.body); -+ } -+ options.fields = cal -+ .find('input') -+ .bind('keyup', keyDown) -+ .bind('change', change) -+ .bind('blur', blur) -+ .bind('focus', focus); -+ cal -+ .find('span').bind('mousedown', downIncrement).end() -+ .find('>div.colorpicker_current_color').bind('click', restoreOriginal); -+ options.selector = cal.find('div.colorpicker_color').bind('mousedown', downSelector); -+ options.selectorIndic = options.selector.find('div div'); -+ options.el = this; -+ options.hue = cal.find('div.colorpicker_hue div'); -+ cal.find('div.colorpicker_hue').bind('mousedown', downHue); -+ options.newColor = cal.find('div.colorpicker_new_color'); -+ options.currentColor = cal.find('div.colorpicker_current_color'); -+ cal.data('colorpicker', options); -+ cal.find('div.colorpicker_submit') -+ .bind('mouseenter', enterSubmit) -+ .bind('mouseleave', leaveSubmit) -+ .bind('click', clickSubmit); -+ fillRGBFields(options.color, cal.get(0)); -+ fillHSBFields(options.color, cal.get(0)); -+ fillHexFields(options.color, cal.get(0)); -+ setHue(options.color, cal.get(0)); -+ setSelector(options.color, cal.get(0)); -+ setCurrentColor(options.color, cal.get(0)); -+ setNewColor(options.color, cal.get(0)); -+ if (options.flat) { -+ cal.css({ -+ position: 'relative', -+ display: 'block' -+ }); -+ } else { -+ $(this).bind(options.eventName, show); -+ } -+ } -+ }); -+ }, -+ showPicker: function() { -+ return this.each( function () { -+ if ($(this).data('colorpickerId')) { -+ show.apply(this); -+ } -+ }); -+ }, -+ hidePicker: function() { -+ return this.each( function () { -+ if ($(this).data('colorpickerId')) { -+ $('#' + $(this).data('colorpickerId')).hide(); -+ } -+ }); -+ }, -+ setColor: function(col) { -+ if (typeof col == 'string') { -+ col = HexToHSB(col); -+ } else if (col.r != undefined && col.g != undefined && col.b != undefined) { -+ col = RGBToHSB(col); -+ } else if (col.h != undefined && col.s != undefined && col.b != undefined) { -+ col = fixHSB(col); -+ } else { -+ return this; -+ } -+ return this.each(function(){ -+ if ($(this).data('colorpickerId')) { -+ var cal = $('#' + $(this).data('colorpickerId')); -+ cal.data('colorpicker').color = col; -+ cal.data('colorpicker').origColor = col; -+ fillRGBFields(col, cal.get(0)); -+ fillHSBFields(col, cal.get(0)); -+ fillHexFields(col, cal.get(0)); -+ setHue(col, cal.get(0)); -+ setSelector(col, cal.get(0)); -+ setCurrentColor(col, cal.get(0)); -+ setNewColor(col, cal.get(0)); -+ } -+ }); -+ } -+ }; -+ }(); -+ $.fn.extend({ -+ ColorPicker: ColorPicker.init, -+ ColorPickerHide: ColorPicker.hidePicker, -+ ColorPickerShow: ColorPicker.showPicker, -+ ColorPickerSetColor: ColorPicker.setColor -+ }); -+})(jQuery) -\ No newline at end of file -diff -up cacti-0.8.8a/include/js/jquery/jquery.cookie.js.legal cacti-0.8.8a/include/js/jquery/jquery.cookie.js ---- cacti-0.8.8a/include/js/jquery/jquery.cookie.js.legal 2013-01-04 15:44:38.027416060 -0500 -+++ cacti-0.8.8a/include/js/jquery/jquery.cookie.js 2013-01-04 15:43:12.644377988 -0500 -@@ -0,0 +1,91 @@ -+/*jslint browser: true */ /*global jQuery: true */ -+ -+/** -+ * jQuery Cookie plugin -+ * -+ * Copyright (c) 2010 Klaus Hartl (stilbuero.de) -+ * Dual licensed under the MIT and GPL licenses: -+ * http://www.opensource.org/licenses/mit-license.php -+ * http://www.gnu.org/licenses/gpl.html -+ * -+ */ -+ -+// TODO JsDoc -+ -+/** -+ * Create a cookie with the given key and value and other optional parameters. -+ * -+ * @example $.cookie('the_cookie', 'the_value'); -+ * @desc Set the value of a cookie. -+ * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); -+ * @desc Create a cookie with all available options. -+ * @example $.cookie('the_cookie', 'the_value'); -+ * @desc Create a session cookie. -+ * @example $.cookie('the_cookie', null); -+ * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain -+ * used when the cookie was set. -+ * -+ * @param String key The key of the cookie. -+ * @param String value The value of the cookie. -+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. -+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. -+ * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. -+ * If set to null or omitted, the cookie will be a session cookie and will not be retained -+ * when the the browser exits. -+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). -+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). -+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will -+ * require a secure protocol (like HTTPS). -+ * @type undefined -+ * -+ * @name $.cookie -+ * @cat Plugins/Cookie -+ * @author Klaus Hartl/klaus.hartl@stilbuero.de -+ */ -+ -+/** -+ * Get the value of a cookie with the given key. -+ * -+ * @example $.cookie('the_cookie'); -+ * @desc Get the value of a cookie. -+ * -+ * @param String key The key of the cookie. -+ * @return The value of the cookie. -+ * @type String -+ * -+ * @name $.cookie -+ * @cat Plugins/Cookie -+ * @author Klaus Hartl/klaus.hartl@stilbuero.de -+ */ -+jQuery.cookie = function (key, value, options) { -+ -+ // key and at least value given, set cookie... -+ if (arguments.length > 1 && String(value) !== "[object Object]") { -+ options = jQuery.extend({}, options); -+ -+ if (value === null || value === undefined) { -+ options.expires = -1; -+ } -+ -+ if (typeof options.expires === 'number') { -+ var days = options.expires, t = options.expires = new Date(); -+ t.setDate(t.getDate() + days); -+ } -+ -+ value = String(value); -+ -+ return (document.cookie = [ -+ encodeURIComponent(key), '=', -+ options.raw ? value : encodeURIComponent(value), -+ options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE -+ options.path ? '; path=' + options.path : '', -+ options.domain ? '; domain=' + options.domain : '', -+ options.secure ? '; secure' : '' -+ ].join('')); -+ } -+ -+ // key and possibly options given, get cookie... -+ options = value || {}; -+ var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent; -+ return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null; -+}; -diff -up cacti-0.8.8a/include/js/jquery/jquery.dd.js.legal cacti-0.8.8a/include/js/jquery/jquery.dd.js ---- cacti-0.8.8a/include/js/jquery/jquery.dd.js.legal 2013-01-04 15:44:38.030416069 -0500 -+++ cacti-0.8.8a/include/js/jquery/jquery.dd.js 2013-01-04 15:43:12.644377988 -0500 -@@ -0,0 +1,11 @@ -+// MSDropDown - jquery.dd.js -+// author: Marghoob Suleman - Search me on google -+// Date: 12th Aug, 2009, {18 Dec, 2010 (2.36)} -+// Version: 2.37.5 {date: 17 June, 2011} -+// Revision: 34 -+// web: www.giftlelo.com | www.marghoobsuleman.com -+/* -+// msDropDown is free jQuery Plugin: you can redistribute it and/or modify -+// it under the terms of the either the MIT License or the Gnu General Public License (GPL) Version 2 -+*/ -+;eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(5($){3 1L="";3 3m=5(p,q){3 r=p;3 s=1a;3 q=$.3n({1d:4c,2q:7,3o:23,1U:6,1M:4d,3p:\'28\',1N:15,3q:\'4e\',2I:\'\',1j:\'\'},q);1a.1V=2r 3r();3 u="";3 v={};v.2J=6;v.2s=15;v.2t=1o;3 x=15;3 y={2K:\'4f\',1O:\'4g\',1H:\'4h\',29:\'4i\',1h:\'4j\',2L:\'4k\',2M:\'4l\',4m:\'4n\',2u:\'4o\',3s:\'4p\'};3 z={28:q.3p,2N:\'2N\',2O:\'2O\',2P:\'2P\',1t:\'1t\',1k:.30,2a:\'2a\',2v:\'2v\',2w:\'2w\',11:\'11\'};3 A={3t:"2x,2Q,2R,1P,2y,2z,1u,1B,2A,1Q,4q,1W,2S",18:"1C,1v,1k,4r"};1a.1R=2r 3r();3 B=$(r).18("1b");4(1w(B)=="14"||B.1c<=0){B="4s"+$.1S.3u++;$(r).2B("1b",B)};3 C=$(r).18("1j");q.1j+=(C==14)?"":C;3 D=$(r).3v();x=($(r).18("1C")>1||$(r).18("1v")==6)?6:15;4(x){q.2q=$(r).18("1C")};3 E={};3 F=0;3 G=15;3 H;3 I={};3 J=5(a){4(1w(I[a])=="14"){I[a]=1p.4t(a)}12 I[a]};3 K=5(a){12 B+y[a]};3 L=5(a){3 b=a;3 c=$(b).18("1j");12 c};3 M=5(a){3 b=$("#"+B+" 2T:11");4(b.1c>1){1D(3 i=0;i \'};3 j=$(a).1q();3 k=$(a).4u();3 l=($(a).18("1k")==6)?"1k":"2W";E[g]={1I:h+j,2b:k,1q:j,1i:a.1i,1b:g};3 m=L(a);4(M(a.1i)==6){e+=\'\';e+=h+\'<1x 1r="\'+z.1t+\'">\'+j+\'\';12 e};3 O=5(t){3 b=t.3E();4(b.1c==0)12-1;3 a="";1D(3 i 2c E){3 c=E[i].1q.3E();4(c.3F(0,b.1c)==b){a+="#"+E[i].1b+", "}};12(a=="")?-1:a};3 P=5(){3 f=D;4(f.1c==0)12"";3 g="";3 h=K("2L");3 i=K("2M");f.2X(5(c){3 d=f[c];4(d.4v=="4w"){g+="<1y 1r=\'4x\'>";g+="<1x 1j=\'3G-4y:4z;3G-1j:4A; 4B:4C;\'>"+$(d).18("4D")+"";3 e=$(d).3v();e.2X(5(a){3 b=e[a];g+=N(b,c,a,"2U")});g+=""}19{g+=N(d,c,"","")}});12 g};3 Q=5(){3 a=K("1O");3 b=K("1h");3 c=q.1j;1Y="";1Y+=\'<1y 1b="\'+b+\'" 1r="\'+z.2P+\'"\';4(!x){1Y+=(c!="")?\' 1j="\'+c+\'"\':\'\'}19{1Y+=(c!="")?\' 1j="2C-1m:4E 4F #4G;1s:2d;1n:2Y;\'+c+\'"\':\'\'};1Y+=\'>\';12 1Y};3 R=5(){3 a=K("1H");3 b=K("2u");3 c=K("29");3 d=K("3s");3 e="";3 f="";4(J(B).1E.1c>0){e=$("#"+B+" 2T:11").1q();f=$("#"+B+" 2T:11").18("1X")};f=(f.1c==0||f==14||q.1U==15||q.1N!=15)?"":\'<3x 3y="\'+f+\'" 3z="3A" /> \';3 g=\'<1y 1b="\'+a+\'" 1r="\'+z.2N+\'"\';g+=\'>\';g+=\'<1x 1b="\'+b+\'" 1r="\'+z.2O+\'"><1x 1r="\'+z.1t+\'" 1b="\'+c+\'">\'+f+\'<1x 1r="\'+z.1t+\'">\'+e+\'\';12 g};3 S=5(){3 c=K("1h");$("#"+c+" a.2W").1J("1P");$("#"+c+" a.2W").1e("1P",5(a){a.1Z();V(1a);21();4(!x){$("#"+c).1J("1B");X(15);3 b=(q.1U==15)?$(1a).1q():$(1a).1I();1T(b);s.2e()}})};3 T=5(){3 d=15;3 e=K("1O");3 f=K("1H");3 g=K("29");3 h=K("1h");3 i=K("2u");3 j=$("#"+B).2Z();j=j+2;3 k=q.1j;4($("#"+e).1c>0){$("#"+e).2D();d=6};3 l=\'<1y 1b="\'+e+\'" 1r="\'+z.28+\'"\';l+=(k!="")?\' 1j="\'+k+\'"\':\'\';l+=\'>\';l+=R();l+=Q();l+=P();l+="";l+="";4(d==6){3 m=K("2K");$("#"+m).31(l)}19{$("#"+B).31(l)};4(x){3 f=K("1H");$("#"+f).2f()};$("#"+e).9("2Z",j+"1z");$("#"+h).9("2Z",(j-2)+"1z");4(D.1c>q.2q){3 n=2g($("#"+h+" a:3H").9("2h-3I"))+2g($("#"+h+" a:3H").9("2h-1m"));3 o=((q.3o)*q.2q)-n;$("#"+h).9("1d",o+"1z")}19 4(x){3 o=$("#"+B).1d();$("#"+h).9("1d",o+"1z")};4(d==15){3J();W(B)};4($("#"+B).18("1k")==6){$("#"+e).9("2E",z.1k)};Z();$("#"+f).1e("1B",5(a){32(1)});$("#"+f).1e("1Q",5(a){32(0)});S();$("#"+h+" a.1k").9("2E",z.1k);4(x){$("#"+h).1e("1B",5(c){4(!v.2s){v.2s=6;$(1p).1e("1W",5(a){3 b=a.3K;v.2t=b;4(b==39||b==40){a.1Z();a.2i();33();21()};4(b==37||b==38){a.1Z();a.2i();34();21()}})}})};$("#"+h).1e("1Q",5(a){X(15);$(1p).1J("1W");v.2s=15;v.2t=1o});$("#"+f).1e("1P",5(b){X(15);4($("#"+h+":2j").1c==1){$("#"+h).1J("1B")}19{$("#"+h).1e("1B",5(a){X(6)});s.3L()}});$("#"+f).1e("1Q",5(a){X(15)});4(q.1U&&q.1N!=15){2k()}};3 U=5(a){1D(3 i 2c E){4(E[i].1i==a){12 E[i]}};12-1};3 V=5(a){3 b=K("1h");4($("#"+b+" a."+z.11).1c==1){u=$("#"+b+" a."+z.11).1q()};4(!x){$("#"+b+" a."+z.11).1K(z.11)};3 c=$("#"+b+" a."+z.11).18("1b");4(c!=14){3 d=(v.22==14||v.22==1o)?E[c].1i:v.22};4(a&&!x){$(a).1F(z.11)};4(x){3 e=v.2t;4($("#"+B).18("1v")==6){4(e==17){v.22=E[$(a).18("1b")].1i;$(a).4H(z.11)}19 4(e==16){$("#"+b+" a."+z.11).1K(z.11);$(a).1F(z.11);3 f=$(a).18("1b");3 g=E[f].1i;1D(3 i=35.4I(d,g);i<=35.4J(d,g);i++){$("#"+U(i).1b).1F(z.11)}}19{$("#"+b+" a."+z.11).1K(z.11);$(a).1F(z.11);v.22=E[$(a).18("1b")].1i}}19{$("#"+b+" a."+z.11).1K(z.11);$(a).1F(z.11);v.22=E[$(a).18("1b")].1i}}};3 W=5(a){3 b=a;J(b).4K=5(e){$("#"+b).1S(q)}};3 X=5(a){v.2J=a};3 Y=5(){12 v.2J};3 Z=5(){3 b=K("1O");3 c=A.3t.4L(",");1D(3 d=0;d");$("#"+B).4N($("#"+a))};3 1T=5(a){3 b=K("29");$("#"+b).1I(a)};3 3a=5(w){3 a=w;3 b=K("1h");3 c=$("#"+b+" a:2j");3 d=c.1c;3 e=$("#"+b+" a:2j").1i($("#"+b+" a.11:2j"));3 f;2F(a){1f"3b":4(e0){e--;f=c[e]};1g};4(1w(f)=="14"){12 15};$("#"+b+" a."+z.11).1K(z.11);$(f).1F(z.11);3 g=f.1b;4(!x){3 h=(q.1U==15)?E[g].1q:$("#"+g).1I();1T(h);2k(E[g].1i)};4(a=="3b"){4(2g(($("#"+g).1n().1m+$("#"+g).1d()))>=2g($("#"+b).1d())){$("#"+b).2l(($("#"+b).2l())+$("#"+g).1d()+$("#"+g).1d())}}19{4(2g(($("#"+g).1n().1m+$("#"+g).1d()))<=0){$("#"+b).2l(($("#"+b).2l()-$("#"+b).1d())-$("#"+g).1d())}}};3 33=5(){3a("3b")};3 34=5(){3a("3P")};3 2k=5(i){4(q.1N!=15){3 a=K("29");3 b=(1w(i)=="14")?J(B).1l:i;3 c=J(B).1E[b].3w;4(c.1c>0){3 d=K("1h");3 e=$("#"+d+" a."+c).18("1b");3 f=$("#"+e).9("2m-4O");3 g=$("#"+e).9("2m-1n");3 h=$("#"+e).9("2h-3Q");4(f!=14){$("#"+a).2n("."+z.1t).2B(\'1j\',"2m:"+f)};4(g!=14){$("#"+a).2n("."+z.1t).9(\'2m-1n\',g)};4(h!=14){$("#"+a).2n("."+z.1t).9(\'2h-3Q\',h)};$("#"+a).2n("."+z.1t).9(\'2m-3R\',\'4P-3R\');$("#"+a).2n("."+z.1t).9(\'2h-3I\',\'4Q\')}}};3 21=5(){3 a=K("1h");3 b=$("#"+a+" a."+z.11);4(b.1c==1){3 c=$("#"+a+" a."+z.11).1q();3 d=$("#"+a+" a."+z.11).18("1b");4(d!=14){3 e=E[d].2b;J(B).1l=E[d].1i};4(q.1U&&q.1N!=15)2k()}19 4(b.1c>1){1D(3 i=0;i46){f+=4W.4X(b)};3 c=O(f);4(c!=-1){$("#"+e).9({1d:\'4Y\'});$("#"+e+" a").2f();$(c).25();3 d=2G();$("#"+e).9(d.9);$("#"+e).9({1s:\'2d\'})}19{$("#"+e+" a").25();$("#"+e).9({1d:H+\'1z\'})};1g};4(24("1W")==6){J(B).4Z()}});$(1p).1e("2S",5(a){4($("#"+B).18("45")!=14){J(B).45()}});$(1p).1e("1u",5(a){4(Y()==15){s.2e()}});3 g=2G();$("#"+e).9(g.9);4(g.3d==6){$("#"+e).9({1s:\'2d\'});$("#"+e).1F(g.2C);3e()}19{$("#"+e)[g.3Z]("3g",5(){$("#"+e).1F(g.2C);3e()})};4(e!=1L){1L=e}}};1a.2e=5(){3 b=K("1h");3 c=$("#"+K("1H")).1n().1m;3 d=2G();G=15;4(d.3d==6){$("#"+b).50({1d:0,1m:c},5(){$("#"+b).9({1d:H+\'1z\',1s:\'2o\'});3f()})}19{$("#"+b).43("3g",5(a){3f();$("#"+b).9({1M:\'0\'});$("#"+b).9({1d:H+\'1z\'})})};2k();$(1p).1J("1W");$(1p).1J("2S");$(1p).1J("1u")};1a.1l=5(i){4(1w(i)=="14"){12 s.26("1l")}19{s.1A("1l",i)}};1a.51=5(a){4(1w(a)=="14"||a==6){$("."+z.2a).52("1j")}19{$("."+z.2a).2B("1j","1d:3M;3N:3O;1n:36")}};1a.1A=5(a,b,c){4(a==14||b==14)47{48:"1A 53 54?"};s.1V[a]=b;4(c!=6){2F(a){1f"1l":3W(a,b);1g;1f"1k":s.1k(b,6);1g;1f"1v":J(B)[a]=b;x=($(r).18("1C")>0||$(r).18("1v")==6)?6:15;4(x){3 d=$("#"+B).1d();3 f=K("1h");$("#"+f).9("1d",d+"1z");3 g=K("1H");$("#"+g).2f();3 f=K("1h");$("#"+f).9({1s:\'2d\',1n:\'2Y\'});S()};1g;1f"1C":J(B)[a]=b;4(b==0){J(B).1v=15};x=($(r).18("1C")>0||$(r).18("1v")==6)?6:15;4(b==0){3 g=K("1H");$("#"+g).25();3 f=K("1h");$("#"+f).9({1s:\'2o\',1n:\'36\'});3 h="";4(J(B).1l>=0){3 i=U(J(B).1l);h=i.1I;V($("#"+i.1b))};1T(h)}19{3 g=K("1H");$("#"+g).2f();3 f=K("1h");$("#"+f).9({1s:\'2d\',1n:\'2Y\'})};1g;44:55{J(B)[a]=b}56(e){};1g}}};1a.26=5(a,b){4(a==14&&b==14){12 s.1V};4(a!=14&&b==14){12(s.1V[a]!=14)?s.1V[a]:1o};4(a!=14&&b!=14){12 J(B)[a]}};1a.2j=5(a){3 b=K("1O");4(a==6){$("#"+b).25()}19 4(a==15){$("#"+b).2f()}19{12 $("#"+b).9("1s")}};1a.57=5(a,b){3 c=a;3 d=c.1q;3 e=(c.2b==14||c.2b==1o)?d:c.2b;3 f=(c["1X"]==14||c["1X"]==1o)?\'\':c["1X"];3 i=(b==14||b==1o)?J(B).1E.1c:b;J(B).1E[i]=2r 58(d,e);4(f!=\'\')J(B).1E[i]["1X"]=f;3 g=U(i);4(g!=-1){3 h=N(J(B).1E[i],i,"","");$("#"+g.1b).1I(h)}19{3 h=N(J(B).1E[i],i,"","");3 j=K("1h");$("#"+j).59(h);S()}};1a.2D=5(i){J(B).2D(i);4((U(i))!=-1){$("#"+U(i).1b).2D();3X(i,\'d\')};4(J(B).1c==0){1T("")}19{3 a=U(J(B).1l).1I;1T(a)};s.1A("1l",J(B).1l)};1a.1k=5(a,b){J(B).1k=a;3 c=K("1O");4(a==6){$("#"+c).9("2E",z.1k);s.2e()}19 4(a==15){$("#"+c).9("2E",1)};4(b!=6){s.1A("1k",a)}};1a.3h=5(){12(J(B).3h==14)?1o:J(B).3h};1a.3i=5(){4(2p.1c==1){12 J(B).3i(2p[0])}19 4(2p.1c==2){12 J(B).3i(2p[0],2p[1])}19{47{48:"5a 1i 5b 5c!"}}};1a.49=5(a){12 J(B).49(a)};1a.1v=5(a){4(1w(a)=="14"){12 s.26("1v")}19{s.1A("1v",a)}};1a.1C=5(a){4(1w(a)=="14"){12 s.26("1C")}19{s.1A("1C",a)}};1a.5d=5(a,b){s.1R[a]=b};1a.5e=5(a){2H(s.1R[a])(s)};3 4a=5(){s.1A("3j",$.1S.3j);s.1A("3k",$.1S.3k)};3 4b=5(){T();3V();4a();4(q.2I!=\'\'){2H(q.2I)(s)}};4b()};$.1S={3j:2.37,3k:"5f 5g",3u:20,5h:5(a,b){12 $(a).1S(b).3c("28")}};$.3l.3n({1S:5(b){12 1a.2X(5(){3 a=2r 3m(1a,b);$(1a).3c(\'28\',a)})}});4(1w($.3l.18)==\'14\'){$.3l.18=5(w){12 $(1a).2B(w)}}})(5i);',62,329,'|||var|if|function|true|||css||||||||||||||||||||||||||||||||||||||||||||||||||||||selected|return||undefined|false|||prop|else|this|id|length|height|bind|case|break|postChildID|index|style|disabled|selectedIndex|top|position|null|document|text|class|display|ddTitleText|mouseup|multiple|typeof|span|div|px|set|mouseover|size|for|options|addClass|trigger|postTitleID|html|unbind|removeClass|bs|zIndex|useSprite|postID|click|mouseout|onActions|msDropDown|bv|showIcon|ddProp|keydown|title|sDiv|preventDefault||bA|oldIndex||bB|show|get||dd|postTitleTextID|ddOutOfVision|value|in|block|close|hide|parseInt|padding|stopPropagation|visible|bz|scrollTop|background|find|none|arguments|visibleRows|new|keyboardAction|currentKey|postArrowID|borderTop|noBorderTop|focus|dblclick|mousedown|mousemove|attr|border|remove|opacity|switch|bH|eval|onInit|insideWindow|postElementHolder|postAID|postOPTAID|ddTitle|arrow|ddChild|blur|change|keyup|option|opt|_|enabled|each|relative|width||after|bD|bx|by|Math|absolute||||bw|next|data|opp|bI|bJ|fast|form|item|version|author|fn|bt|extend|rowHeight|mainCSS|animStyle|Object|postInputhidden|actions|counter|children|className|img|src|align|absmiddle|href|javascript|void|toLowerCase|substr|font|first|bottom|bu|keyCode|open|0px|overflow|hidden|previous|left|repeat|bC|trim|backgroundPosition|bE|bF|bG|window|ani||onOpen|onClose|slideUp|default|onkeyup||throw|message|namedItem|bK|bL|120|9999|slideDown|_msddHolder|_msdd|_title|_titletext|_child|_msa|_msopta|postInputID|_msinput|_arrow|_inp|keypress|tabindex|msdrpdd|getElementById|val|nodeName|OPTGROUP|opta|weight|bold|italic|clear|both|label|1px|solid|c3c3c3|toggleClass|min|max|refresh|split|mouseenter|appendTo|image|no|2px|on|events|100|delete|floor|String|fromCharCode|auto|onkeydown|animate|debug|removeAttr|to|what|try|catch|add|Option|append|An|is|required|addMyEvent|fireEvent|Marghoob|Suleman|create|jQuery'.split('|'),0,{})) -\ No newline at end of file -diff -up cacti-0.8.8a/include/js/jquery/jquery.dropdown.js.legal cacti-0.8.8a/include/js/jquery/jquery.dropdown.js ---- cacti-0.8.8a/include/js/jquery/jquery.dropdown.js.legal 2013-01-04 15:44:38.032416068 -0500 -+++ cacti-0.8.8a/include/js/jquery/jquery.dropdown.js 2013-01-04 15:43:12.644377988 -0500 -@@ -0,0 +1,227 @@ -+/* -+ +-------------------------------------------------------------------------+ -+ | Copyright (C) 2004-2013 The Cacti Group | -+ | | -+ | This program is free software; you can redistribute it and/or | -+ | modify it under the terms of the GNU General Public License | -+ | as published by the Free Software Foundation; either version 2 | -+ | of the License, or (at your option) any later version. | -+ | | -+ | This program is distributed in the hope that it will be useful, | -+ | but WITHOUT ANY WARRANTY; without even the implied warranty of | -+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | -+ | GNU General Public License for more details. | -+ +-------------------------------------------------------------------------+ -+ | Cacti: The Complete RRDTool-based Graphing Solution | -+ +-------------------------------------------------------------------------+ -+ | This code is designed, written, and maintained by the Cacti Group. See | -+ | about.php and/or the AUTHORS file for specific developer information. | -+ +-------------------------------------------------------------------------+ -+ | http://www.cacti.net/ | -+ +-------------------------------------------------------------------------+ -+*/ -+ -+(function($){ -+ $.fn.DropDownMenu = function(options) { -+ -+ var defaults = { -+ title: false, -+ subtitle: false, -+ name: 'myName', -+ maxHeight: 300, -+ width: 'auto', -+ timeout: 500, -+ auto_close: 10000, -+ html: '
empty
', -+ offsetX: 0, -+ offsetY: 0, -+ simultaneous: false, -+ textAlign: 'left' -+ }; -+ -+ var timerref = null; -+ var menu = null; -+ var menuHeight = 0; -+ var options = $.extend(defaults, options); -+ var contentHeight = 0; -+ -+ /* do nothing if requested menu is still loaded */ -+ if($('#' + options.name).is(":visible")) { return; } -+ -+ /* remove all open menus from DOM if they should not stay in front at the same time */ -+ var oldMenus = $(".cacti_dd_menu"); -+ if(options.simultaneous == false) { -+ oldMenus.css({'overflow-y':'hidden'}).slideUp('200'); -+ oldMenus.queue(function () { -+ oldMenus.remove(); -+ oldMenus.dequeue(); -+ }); -+ } -+ -+ return this.each(function() { -+ obj = $(this); -+ newMenu = _init_menu(obj); -+ _open_menu(newMenu); -+ }); -+ -+ function _init_menu(initiator){ -+ /* create the main menu structure */ -+ $("").appendTo("body"); -+ -+ /* define references to the menu and its different sections */ -+ menu = $('#' + options.name); -+ menu_head = $('#' + options.name + '_title'); -+ menu_content = $('#' + options.name + '_content'); -+ menu_back = $('#' + options.name + '_back'); -+ menu_subhead = $('#' + options.name + '_subtitle'); -+ menu_html = $('#' + options.name + '_html'); -+ -+ /* while div container "myName_html" holds the raw data ... */ -+ menu_html.append(options.html); -+ i=1; -+ menu_html.find("h6:has(div)").each(function() { -+ var subMenu = $(this); -+ var subMenuClass = options.name + '_' + i; -+ var subMenuTitle = subMenu.find('a:first').html(); -+ subMenu.addClass(subMenuClass); -+ $('.'+subMenuClass).die().live("click", function(){ _switch_layer( subMenuClass); } ); -+ subMenu.children("div").hide(); -+ subMenu.find('a:first').html('' + subMenuTitle + ''); -+ i++; -+ }); -+ -+ /* ... "myName_content" will have the visible menu data */ -+ menu_content.append(menu_html.html()); -+ -+ /* if necessary show title, subtitle ... */ -+ if(options.title !== false) { menu_head.show(); } -+ if(options.subtitle !== false) { menu_subhead.show(); } -+ -+ /* make content visible */ -+ menu_content.show(); -+ -+ /* reduce height to a minimum for best fit */ -+ menuHeight = (menu.outerHeight() > options.maxHeight) ? options.maxHeight : menu.outerHeight(); -+ -+ /* set the width to a fixed value */ -+ if(!isNaN(parseInt(options.width))) { -+ menu.css({ -+ 'min-width' : options.width + 'px', -+ 'max-width' : options.width + 'px' -+ }); -+ menu.width(options.width); -+ }else { -+ // use real width plus 15 percent -+ var width = menu.outerWidth(true)*1.15; -+ menu.css({ -+ 'min-width' : width + 'px', -+ 'max-width' : width + 'px' -+ }); -+ menu.width(width); -+ } -+ -+ /* default position of the menu container */ -+ menu.css({ -+ // x-position in relation to the initiator -+ 'left' : initiator.offset().left + options.offsetX + 'px', -+ // y-position in relation to the initiator -+ 'top' : initiator.offset().top + initiator.height() + options.offsetY + 'px' -+ }); -+ -+ /* change the orientation from right to left if width exceeds the windows size */ -+ if((initiator.offset().left + initiator.width() + options.offsetX + menu.outerWidth(true)) > $(window).width()) { -+ menu.css({'left' : (initiator.offset().left + initiator.width() - menu.outerWidth(true)) + 'px'}); -+ } -+ -+ menu.css({'height':0, 'text-align':options.textAlign}); -+ menu.bind('mouseover', _cancel_timer); -+ menu.bind('mouseout', _set_timer); -+ return menu; -+ } -+ -+ -+ function _switch_layer(subMenuClass){ -+ if(subMenuClass == null) { -+ var content = menu_html; -+ menu_back.empty().hide(); -+ menu_content.height(contentHeight); -+ }else { -+ var content = menu_html.find('.' + subMenuClass + ' div:first'); -+ menu_back.show(); -+ } -+ -+ parentClass = menu_html.find('.' + subMenuClass).parents('h6').attr('class'); -+ -+ menu_back.empty().append( menu_html.find('.' + subMenuClass + ' a:first').html() ); -+ menu_back.find('span:last').removeClass('ui-icon-triangle-1-e').addClass('ui-icon-triangle-1-s'); -+ menu_back.unbind('click').click( function() { _switch_layer( parentClass); }); -+ -+ menu_content.empty().append(content.html()); -+ -+ /* re-calculate content height */ -+ if(subMenuClass != null) { -+ menu_head_height = menu_head.is(":visible") ? menu_head.outerHeight() : 0; -+ menu_back_height = menu_back.is(":visible") ? menu_back.outerHeight() : 0; -+ menu_subhead_height = menu_subhead.is(":visible") ? menu_subhead.outerHeight() : 0; -+ -+ menu_content.height(menuHeight - menu_head_height - menu_back_height - menu_subhead_height); -+ } -+ -+ /* return false to suppress unwanted click events*/ -+ return false; -+ } -+ -+ function _set_timer(timer){ -+ timer = ( typeof(timer) != 'number' ) ? options.timeout : timer; -+ timerref = window.setTimeout( _close_menu, timer); -+ } -+ -+ function _cancel_timer() { -+ if(timerref) { -+ window.clearTimeout(timerref); -+ timerref = null; -+ } -+ } -+ -+ function _close_menu(){ -+ menu = $('#' + options.name); -+ menu.slideUp(menuHeight*3); -+ menu.queue(function () { -+ menu.remove(); -+ menu.dequeue(); -+ }); -+ } -+ -+ function _open_menu(obj){ -+ //wait until oldMenu is completey closed before opening a new one -+ var wait = setInterval(function() { -+ if( !oldMenus.is(":animated") ) { -+ clearInterval(wait); -+ obj.show().animate({height: menuHeight}, menuHeight*3); -+ -+ //setup contentHeight; -+ menu_head_height = menu_head.is(":visible") ? menu_head.outerHeight() : 0; -+ menu_back_height = menu_back.is(":visible") ? menu_back.outerHeight() : 0; -+ menu_subhead_height = menu_subhead.is(":visible") ? menu_subhead.outerHeight() : 0; -+ -+ menu_content.height(menuHeight - menu_head_height - menu_back_height - menu_subhead_height); -+ -+ contentHeight = $('#' + options.name + '_content').height(); -+ $('#' + options.name + '_content').css({'overflow-y':'auto'}); -+ -+ obj.find('h6').eq(0).focus(); -+ if(options.auto_close !== false) { -+ _set_timer(options.auto_close); -+ } -+ } -+ }, 200); -+ } -+ -+ }; -+})(jQuery); -\ No newline at end of file -diff -up cacti-0.8.8a/include/js/jquery/jquery.js.legal cacti-0.8.8a/include/js/jquery/jquery.js ---- cacti-0.8.8a/include/js/jquery/jquery.js.legal 2013-01-04 15:44:38.035416071 -0500 -+++ cacti-0.8.8a/include/js/jquery/jquery.js 2013-01-04 15:43:12.644377988 -0500 -@@ -0,0 +1,4 @@ -+/*! jQuery v1.7.1 jquery.com | jquery.org/license */ -+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; -+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() -+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); -\ No newline at end of file -diff -up cacti-0.8.8a/include/js/jquery/jquery.jstree.js.legal cacti-0.8.8a/include/js/jquery/jquery.jstree.js ---- cacti-0.8.8a/include/js/jquery/jquery.jstree.js.legal 2013-01-04 15:44:38.036416073 -0500 -+++ cacti-0.8.8a/include/js/jquery/jquery.jstree.js 2013-01-04 15:43:12.645377988 -0500 -@@ -0,0 +1,4551 @@ -+/* -+ * jsTree 1.0-rc3 -+ * http://jstree.com/ -+ * -+ * Copyright (c) 2010 Ivan Bozhanov (vakata.com) -+ * -+ * Licensed same as jquery - under the terms of either the MIT License or the GPL Version 2 License -+ * http://www.opensource.org/licenses/mit-license.php -+ * http://www.gnu.org/licenses/gpl.html -+ * -+ * $Date: 2011-02-09 01:17:14 +0200 (ср, 09 февр 2011) $ -+ * $Revision: 236 $ -+ */ -+ -+/*jslint browser: true, onevar: true, undef: true, bitwise: true, strict: true */ -+/*global window : false, clearInterval: false, clearTimeout: false, document: false, setInterval: false, setTimeout: false, jQuery: false, navigator: false, XSLTProcessor: false, DOMParser: false, XMLSerializer: false*/ -+ -+"use strict"; -+ -+// top wrapper to prevent multiple inclusion (is this OK?) -+(function () { if(jQuery && jQuery.jstree) { return; } -+ var is_ie6 = false, is_ie7 = false, is_ff2 = false; -+ -+/* -+ * jsTree core -+ */ -+(function ($) { -+ // Common functions not related to jsTree -+ // decided to move them to a `vakata` "namespace" -+ $.vakata = {}; -+ // CSS related functions -+ $.vakata.css = { -+ get_css : function(rule_name, delete_flag, sheet) { -+ rule_name = rule_name.toLowerCase(); -+ var css_rules = sheet.cssRules || sheet.rules, -+ j = 0; -+ do { -+ if(css_rules.length && j > css_rules.length + 5) { return false; } -+ if(css_rules[j].selectorText && css_rules[j].selectorText.toLowerCase() == rule_name) { -+ if(delete_flag === true) { -+ if(sheet.removeRule) { sheet.removeRule(j); } -+ if(sheet.deleteRule) { sheet.deleteRule(j); } -+ return true; -+ } -+ else { return css_rules[j]; } -+ } -+ } -+ while (css_rules[++j]); -+ return false; -+ }, -+ add_css : function(rule_name, sheet) { -+ if($.jstree.css.get_css(rule_name, false, sheet)) { return false; } -+ if(sheet.insertRule) { sheet.insertRule(rule_name + ' { }', 0); } else { sheet.addRule(rule_name, null, 0); } -+ return $.vakata.css.get_css(rule_name); -+ }, -+ remove_css : function(rule_name, sheet) { -+ return $.vakata.css.get_css(rule_name, true, sheet); -+ }, -+ add_sheet : function(opts) { -+ var tmp = false, is_new = true; -+ if(opts.str) { -+ if(opts.title) { tmp = $("style[id='" + opts.title + "-stylesheet']")[0]; } -+ if(tmp) { is_new = false; } -+ else { -+ tmp = document.createElement("style"); -+ tmp.setAttribute('type',"text/css"); -+ if(opts.title) { tmp.setAttribute("id", opts.title + "-stylesheet"); } -+ } -+ if(tmp.styleSheet) { -+ if(is_new) { -+ document.getElementsByTagName("head")[0].appendChild(tmp); -+ tmp.styleSheet.cssText = opts.str; -+ } -+ else { -+ tmp.styleSheet.cssText = tmp.styleSheet.cssText + " " + opts.str; -+ } -+ } -+ else { -+ tmp.appendChild(document.createTextNode(opts.str)); -+ document.getElementsByTagName("head")[0].appendChild(tmp); -+ } -+ return tmp.sheet || tmp.styleSheet; -+ } -+ if(opts.url) { -+ if(document.createStyleSheet) { -+ try { tmp = document.createStyleSheet(opts.url); } catch (e) { } -+ } -+ else { -+ tmp = document.createElement('link'); -+ tmp.rel = 'stylesheet'; -+ tmp.type = 'text/css'; -+ tmp.media = "all"; -+ tmp.href = opts.url; -+ document.getElementsByTagName("head")[0].appendChild(tmp); -+ return tmp.styleSheet; -+ } -+ } -+ } -+ }; -+ -+ // private variables -+ var instances = [], // instance array (used by $.jstree.reference/create/focused) -+ focused_instance = -1, // the index in the instance array of the currently focused instance -+ plugins = {}, // list of included plugins -+ prepared_move = {}; // for the move_node function -+ -+ // jQuery plugin wrapper (thanks to jquery UI widget function) -+ $.fn.jstree = function (settings) { -+ var isMethodCall = (typeof settings == 'string'), // is this a method call like $().jstree("open_node") -+ args = Array.prototype.slice.call(arguments, 1), -+ returnValue = this; -+ -+ // if a method call execute the method on all selected instances -+ if(isMethodCall) { -+ if(settings.substring(0, 1) == '_') { return returnValue; } -+ this.each(function() { -+ var instance = instances[$.data(this, "jstree_instance_id")], -+ methodValue = (instance && $.isFunction(instance[settings])) ? instance[settings].apply(instance, args) : instance; -+ if(typeof methodValue !== "undefined" && (settings.indexOf("is_") === 0 || (methodValue !== true && methodValue !== false))) { returnValue = methodValue; return false; } -+ }); -+ } -+ else { -+ this.each(function() { -+ // extend settings and allow for multiple hashes and $.data -+ var instance_id = $.data(this, "jstree_instance_id"), -+ a = [], -+ b = settings ? $.extend({}, true, settings) : {}, -+ c = $(this), -+ s = false, -+ t = []; -+ a = a.concat(args); -+ if(c.data("jstree")) { a.push(c.data("jstree")); } -+ b = a.length ? $.extend.apply(null, [true, b].concat(a)) : b; -+ -+ // if an instance already exists, destroy it first -+ if(typeof instance_id !== "undefined" && instances[instance_id]) { instances[instance_id].destroy(); } -+ // push a new empty object to the instances array -+ instance_id = parseInt(instances.push({}),10) - 1; -+ // store the jstree instance id to the container element -+ $.data(this, "jstree_instance_id", instance_id); -+ // clean up all plugins -+ b.plugins = $.isArray(b.plugins) ? b.plugins : $.jstree.defaults.plugins.slice(); -+ b.plugins.unshift("core"); -+ // only unique plugins -+ b.plugins = b.plugins.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(","); -+ -+ // extend defaults with passed data -+ s = $.extend(true, {}, $.jstree.defaults, b); -+ s.plugins = b.plugins; -+ $.each(plugins, function (i, val) { -+ if($.inArray(i, s.plugins) === -1) { s[i] = null; delete s[i]; } -+ else { t.push(i); } -+ }); -+ s.plugins = t; -+ -+ // push the new object to the instances array (at the same time set the default classes to the container) and init -+ instances[instance_id] = new $.jstree._instance(instance_id, $(this).addClass("jstree jstree-" + instance_id), s); -+ // init all activated plugins for this instance -+ $.each(instances[instance_id]._get_settings().plugins, function (i, val) { instances[instance_id].data[val] = {}; }); -+ $.each(instances[instance_id]._get_settings().plugins, function (i, val) { if(plugins[val]) { plugins[val].__init.apply(instances[instance_id]); } }); -+ // initialize the instance -+ setTimeout(function() { if(instances[instance_id]) { instances[instance_id].init(); } }, 0); -+ }); -+ } -+ // return the jquery selection (or if it was a method call that returned a value - the returned value) -+ return returnValue; -+ }; -+ // object to store exposed functions and objects -+ $.jstree = { -+ defaults : { -+ plugins : [] -+ }, -+ _focused : function () { return instances[focused_instance] || null; }, -+ _reference : function (needle) { -+ // get by instance id -+ if(instances[needle]) { return instances[needle]; } -+ // get by DOM (if still no luck - return null -+ var o = $(needle); -+ if(!o.length && typeof needle === "string") { o = $("#" + needle); } -+ if(!o.length) { return null; } -+ return instances[o.closest(".jstree").data("jstree_instance_id")] || null; -+ }, -+ _instance : function (index, container, settings) { -+ // for plugins to store data in -+ this.data = { core : {} }; -+ this.get_settings = function () { return $.extend(true, {}, settings); }; -+ this._get_settings = function () { return settings; }; -+ this.get_index = function () { return index; }; -+ this.get_container = function () { return container; }; -+ this.get_container_ul = function () { return container.children("ul:eq(0)"); }; -+ this._set_settings = function (s) { -+ settings = $.extend(true, {}, settings, s); -+ }; -+ }, -+ _fn : { }, -+ plugin : function (pname, pdata) { -+ pdata = $.extend({}, { -+ __init : $.noop, -+ __destroy : $.noop, -+ _fn : {}, -+ defaults : false -+ }, pdata); -+ plugins[pname] = pdata; -+ -+ $.jstree.defaults[pname] = pdata.defaults; -+ $.each(pdata._fn, function (i, val) { -+ val.plugin = pname; -+ val.old = $.jstree._fn[i]; -+ $.jstree._fn[i] = function () { -+ var rslt, -+ func = val, -+ args = Array.prototype.slice.call(arguments), -+ evnt = new $.Event("before.jstree"), -+ rlbk = false; -+ -+ if(this.data.core.locked === true && i !== "unlock" && i !== "is_locked") { return; } -+ -+ // Check if function belongs to the included plugins of this instance -+ do { -+ if(func && func.plugin && $.inArray(func.plugin, this._get_settings().plugins) !== -1) { break; } -+ func = func.old; -+ } while(func); -+ if(!func) { return; } -+ -+ // context and function to trigger events, then finally call the function -+ if(i.indexOf("_") === 0) { -+ rslt = func.apply(this, args); -+ } -+ else { -+ rslt = this.get_container().triggerHandler(evnt, { "func" : i, "inst" : this, "args" : args, "plugin" : func.plugin }); -+ if(rslt === false) { return; } -+ if(typeof rslt !== "undefined") { args = rslt; } -+ -+ rslt = func.apply( -+ $.extend({}, this, { -+ __callback : function (data) { -+ this.get_container().triggerHandler( i + '.jstree', { "inst" : this, "args" : args, "rslt" : data, "rlbk" : rlbk }); -+ }, -+ __rollback : function () { -+ rlbk = this.get_rollback(); -+ return rlbk; -+ }, -+ __call_old : function (replace_arguments) { -+ return func.old.apply(this, (replace_arguments ? Array.prototype.slice.call(arguments, 1) : args ) ); -+ } -+ }), args); -+ } -+ -+ // return the result -+ return rslt; -+ }; -+ $.jstree._fn[i].old = val.old; -+ $.jstree._fn[i].plugin = pname; -+ }); -+ }, -+ rollback : function (rb) { -+ if(rb) { -+ if(!$.isArray(rb)) { rb = [ rb ]; } -+ $.each(rb, function (i, val) { -+ instances[val.i].set_rollback(val.h, val.d); -+ }); -+ } -+ } -+ }; -+ // set the prototype for all instances -+ $.jstree._fn = $.jstree._instance.prototype = {}; -+ -+ // load the css when DOM is ready -+ $(function() { -+ // code is copied from jQuery ($.browser is deprecated + there is a bug in IE) -+ var u = navigator.userAgent.toLowerCase(), -+ v = (u.match( /.+?(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1], -+ css_string = '' + -+ '.jstree ul, .jstree li { display:block; margin:0 0 0 0; padding:0 0 0 0; list-style-type:none; } ' + -+ '.jstree li { display:block; min-height:18px; line-height:18px; white-space:nowrap; margin-left:18px; min-width:18px; } ' + -+ '.jstree-rtl li { margin-left:0; margin-right:18px; } ' + -+ '.jstree > ul > li { margin-left:0px; } ' + -+ '.jstree-rtl > ul > li { margin-right:0px; } ' + -+ '.jstree ins { display:inline-block; text-decoration:none; width:18px; height:18px; margin:0 0 0 0; padding:0; } ' + -+ '.jstree a { display:inline-block; line-height:16px; height:16px; color:black; white-space:nowrap; text-decoration:none; padding:1px 2px; margin:0; } ' + -+ '.jstree a:focus { outline: none; } ' + -+ '.jstree a > ins { height:16px; width:16px; } ' + -+ '.jstree a > .jstree-icon { margin-right:3px; } ' + -+ '.jstree-rtl a > .jstree-icon { margin-left:3px; margin-right:0; } ' + -+ 'li.jstree-open > ul { display:block; } ' + -+ 'li.jstree-closed > ul { display:none; } '; -+ // Correct IE 6 (does not support the > CSS selector) -+ if(/msie/.test(u) && parseInt(v, 10) == 6) { -+ is_ie6 = true; -+ -+ // fix image flicker and lack of caching -+ try { -+ document.execCommand("BackgroundImageCache", false, true); -+ } catch (err) { } -+ -+ css_string += '' + -+ '.jstree li { height:18px; margin-left:0; margin-right:0; } ' + -+ '.jstree li li { margin-left:18px; } ' + -+ '.jstree-rtl li li { margin-left:0px; margin-right:18px; } ' + -+ 'li.jstree-open ul { display:block; } ' + -+ 'li.jstree-closed ul { display:none !important; } ' + -+ '.jstree li a { display:inline; border-width:0 !important; padding:0px 2px !important; } ' + -+ '.jstree li a ins { height:16px; width:16px; margin-right:3px; } ' + -+ '.jstree-rtl li a ins { margin-right:0px; margin-left:3px; } '; -+ } -+ // Correct IE 7 (shifts anchor nodes onhover) -+ if(/msie/.test(u) && parseInt(v, 10) == 7) { -+ is_ie7 = true; -+ css_string += '.jstree li a { border-width:0 !important; padding:0px 2px !important; } '; -+ } -+ // correct ff2 lack of display:inline-block -+ if(!/compatible/.test(u) && /mozilla/.test(u) && parseFloat(v, 10) < 1.9) { -+ is_ff2 = true; -+ css_string += '' + -+ '.jstree ins { display:-moz-inline-box; } ' + -+ '.jstree li { line-height:12px; } ' + // WHY?? -+ '.jstree a { display:-moz-inline-box; } ' + -+ '.jstree .jstree-no-icons .jstree-checkbox { display:-moz-inline-stack !important; } '; -+ /* this shouldn't be here as it is theme specific */ -+ } -+ // the default stylesheet -+ $.vakata.css.add_sheet({ str : css_string, title : "jstree" }); -+ }); -+ -+ // core functions (open, close, create, update, delete) -+ $.jstree.plugin("core", { -+ __init : function () { -+ this.data.core.locked = false; -+ this.data.core.to_open = this.get_settings().core.initially_open; -+ this.data.core.to_load = this.get_settings().core.initially_load; -+ }, -+ defaults : { -+ html_titles : false, -+ animation : 500, -+ initially_open : [], -+ initially_load : [], -+ open_parents : true, -+ notify_plugins : true, -+ rtl : false, -+ load_open : false, -+ strings : { -+ loading : "Loading ...", -+ new_node : "New node", -+ multiple_selection : "Multiple selection" -+ } -+ }, -+ _fn : { -+ init : function () { -+ this.set_focus(); -+ if(this._get_settings().core.rtl) { -+ this.get_container().addClass("jstree-rtl").css("direction", "rtl"); -+ } -+ this.get_container().html(""); -+ this.data.core.li_height = this.get_container_ul().find("li.jstree-closed, li.jstree-leaf").eq(0).height() || 18; -+ -+ this.get_container() -+ .delegate("li > ins", "click.jstree", $.proxy(function (event) { -+ var trgt = $(event.target); -+ // if(trgt.is("ins") && event.pageY - trgt.offset().top < this.data.core.li_height) { this.toggle_node(trgt); } -+ this.toggle_node(trgt); -+ }, this)) -+ .bind("mousedown.jstree", $.proxy(function () { -+ this.set_focus(); // This used to be setTimeout(set_focus,0) - why? -+ }, this)) -+ .bind("dblclick.jstree", function (event) { -+ var sel; -+ if(document.selection && document.selection.empty) { document.selection.empty(); } -+ else { -+ if(window.getSelection) { -+ sel = window.getSelection(); -+ try { -+ sel.removeAllRanges(); -+ sel.collapse(); -+ } catch (err) { } -+ } -+ } -+ }); -+ if(this._get_settings().core.notify_plugins) { -+ this.get_container() -+ .bind("load_node.jstree", $.proxy(function (e, data) { -+ var o = this._get_node(data.rslt.obj), -+ t = this; -+ if(o === -1) { o = this.get_container_ul(); } -+ if(!o.length) { return; } -+ o.find("li").each(function () { -+ var th = $(this); -+ if(th.data("jstree")) { -+ $.each(th.data("jstree"), function (plugin, values) { -+ if(t.data[plugin] && $.isFunction(t["_" + plugin + "_notify"])) { -+ t["_" + plugin + "_notify"].call(t, th, values); -+ } -+ }); -+ } -+ }); -+ }, this)); -+ } -+ if(this._get_settings().core.load_open) { -+ this.get_container() -+ .bind("load_node.jstree", $.proxy(function (e, data) { -+ var o = this._get_node(data.rslt.obj), -+ t = this; -+ if(o === -1) { o = this.get_container_ul(); } -+ if(!o.length) { return; } -+ o.find("li.jstree-open:not(:has(ul))").each(function () { -+ t.load_node(this, $.noop, $.noop); -+ }); -+ }, this)); -+ } -+ this.__callback(); -+ this.load_node(-1, function () { this.loaded(); this.reload_nodes(); }); -+ }, -+ destroy : function () { -+ var i, -+ n = this.get_index(), -+ s = this._get_settings(), -+ _this = this; -+ -+ $.each(s.plugins, function (i, val) { -+ try { plugins[val].__destroy.apply(_this); } catch(err) { } -+ }); -+ this.__callback(); -+ // set focus to another instance if this one is focused -+ if(this.is_focused()) { -+ for(i in instances) { -+ if(instances.hasOwnProperty(i) && i != n) { -+ instances[i].set_focus(); -+ break; -+ } -+ } -+ } -+ // if no other instance found -+ if(n === focused_instance) { focused_instance = -1; } -+ // remove all traces of jstree in the DOM (only the ones set using jstree*) and cleans all events -+ this.get_container() -+ .unbind(".jstree") -+ .undelegate(".jstree") -+ .removeData("jstree_instance_id") -+ .find("[class^='jstree']") -+ .andSelf() -+ .attr("class", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); }); -+ $(document) -+ .unbind(".jstree-" + n) -+ .undelegate(".jstree-" + n); -+ // remove the actual data -+ instances[n] = null; -+ delete instances[n]; -+ }, -+ -+ _core_notify : function (n, data) { -+ if(data.opened) { -+ this.open_node(n, false, true); -+ } -+ }, -+ -+ lock : function () { -+ this.data.core.locked = true; -+ this.get_container().children("ul").addClass("jstree-locked").css("opacity","0.7"); -+ this.__callback({}); -+ }, -+ unlock : function () { -+ this.data.core.locked = false; -+ this.get_container().children("ul").removeClass("jstree-locked").css("opacity","1"); -+ this.__callback({}); -+ }, -+ is_locked : function () { return this.data.core.locked; }, -+ save_opened : function () { -+ var _this = this; -+ this.data.core.to_open = []; -+ this.get_container_ul().find("li.jstree-open").each(function () { -+ if(this.id) { _this.data.core.to_open.push("#" + this.id.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:")); } -+ }); -+ this.__callback(_this.data.core.to_open); -+ }, -+ save_loaded : function () { }, -+ reload_nodes : function (is_callback) { -+ var _this = this, -+ done = true, -+ current = [], -+ remaining = []; -+ if(!is_callback) { -+ this.data.core.reopen = false; -+ this.data.core.refreshing = true; -+ this.data.core.to_open = $.map($.makeArray(this.data.core.to_open), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); -+ this.data.core.to_load = $.map($.makeArray(this.data.core.to_load), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); -+ if(this.data.core.to_open.length) { -+ this.data.core.to_load = this.data.core.to_load.concat(this.data.core.to_open); -+ } -+ } -+ if(this.data.core.to_load.length) { -+ $.each(this.data.core.to_load, function (i, val) { -+ if(val == "#") { return true; } -+ if($(val).length) { current.push(val); } -+ else { remaining.push(val); } -+ }); -+ if(current.length) { -+ this.data.core.to_load = remaining; -+ $.each(current, function (i, val) { -+ if(!_this._is_loaded(val)) { -+ _this.load_node(val, function () { _this.reload_nodes(true); }, function () { _this.reload_nodes(true); }); -+ done = false; -+ } -+ }); -+ } -+ } -+ if(this.data.core.to_open.length) { -+ $.each(this.data.core.to_open, function (i, val) { -+ _this.open_node(val, false, true); -+ }); -+ } -+ if(done) { -+ // TODO: find a more elegant approach to syncronizing returning requests -+ if(this.data.core.reopen) { clearTimeout(this.data.core.reopen); } -+ this.data.core.reopen = setTimeout(function () { _this.__callback({}, _this); }, 50); -+ this.data.core.refreshing = false; -+ this.reopen(); -+ } -+ }, -+ reopen : function () { -+ var _this = this; -+ if(this.data.core.to_open.length) { -+ $.each(this.data.core.to_open, function (i, val) { -+ _this.open_node(val, false, true); -+ }); -+ } -+ this.__callback({}); -+ }, -+ refresh : function (obj) { -+ var _this = this; -+ this.save_opened(); -+ if(!obj) { obj = -1; } -+ obj = this._get_node(obj); -+ if(!obj) { obj = -1; } -+ if(obj !== -1) { obj.children("UL").remove(); } -+ else { this.get_container_ul().empty(); } -+ this.load_node(obj, function () { _this.__callback({ "obj" : obj}); _this.reload_nodes(); }); -+ }, -+ // Dummy function to fire after the first load (so that there is a jstree.loaded event) -+ loaded : function () { -+ this.__callback(); -+ }, -+ // deal with focus -+ set_focus : function () { -+ if(this.is_focused()) { return; } -+ var f = $.jstree._focused(); -+ if(f) { f.unset_focus(); } -+ -+ this.get_container().addClass("jstree-focused"); -+ focused_instance = this.get_index(); -+ this.__callback(); -+ }, -+ is_focused : function () { -+ return focused_instance == this.get_index(); -+ }, -+ unset_focus : function () { -+ if(this.is_focused()) { -+ this.get_container().removeClass("jstree-focused"); -+ focused_instance = -1; -+ } -+ this.__callback(); -+ }, -+ -+ // traverse -+ _get_node : function (obj) { -+ var $obj = $(obj, this.get_container()); -+ if($obj.is(".jstree") || obj == -1) { return -1; } -+ $obj = $obj.closest("li", this.get_container()); -+ return $obj.length ? $obj : false; -+ }, -+ _get_next : function (obj, strict) { -+ obj = this._get_node(obj); -+ if(obj === -1) { return this.get_container().find("> ul > li:first-child"); } -+ if(!obj.length) { return false; } -+ if(strict) { return (obj.nextAll("li").size() > 0) ? obj.nextAll("li:eq(0)") : false; } -+ -+ if(obj.hasClass("jstree-open")) { return obj.find("li:eq(0)"); } -+ else if(obj.nextAll("li").size() > 0) { return obj.nextAll("li:eq(0)"); } -+ else { return obj.parentsUntil(".jstree","li").next("li").eq(0); } -+ }, -+ _get_prev : function (obj, strict) { -+ obj = this._get_node(obj); -+ if(obj === -1) { return this.get_container().find("> ul > li:last-child"); } -+ if(!obj.length) { return false; } -+ if(strict) { return (obj.prevAll("li").length > 0) ? obj.prevAll("li:eq(0)") : false; } -+ -+ if(obj.prev("li").length) { -+ obj = obj.prev("li").eq(0); -+ while(obj.hasClass("jstree-open")) { obj = obj.children("ul:eq(0)").children("li:last"); } -+ return obj; -+ } -+ else { var o = obj.parentsUntil(".jstree","li:eq(0)"); return o.length ? o : false; } -+ }, -+ _get_parent : function (obj) { -+ obj = this._get_node(obj); -+ if(obj == -1 || !obj.length) { return false; } -+ var o = obj.parentsUntil(".jstree", "li:eq(0)"); -+ return o.length ? o : -1; -+ }, -+ _get_children : function (obj) { -+ obj = this._get_node(obj); -+ if(obj === -1) { return this.get_container().children("ul:eq(0)").children("li"); } -+ if(!obj.length) { return false; } -+ return obj.children("ul:eq(0)").children("li"); -+ }, -+ get_path : function (obj, id_mode) { -+ var p = [], -+ _this = this; -+ obj = this._get_node(obj); -+ if(obj === -1 || !obj || !obj.length) { return false; } -+ obj.parentsUntil(".jstree", "li").each(function () { -+ p.push( id_mode ? this.id : _this.get_text(this) ); -+ }); -+ p.reverse(); -+ p.push( id_mode ? obj.attr("id") : this.get_text(obj) ); -+ return p; -+ }, -+ -+ // string functions -+ _get_string : function (key) { -+ return this._get_settings().core.strings[key] || key; -+ }, -+ -+ is_open : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-open"); }, -+ is_closed : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-closed"); }, -+ is_leaf : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-leaf"); }, -+ correct_state : function (obj) { -+ obj = this._get_node(obj); -+ if(!obj || obj === -1) { return false; } -+ obj.removeClass("jstree-closed jstree-open").addClass("jstree-leaf").children("ul").remove(); -+ this.__callback({ "obj" : obj }); -+ }, -+ // open/close -+ open_node : function (obj, callback, skip_animation) { -+ obj = this._get_node(obj); -+ if(!obj.length) { return false; } -+ if(!obj.hasClass("jstree-closed")) { if(callback) { callback.call(); } return false; } -+ var s = skip_animation || is_ie6 ? 0 : this._get_settings().core.animation, -+ t = this; -+ if(!this._is_loaded(obj)) { -+ obj.children("a").addClass("jstree-loading"); -+ this.load_node(obj, function () { t.open_node(obj, callback, skip_animation); }, callback); -+ } -+ else { -+ if(this._get_settings().core.open_parents) { -+ obj.parentsUntil(".jstree",".jstree-closed").each(function () { -+ t.open_node(this, false, true); -+ }); -+ } -+ if(s) { obj.children("ul").css("display","none"); } -+ obj.removeClass("jstree-closed").addClass("jstree-open").children("a").removeClass("jstree-loading"); -+ if(s) { obj.children("ul").stop(true, true).slideDown(s, function () { this.style.display = ""; t.after_open(obj); }); } -+ else { t.after_open(obj); } -+ this.__callback({ "obj" : obj }); -+ if(callback) { callback.call(); } -+ } -+ }, -+ after_open : function (obj) { this.__callback({ "obj" : obj }); }, -+ close_node : function (obj, skip_animation) { -+ obj = this._get_node(obj); -+ var s = skip_animation || is_ie6 ? 0 : this._get_settings().core.animation, -+ t = this; -+ if(!obj.length || !obj.hasClass("jstree-open")) { return false; } -+ if(s) { obj.children("ul").attr("style","display:block !important"); } -+ obj.removeClass("jstree-open").addClass("jstree-closed"); -+ if(s) { obj.children("ul").stop(true, true).slideUp(s, function () { this.style.display = ""; t.after_close(obj); }); } -+ else { t.after_close(obj); } -+ this.__callback({ "obj" : obj }); -+ }, -+ after_close : function (obj) { this.__callback({ "obj" : obj }); }, -+ toggle_node : function (obj) { -+ obj = this._get_node(obj); -+ if(obj.hasClass("jstree-closed")) { return this.open_node(obj); } -+ if(obj.hasClass("jstree-open")) { return this.close_node(obj); } -+ }, -+ open_all : function (obj, do_animation, original_obj) { -+ obj = obj ? this._get_node(obj) : -1; -+ if(!obj || obj === -1) { obj = this.get_container_ul(); } -+ if(original_obj) { -+ obj = obj.find("li.jstree-closed"); -+ } -+ else { -+ original_obj = obj; -+ if(obj.is(".jstree-closed")) { obj = obj.find("li.jstree-closed").andSelf(); } -+ else { obj = obj.find("li.jstree-closed"); } -+ } -+ var _this = this; -+ obj.each(function () { -+ var __this = this; -+ if(!_this._is_loaded(this)) { _this.open_node(this, function() { _this.open_all(__this, do_animation, original_obj); }, !do_animation); } -+ else { _this.open_node(this, false, !do_animation); } -+ }); -+ // so that callback is fired AFTER all nodes are open -+ if(original_obj.find('li.jstree-closed').length === 0) { this.__callback({ "obj" : original_obj }); } -+ }, -+ close_all : function (obj, do_animation) { -+ var _this = this; -+ obj = obj ? this._get_node(obj) : this.get_container(); -+ if(!obj || obj === -1) { obj = this.get_container_ul(); } -+ obj.find("li.jstree-open").andSelf().each(function () { _this.close_node(this, !do_animation); }); -+ this.__callback({ "obj" : obj }); -+ }, -+ clean_node : function (obj) { -+ obj = obj && obj != -1 ? $(obj) : this.get_container_ul(); -+ obj = obj.is("li") ? obj.find("li").andSelf() : obj.find("li"); -+ obj.removeClass("jstree-last") -+ .filter("li:last-child").addClass("jstree-last").end() -+ .filter(":has(li)") -+ .not(".jstree-open").removeClass("jstree-leaf").addClass("jstree-closed"); -+ obj.not(".jstree-open, .jstree-closed").addClass("jstree-leaf").children("ul").remove(); -+ this.__callback({ "obj" : obj }); -+ }, -+ // rollback -+ get_rollback : function () { -+ this.__callback(); -+ return { i : this.get_index(), h : this.get_container().children("ul").clone(true), d : this.data }; -+ }, -+ set_rollback : function (html, data) { -+ this.get_container().empty().append(html); -+ this.data = data; -+ this.__callback(); -+ }, -+ // Dummy functions to be overwritten by any datastore plugin included -+ load_node : function (obj, s_call, e_call) { this.__callback({ "obj" : obj }); }, -+ _is_loaded : function (obj) { return true; }, -+ -+ // Basic operations: create -+ create_node : function (obj, position, js, callback, is_loaded) { -+ obj = this._get_node(obj); -+ position = typeof position === "undefined" ? "last" : position; -+ var d = $("
  • "), -+ s = this._get_settings().core, -+ tmp; -+ -+ if(obj !== -1 && !obj.length) { return false; } -+ if(!is_loaded && !this._is_loaded(obj)) { this.load_node(obj, function () { this.create_node(obj, position, js, callback, true); }); return false; } -+ -+ this.__rollback(); -+ -+ if(typeof js === "string") { js = { "data" : js }; } -+ if(!js) { js = {}; } -+ if(js.attr) { d.attr(js.attr); } -+ if(js.metadata) { d.data(js.metadata); } -+ if(js.state) { d.addClass("jstree-" + js.state); } -+ if(!js.data) { js.data = this._get_string("new_node"); } -+ if(!$.isArray(js.data)) { tmp = js.data; js.data = []; js.data.push(tmp); } -+ $.each(js.data, function (i, m) { -+ tmp = $(""); -+ if($.isFunction(m)) { m = m.call(this, js); } -+ if(typeof m == "string") { tmp.attr('href','#')[ s.html_titles ? "html" : "text" ](m); } -+ else { -+ if(!m.attr) { m.attr = {}; } -+ if(!m.attr.href) { m.attr.href = '#'; } -+ tmp.attr(m.attr)[ s.html_titles ? "html" : "text" ](m.title); -+ if(m.language) { tmp.addClass(m.language); } -+ } -+ tmp.prepend(" "); -+ if(!m.icon && js.icon) { m.icon = js.icon; } -+ if(m.icon) { -+ if(m.icon.indexOf("/") === -1) { tmp.children("ins").addClass(m.icon); } -+ else { tmp.children("ins").css("background","url('" + m.icon + "') center center no-repeat"); } -+ } -+ d.append(tmp); -+ }); -+ d.prepend(" "); -+ if(obj === -1) { -+ obj = this.get_container(); -+ if(position === "before") { position = "first"; } -+ if(position === "after") { position = "last"; } -+ } -+ switch(position) { -+ case "before": obj.before(d); tmp = this._get_parent(obj); break; -+ case "after" : obj.after(d); tmp = this._get_parent(obj); break; -+ case "inside": -+ case "first" : -+ if(!obj.children("ul").length) { obj.append("
  • '; -+ -+ for (var h = o.hourMin; h <= hourMax; h += o.hourGrid) { -+ hourGridSize++; -+ var tmph = (o.ampm && h > 12) ? h-12 : h; -+ if (tmph < 10) tmph = '0' + tmph; -+ if (o.ampm) { -+ if (h == 0) tmph = 12 +'a'; -+ else if (h < 12) tmph += 'a'; -+ else tmph += 'p'; -+ } -+ html += ''; -+ } -+ -+ html += '
    ' + tmph + '
    ' + -+ ''; -+ } else html += '
    '; -+ -+ html += '
    ' + o.minuteText + '
    '; -+ -+ if (o.showMinute && o.minuteGrid > 0) { -+ html += '
    ' + -+ '
    ' + -+ '
    '; -+ -+ for (var m = o.minuteMin; m <= minMax; m += o.minuteGrid) { -+ minuteGridSize++; -+ html += ''; -+ } -+ -+ html += '
    ' + ((m < 10) ? '0' : '') + m + '
    ' + -+ '
    '; -+ } else html += '
    '; -+ -+ html += '
    ' + o.secondText + '
    '; -+ -+ if (o.showSecond && o.secondGrid > 0) { -+ html += '
    ' + -+ '
    ' + -+ '
    '; -+ -+ for (var s = o.secondMin; s <= secMax; s += o.secondGrid) { -+ secondGridSize++; -+ html += ''; -+ } -+ -+ html += '
    ' + ((s < 10) ? '0' : '') + s + '
    ' + -+ '
    '; -+ } else html += '
    '; -+ -+ html += '
    ' + o.timezoneText + '
    '; -+ html += '
    '; -+ -+ html += ''; -+ $tp = $(html); -+ -+ // if we only want time picker... -+ if (o.timeOnly === true) { -+ $tp.prepend( -+ '
    ' + -+ '
    ' + o.timeOnlyTitle + '
    ' + -+ '
    '); -+ $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide(); -+ } -+ -+ this.hour_slider = $tp.find('#ui_tpicker_hour_'+ dp_id).slider({ -+ orientation: "horizontal", -+ value: this.hour, -+ min: o.hourMin, -+ max: hourMax, -+ step: o.stepHour, -+ slide: function(event, ui) { -+ tp_inst.hour_slider.slider( "option", "value", ui.value); -+ tp_inst._onTimeChange(); -+ } -+ }); -+ -+ // Updated by Peter Medeiros: -+ // - Pass in Event and UI instance into slide function -+ this.minute_slider = $tp.find('#ui_tpicker_minute_'+ dp_id).slider({ -+ orientation: "horizontal", -+ value: this.minute, -+ min: o.minuteMin, -+ max: minMax, -+ step: o.stepMinute, -+ slide: function(event, ui) { -+ // update the global minute slider instance value with the current slider value -+ tp_inst.minute_slider.slider( "option", "value", ui.value); -+ tp_inst._onTimeChange(); -+ } -+ }); -+ -+ this.second_slider = $tp.find('#ui_tpicker_second_'+ dp_id).slider({ -+ orientation: "horizontal", -+ value: this.second, -+ min: o.secondMin, -+ max: secMax, -+ step: o.stepSecond, -+ slide: function(event, ui) { -+ tp_inst.second_slider.slider( "option", "value", ui.value); -+ tp_inst._onTimeChange(); -+ } -+ }); -+ -+ -+ this.timezone_select = $tp.find('#ui_tpicker_timezone_'+ dp_id).append('').find("select"); -+ $.fn.append.apply(this.timezone_select, -+ $.map(o.timezoneList, function(val, idx) { -+ return $("
    ").text(c.label)).appendTo(b)},_move:function(a,b){if(!this.menu.element.is(":visible"))this.search(null,b);else{if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term),this.menu.deactivate();return}this.menu[a](b)}},widget:function(){return this.menu.element}}),a.extend(a.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(b,c){var d=new RegExp(a.ui.autocomplete.escapeRegex(c),"i");return a.grep(b,function(a){return d.test(a.label||a.value||a)})}})})(jQuery),function(a){a.widget("ui.menu",{_create:function(){var b=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){!a(c.target).closest(".ui-menu-item a").length||(c.preventDefault(),b.select(c))}),this.refresh()},refresh:function(){var b=this,c=this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem");c.children("a").addClass("ui-corner-all").attr("tabindex",-1).mouseenter(function(c){b.activate(c,a(this).parent())}).mouseleave(function(){b.deactivate()})},activate:function(a,b){this.deactivate();if(this.hasScroll()){var c=b.offset().top-this.element.offset().top,d=this.element.scrollTop(),e=this.element.height();c<0?this.element.scrollTop(d+c):c>=e&&this.element.scrollTop(d+c-e+b.height())}this.active=b.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end(),this._trigger("focus",a,{item:b})},deactivate:function(){!this.active||(this.active.children("a").removeClass("ui-state-hover").removeAttr("id"),this._trigger("blur"),this.active=null)},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(a,b,c){if(!this.active)this.activate(c,this.element.children(b));else{var d=this.active[a+"All"](".ui-menu-item").eq(0);d.length?this.activate(c,d):this.activate(c,this.element.children(b))}},nextPage:function(b){if(this.hasScroll()){if(!this.active||this.last()){this.activate(b,this.element.children(".ui-menu-item:first"));return}var c=this.active.offset().top,d=this.element.height(),e=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c-d+a(this).height();return b<10&&b>-10});e.length||(e=this.element.children(".ui-menu-item:last")),this.activate(b,e)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(b){if(this.hasScroll()){if(!this.active||this.first()){this.activate(b,this.element.children(".ui-menu-item:last"));return}var c=this.active.offset().top,d=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var b=a(this).offset().top-c+d-a(this).height();return b<10&&b>-10}),result.length||(result=this.element.children(".ui-menu-item:first")),this.activate(b,result)}else this.activate(b,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()",this.element[0].ownerDocument).addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary,f=[];d.primary||d.secondary?(this.options.text&&f.push("ui-button-text-icon"+(e?"s":d.primary?"-primary":"-secondary")),d.primary&&b.prepend(""),d.secondary&&b.append(""),this.options.text||(f.push(e?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||b.attr("title",c))):f.push("ui-button-text-only"),b.addClass(f.join(" "))}}}),a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c),a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var b=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(b?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(b?"ui-corner-left":"ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"),a.Widget.prototype.destroy.call(this)}})})(jQuery);/* -+ * jQuery UI Dialog 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/Dialog -+ * -+ * Depends: -+ * jquery.ui.core.js -+ * jquery.ui.widget.js -+ * jquery.ui.button.js -+ * jquery.ui.draggable.js -+ * jquery.ui.mouse.js -+ * jquery.ui.position.js -+ * jquery.ui.resizable.js -+ */(function(a,b){var c="ui-dialog ui-widget ui-widget-content ui-corner-all ",d={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},e={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},f=a.attrFn||{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0,click:!0};a.widget("ui.dialog",{options:{autoOpen:!0,buttons:{},closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:!1,maxWidth:!1,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",collision:"fit",using:function(b){var c=a(this).css(b).offset().top;c<0&&a(this).css("top",b.top-c)}},resizable:!0,show:null,stack:!0,title:"",width:300,zIndex:1e3},_create:function(){this.originalTitle=this.element.attr("title"),typeof this.originalTitle!="string"&&(this.originalTitle=""),this.options.title=this.options.title||this.originalTitle;var b=this,d=b.options,e=d.title||" ",f=a.ui.dialog.getTitleId(b.element),g=(b.uiDialog=a("
    ")).appendTo(document.body).hide().addClass(c+d.dialogClass).css({zIndex:d.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(c){d.closeOnEscape&&!c.isDefaultPrevented()&&c.keyCode&&c.keyCode===a.ui.keyCode.ESCAPE&&(b.close(c),c.preventDefault())}).attr({role:"dialog","aria-labelledby":f}).mousedown(function(a){b.moveToTop(!1,a)}),h=b.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g),i=(b.uiDialogTitlebar=a("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),j=a('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){j.addClass("ui-state-hover")},function(){j.removeClass("ui-state-hover")}).focus(function(){j.addClass("ui-state-focus")}).blur(function(){j.removeClass("ui-state-focus")}).click(function(a){b.close(a);return!1}).appendTo(i),k=(b.uiDialogTitlebarCloseText=a("")).addClass("ui-icon ui-icon-closethick").text(d.closeText).appendTo(j),l=a("").addClass("ui-dialog-title").attr("id",f).html(e).prependTo(i);a.isFunction(d.beforeclose)&&!a.isFunction(d.beforeClose)&&(d.beforeClose=d.beforeclose),i.find("*").add(i).disableSelection(),d.draggable&&a.fn.draggable&&b._makeDraggable(),d.resizable&&a.fn.resizable&&b._makeResizable(),b._createButtons(d.buttons),b._isOpen=!1,a.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy(),a.uiDialog.hide(),a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"),a.uiDialog.remove(),a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(b){var c=this,d,e;if(!1!==c._trigger("beforeClose",b)){c.overlay&&c.overlay.destroy(),c.uiDialog.unbind("keypress.ui-dialog"),c._isOpen=!1,c.options.hide?c.uiDialog.hide(c.options.hide,function(){c._trigger("close",b)}):(c.uiDialog.hide(),c._trigger("close",b)),a.ui.dialog.overlay.resize(),c.options.modal&&(d=0,a(".ui-dialog").each(function(){this!==c.uiDialog[0]&&(e=a(this).css("z-index"),isNaN(e)||(d=Math.max(d,e)))}),a.ui.dialog.maxZ=d);return c}},isOpen:function(){return this._isOpen},moveToTop:function(b,c){var d=this,e=d.options,f;if(e.modal&&!b||!e.stack&&!e.modal)return d._trigger("focus",c);e.zIndex>a.ui.dialog.maxZ&&(a.ui.dialog.maxZ=e.zIndex),d.overlay&&(a.ui.dialog.maxZ+=1,d.overlay.$el.css("z-index",a.ui.dialog.overlay.maxZ=a.ui.dialog.maxZ)),f={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()},a.ui.dialog.maxZ+=1,d.uiDialog.css("z-index",a.ui.dialog.maxZ),d.element.attr(f),d._trigger("focus",c);return d},open:function(){if(!this._isOpen){var b=this,c=b.options,d=b.uiDialog;b.overlay=c.modal?new a.ui.dialog.overlay(b):null,b._size(),b._position(c.position),d.show(c.show),b.moveToTop(!0),c.modal&&d.bind("keydown.ui-dialog",function(b){if(b.keyCode===a.ui.keyCode.TAB){var c=a(":tabbable",this),d=c.filter(":first"),e=c.filter(":last");if(b.target===e[0]&&!b.shiftKey){d.focus(1);return!1}if(b.target===d[0]&&b.shiftKey){e.focus(1);return!1}}}),a(b.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus(),b._isOpen=!0,b._trigger("open");return b}},_createButtons:function(b){var c=this,d=!1,e=a("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=a("
    ").addClass("ui-dialog-buttonset").appendTo(e);c.uiDialog.find(".ui-dialog-buttonpane").remove(),typeof b=="object"&&b!==null&&a.each(b,function(){return!(d=!0)}),d&&(a.each(b,function(b,d){d=a.isFunction(d)?{click:d,text:b}:d;var e=a('').click(function(){d.click.apply(c.element[0],arguments)}).appendTo(g);a.each(d,function(a,b){a!=="click"&&(a in f?e[a](b):e.attr(a,b))}),a.fn.button&&e.button()}),e.appendTo(c.uiDialog))},_makeDraggable:function(){function f(a){return{position:a.position,offset:a.offset}}var b=this,c=b.options,d=a(document),e;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(d,g){e=c.height==="auto"?"auto":a(this).height(),a(this).height(a(this).height()).addClass("ui-dialog-dragging"),b._trigger("dragStart",d,f(g))},drag:function(a,c){b._trigger("drag",a,f(c))},stop:function(g,h){c.position=[h.position.left-d.scrollLeft(),h.position.top-d.scrollTop()],a(this).removeClass("ui-dialog-dragging").height(e),b._trigger("dragStop",g,f(h)),a.ui.dialog.overlay.resize()}})},_makeResizable:function(c){function h(a){return{originalPosition:a.originalPosition,originalSize:a.originalSize,position:a.position,size:a.size}}c=c===b?this.options.resizable:c;var d=this,e=d.options,f=d.uiDialog.css("position"),g=typeof c=="string"?c:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:g,start:function(b,c){a(this).addClass("ui-dialog-resizing"),d._trigger("resizeStart",b,h(c))},resize:function(a,b){d._trigger("resize",a,h(b))},stop:function(b,c){a(this).removeClass("ui-dialog-resizing"),e.height=a(this).height(),e.width=a(this).width(),d._trigger("resizeStop",b,h(c)),a.ui.dialog.overlay.resize()}}).css("position",f).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(b){var c=[],d=[0,0],e;if(b){if(typeof b=="string"||typeof b=="object"&&"0"in b)c=b.split?b.split(" "):[b[0],b[1]],c.length===1&&(c[1]=c[0]),a.each(["left","top"],function(a,b){+c[a]===c[a]&&(d[a]=c[a],c[a]=b)}),b={my:c.join(" "),at:c.join(" "),offset:d.join(" ")};b=a.extend({},a.ui.dialog.prototype.options.position,b)}else b=a.ui.dialog.prototype.options.position;e=this.uiDialog.is(":visible"),e||this.uiDialog.show(),this.uiDialog.css({top:0,left:0}).position(a.extend({of:window},b)),e||this.uiDialog.hide()},_setOptions:function(b){var c=this,f={},g=!1;a.each(b,function(a,b){c._setOption(a,b),a in d&&(g=!0),a in e&&(f[a]=b)}),g&&this._size(),this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",f)},_setOption:function(b,d){var e=this,f=e.uiDialog;switch(b){case"beforeclose":b="beforeClose";break;case"buttons":e._createButtons(d);break;case"closeText":e.uiDialogTitlebarCloseText.text(""+d);break;case"dialogClass":f.removeClass(e.options.dialogClass).addClass(c+d);break;case"disabled":d?f.addClass("ui-dialog-disabled"):f.removeClass("ui-dialog-disabled");break;case"draggable":var g=f.is(":data(draggable)");g&&!d&&f.draggable("destroy"),!g&&d&&e._makeDraggable();break;case"position":e._position(d);break;case"resizable":var h=f.is(":data(resizable)");h&&!d&&f.resizable("destroy"),h&&typeof d=="string"&&f.resizable("option","handles",d),!h&&d!==!1&&e._makeResizable(d);break;case"title":a(".ui-dialog-title",e.uiDialogTitlebar).html(""+(d||" "))}a.Widget.prototype._setOption.apply(e,arguments)},_size:function(){var b=this.options,c,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0}),b.minWidth>b.width&&(b.width=b.minWidth),c=this.uiDialog.css({height:"auto",width:b.width}).height(),d=Math.max(0,b.minHeight-c);if(b.height==="auto")if(a.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();var f=this.element.css("height","auto").height();e||this.uiDialog.hide(),this.element.height(Math.max(f,d))}else this.element.height(Math.max(b.height-c,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}}),a.extend(a.ui.dialog,{version:"1.8.18",uuid:0,maxZ:0,getTitleId:function(a){var b=a.attr("id");b||(this.uuid+=1,b=this.uuid);return"ui-dialog-title-"+b},overlay:function(b){this.$el=a.ui.dialog.overlay.create(b)}}),a.extend(a.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:a.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(b){this.instances.length===0&&(setTimeout(function(){a.ui.dialog.overlay.instances.length&&a(document).bind(a.ui.dialog.overlay.events,function(b){if(a(b.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});a.fn.bgiframe&&c.bgiframe(),this.instances.push(c);return c},destroy:function(b){var c=a.inArray(b,this.instances);c!=-1&&this.oldInstances.push(this.instances.splice(c,1)[0]),this.instances.length===0&&a([document,window]).unbind(".dialog-overlay"),b.remove();var d=0;a.each(this.instances,function(){d=Math.max(d,this.css("z-index"))}),this.maxZ=d},height:function(){var b,c;if(a.browser.msie&&a.browser.version<7){b=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),c=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return b").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;ic&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i);if(j===!1)return!1;this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0;return!0},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);this._slide(a,this._handleIndex,c);return!1},_mouseStop:function(a){this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1;return!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e;return this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values());return this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c1)this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);else{if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;Math.abs(c)*2>=b&&(d+=c>0?b:-b);return parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.18"})})(jQuery);/* -+ * jQuery UI Tabs 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/Tabs -+ * -+ * Depends: -+ * jquery.ui.core.js -+ * jquery.ui.widget.js -+ */(function(a,b){function f(){return++d}function e(){return++c}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
    ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
  • #{label}
  • "},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash){e.selected=a;return!1}}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1){this.blur();return!1}e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected")){e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur();return!1}if(!f.length){e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur();return!1}}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$="+a+"]")));return a},destroy:function(){var b=this.options;this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie);return this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0]));return this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a])));return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup();return this},url:function(a,b){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.18"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a'))}$.extend($.ui,{datepicker:{version:"1.8.18"}});var PROP_NAME="datepicker",dpuuid=(new Date).getTime(),instActive;$.extend(Datepicker.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){extendRemove(this._defaults,a||{});return this},_attachDatepicker:function(target,settings){var inlineSettings=null;for(var attrName in this._defaults){var attrValue=target.getAttribute("date:"+attrName);if(attrValue){inlineSettings=inlineSettings||{};try{inlineSettings[attrName]=eval(attrValue)}catch(err){inlineSettings[attrName]=attrValue}}}var nodeName=target.nodeName.toLowerCase(),inline=nodeName=="div"||nodeName=="span";target.id||(this.uuid+=1,target.id="dp"+this.uuid);var inst=this._newInst($(target),inline);inst.settings=$.extend({},settings||{},inlineSettings||{}),nodeName=="input"?this._connectDatepicker(target,inst):inline&&this._inlineDatepicker(target,inst)},_newInst:function(a,b){var c=a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1");return{id:c,input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:b?bindHover($('
    ')):this.dpDiv}},_connectDatepicker:function(a,b){var c=$(a);b.append=$([]),b.trigger=$([]);c.hasClass(this.markerClassName)||(this._attachments(c,b),c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),this._autoSize(b),$.data(a,PROP_NAME,b),b.settings.disabled&&this._disableDatepicker(a))},_attachments:function(a,b){var c=this._get(b,"appendText"),d=this._get(b,"isRTL");b.append&&b.append.remove(),c&&(b.append=$(''+c+""),a[d?"before":"after"](b.append)),a.unbind("focus",this._showDatepicker),b.trigger&&b.trigger.remove();var e=this._get(b,"showOn");(e=="focus"||e=="both")&&a.focus(this._showDatepicker);if(e=="button"||e=="both"){var f=this._get(b,"buttonText"),g=this._get(b,"buttonImage");b.trigger=$(this._get(b,"buttonImageOnly")?$("").addClass(this._triggerClass).attr({src:g,alt:f,title:f}):$('').addClass(this._triggerClass).html(g==""?f:$("").attr({src:g,alt:f,title:f}))),a[d?"before":"after"](b.trigger),b.trigger.click(function(){$.datepicker._datepickerShowing&&$.datepicker._lastInput==a[0]?$.datepicker._hideDatepicker():$.datepicker._datepickerShowing&&$.datepicker._lastInput!=a[0]?($.datepicker._hideDatepicker(),$.datepicker._showDatepicker(a[0])):$.datepicker._showDatepicker(a[0]);return!1})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var d=function(a){var b=0,c=0;for(var d=0;db&&(b=a[d].length,c=d);return c};b.setMonth(d(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort"))),b.setDate(d(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=$(a);c.hasClass(this.markerClassName)||(c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(a,c,d){b.settings[c]=d}).bind("getData.datepicker",function(a,c){return this._get(b,c)}),$.data(a,PROP_NAME,b),this._setDate(b,this._getDefaultDate(b),!0),this._updateDatepicker(b),this._updateAlternate(b),b.settings.disabled&&this._disableDatepicker(a),b.dpDiv.css("display","block"))},_dialogDatepicker:function(a,b,c,d,e){var f=this._dialogInst;if(!f){this.uuid+=1;var g="dp"+this.uuid;this._dialogInput=$(''),this._dialogInput.keydown(this._doKeyDown),$("body").append(this._dialogInput),f=this._dialogInst=this._newInst(this._dialogInput,!1),f.settings={},$.data(this._dialogInput[0],PROP_NAME,f)}extendRemove(f.settings,d||{}),b=b&&b.constructor==Date?this._formatDate(f,b):b,this._dialogInput.val(b),this._pos=e?e.length?e:[e.pageX,e.pageY]:null;if(!this._pos){var h=document.documentElement.clientWidth,i=document.documentElement.clientHeight,j=document.documentElement.scrollLeft||document.body.scrollLeft,k=document.documentElement.scrollTop||document.body.scrollTop;this._pos=[h/2-100+j,i/2-150+k]}this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),f.settings.onSelect=c,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),$.blockUI&&$.blockUI(this.dpDiv),$.data(this._dialogInput[0],PROP_NAME,f);return this},_destroyDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();$.removeData(a,PROP_NAME),d=="input"?(c.append.remove(),c.trigger.remove(),b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(d=="div"||d=="span")&&b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!1,c.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().removeClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b})}},_disableDatepicker:function(a){var b=$(a),c=$.data(a,PROP_NAME);if(!!b.hasClass(this.markerClassName)){var d=a.nodeName.toLowerCase();if(d=="input")a.disabled=!0,c.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(d=="div"||d=="span"){var e=b.children("."+this._inlineClass);e.children().addClass("ui-state-disabled"),e.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=$.map(this._disabledInputs,function(b){return b==a?null:b}),this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return!1;for(var b=0;b-1}},_doKeyUp:function(a){var b=$.datepicker._getInst(a.target);if(b.input.val()!=b.lastVal)try{var c=$.datepicker.parseDate($.datepicker._get(b,"dateFormat"),b.input?b.input.val():null,$.datepicker._getFormatConfig(b));c&&($.datepicker._setDateFromField(b),$.datepicker._updateAlternate(b),$.datepicker._updateDatepicker(b))}catch(a){$.datepicker.log(a)}return!0},_showDatepicker:function(a){a=a.target||a,a.nodeName.toLowerCase()!="input"&&(a=$("input",a.parentNode)[0]);if(!$.datepicker._isDisabledDatepicker(a)&&$.datepicker._lastInput!=a){var b=$.datepicker._getInst(a);$.datepicker._curInst&&$.datepicker._curInst!=b&&($.datepicker._curInst.dpDiv.stop(!0,!0),b&&$.datepicker._datepickerShowing&&$.datepicker._hideDatepicker($.datepicker._curInst.input[0]));var c=$.datepicker._get(b,"beforeShow"),d=c?c.apply(a,[a,b]):{};if(d===!1)return;extendRemove(b.settings,d),b.lastVal=null,$.datepicker._lastInput=a,$.datepicker._setDateFromField(b),$.datepicker._inDialog&&(a.value=""),$.datepicker._pos||($.datepicker._pos=$.datepicker._findPos(a),$.datepicker._pos[1]+=a.offsetHeight);var e=!1;$(a).parents().each(function(){e|=$(this).css("position")=="fixed";return!e}),e&&$.browser.opera&&($.datepicker._pos[0]-=document.documentElement.scrollLeft,$.datepicker._pos[1]-=document.documentElement.scrollTop);var f={left:$.datepicker._pos[0],top:$.datepicker._pos[1]};$.datepicker._pos=null,b.dpDiv.empty(),b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),$.datepicker._updateDatepicker(b),f=$.datepicker._checkOffset(b,f,e),b.dpDiv.css({position:$.datepicker._inDialog&&$.blockUI?"static":e?"fixed":"absolute",display:"none",left:f.left+"px",top:f.top+"px"});if(!b.inline){var g=$.datepicker._get(b,"showAnim"),h=$.datepicker._get(b,"duration"),i=function(){var a=b.dpDiv.find("iframe.ui-datepicker-cover");if(!!a.length){var c=$.datepicker._getBorders(b.dpDiv);a.css({left:-c[0],top:-c[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex($(a).zIndex()+1),$.datepicker._datepickerShowing=!0,$.effects&&$.effects[g]?b.dpDiv.show(g,$.datepicker._get(b,"showOptions"),h,i):b.dpDiv[g||"show"](g?h:null,i),(!g||!h)&&i(),b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus(),$.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this;b.maxRows=4;var c=$.datepicker._getBorders(a.dpDiv);instActive=a,a.dpDiv.empty().append(this._generateHTML(a));var d=a.dpDiv.find("iframe.ui-datepicker-cover");!d.length||d.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}),a.dpDiv.find("."+this._dayOverClass+" a").mouseover();var e=this._getNumberOfMonths(a),f=e[1],g=17;a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),f>1&&a.dpDiv.addClass("ui-datepicker-multi-"+f).css("width",g*f+"em"),a.dpDiv[(e[0]!=1||e[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi"),a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),a==$.datepicker._curInst&&$.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var h=a.yearshtml;setTimeout(function(){h===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml),h=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(a){return{thin:1,medium:2,thick:3}[a]||a};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var d=a.dpDiv.outerWidth(),e=a.dpDiv.outerHeight(),f=a.input?a.input.outerWidth():0,g=a.input?a.input.outerHeight():0,h=document.documentElement.clientWidth+$(document).scrollLeft(),i=document.documentElement.clientHeight+$(document).scrollTop();b.left-=this._get(a,"isRTL")?d-f:0,b.left-=c&&b.left==a.input.offset().left?$(document).scrollLeft():0,b.top-=c&&b.top==a.input.offset().top+g?$(document).scrollTop():0,b.left-=Math.min(b.left,b.left+d>h&&h>d?Math.abs(b.left+d-h):0),b.top-=Math.min(b.top,b.top+e>i&&i>e?Math.abs(e+g):0);return b},_findPos:function(a){var b=this._getInst(a),c=this._get(b,"isRTL");while(a&&(a.type=="hidden"||a.nodeType!=1||$.expr.filters.hidden(a)))a=a[c?"previousSibling":"nextSibling"];var d=$(a).offset();return[d.left,d.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=$.data(a,PROP_NAME))&&this._datepickerShowing){var c=this._get(b,"showAnim"),d=this._get(b,"duration"),e=this,f=function(){$.datepicker._tidyDialog(b),e._curInst=null};$.effects&&$.effects[c]?b.dpDiv.hide(c,$.datepicker._get(b,"showOptions"),d,f):b.dpDiv[c=="slideDown"?"slideUp":c=="fadeIn"?"fadeOut":"hide"](c?d:null,f),c||f(),this._datepickerShowing=!1;var g=this._get(b,"onClose");g&&g.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),$.blockUI&&($.unblockUI(),$("body").append(this.dpDiv))),this._inDialog=!1}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(a){if(!!$.datepicker._curInst){var b=$(a.target),c=$.datepicker._getInst(b[0]);(b[0].id!=$.datepicker._mainDivId&&b.parents("#"+$.datepicker._mainDivId).length==0&&!b.hasClass($.datepicker.markerClassName)&&!b.closest("."+$.datepicker._triggerClass).length&&$.datepicker._datepickerShowing&&(!$.datepicker._inDialog||!$.blockUI)||b.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!=c)&&$.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){var d=$(a),e=this._getInst(d[0]);this._isDisabledDatepicker(d[0])||(this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"):0),c),this._updateDatepicker(e))},_gotoToday:function(a){var b=$(a),c=this._getInst(b[0]);if(this._get(c,"gotoCurrent")&&c.currentDay)c.selectedDay=c.currentDay,c.drawMonth=c.selectedMonth=c.currentMonth,c.drawYear=c.selectedYear=c.currentYear;else{var d=new Date;c.selectedDay=d.getDate(),c.drawMonth=c.selectedMonth=d.getMonth(),c.drawYear=c.selectedYear=d.getFullYear()}this._notifyChange(c),this._adjustDate(b)},_selectMonthYear:function(a,b,c){var d=$(a),e=this._getInst(d[0]);e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(d)},_selectDay:function(a,b,c,d){var e=$(a);if(!$(d).hasClass(this._unselectableClass)&&!this._isDisabledDatepicker(e[0])){var f=this._getInst(e[0]);f.selectedDay=f.currentDay=$("a",d).html(),f.selectedMonth=f.currentMonth=b,f.selectedYear=f.currentYear=c,this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){var b=$(a),c=this._getInst(b[0]);this._selectDate(b,"")},_selectDate:function(a,b){var c=$(a),d=this._getInst(c[0]);b=b!=null?b:this._formatDate(d),d.input&&d.input.val(b),this._updateAlternate(d);var e=this._get(d,"onSelect");e?e.apply(d.input?d.input[0]:null,[b,d]):d.input&&d.input.trigger("change"),d.inline?this._updateDatepicker(d):(this._hideDatepicker(),this._lastInput=d.input[0],typeof d.input[0]!="object"&&d.input.focus(),this._lastInput=null)},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),d=this._getDate(a),e=this.formatDate(c,d,this._getFormatConfig(a));$(b).each(function(){$(this).val(e)})}},noWeekends:function(a){var b=a.getDay();return[b>0&&b<6,""]},iso8601Week:function(a){var b=new Date(a.getTime());b.setDate(b.getDate()+4-(b.getDay()||7));var c=b.getTime();b.setMonth(0),b.setDate(1);return Math.floor(Math.round((c-b)/864e5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var d=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;d=typeof d!="string"?d:(new Date).getFullYear()%100+parseInt(d,10);var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,g=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,h=(c?c.monthNames:null)||this._defaults.monthNames,i=-1,j=-1,k=-1,l=-1,m=!1,n=function(b){var c=s+1-1){j=1,k=l;for(;;){var u=this._getDaysInMonth(i,j-1);if(k<=u)break;j++,k-=u}}var t=this._daylightSavingAdjust(new Date(i,j-1,k));if(t.getFullYear()!=i||t.getMonth()+1!=j||t.getDate()!=k)throw"Invalid date";return t},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(a,b,c){if(!b)return"";var d=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,e=(c?c.dayNames:null)||this._defaults.dayNames,f=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,h=function(b){var c=m+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var d=!b,e=a.selectedMonth,f=a.selectedYear,g=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=g.getDate(),a.drawMonth=a.selectedMonth=a.currentMonth=g.getMonth(),a.drawYear=a.selectedYear=a.currentYear=g.getFullYear(),(e!=a.selectedMonth||f!=a.selectedYear)&&!c&&this._notifyChange(a),this._adjustInstDate(a),a.input&&a.input.val(d?"":this._formatDate(a))},_getDate:function(a){var b=!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return b},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),d=this._get(a,"showButtonPanel"),e=this._get(a,"hideIfNoPrevNext"),f=this._get(a,"navigationAsDateFormat"),g=this._getNumberOfMonths(a),h=this._get(a,"showCurrentAtPos"),i=this._get(a,"stepMonths"),j=g[0]!=1||g[1]!=1,k=this._daylightSavingAdjust(a.currentDay?new Date(a.currentYear,a.currentMonth,a.currentDay):new Date(9999,9,9)),l=this._getMinMaxDate(a,"min"),m=this._getMinMaxDate(a,"max"),n=a.drawMonth-h,o=a.drawYear;n<0&&(n+=12,o--);if(m){var p=this._daylightSavingAdjust(new Date(m.getFullYear(),m.getMonth()-g[0]*g[1]+1,m.getDate()));p=l&&pp)n--,n<0&&(n=11,o--)}a.drawMonth=n,a.drawYear=o;var q=this._get(a,"prevText");q=f?this.formatDate(q,this._daylightSavingAdjust(new Date(o,n-i,1)),this._getFormatConfig(a)):q;var r=this._canAdjustMonth(a,-1,o,n)?''+q+"":e?"":''+q+"",s=this._get(a,"nextText");s=f?this.formatDate(s,this._daylightSavingAdjust(new Date(o,n+i,1)),this._getFormatConfig(a)):s;var t=this._canAdjustMonth(a,1,o,n)?''+s+"":e?"":''+s+"",u=this._get(a,"currentText"),v=this._get(a,"gotoCurrent")&&a.currentDay?k:b;u=f?this.formatDate(u,v,this._getFormatConfig(a)):u;var w=a.inline?"":'",x=d?'
    '+(c?w:"")+(this._isInRange(a,v)?'":"")+(c?"":w)+"
    ":"",y=parseInt(this._get(a,"firstDay"),10);y=isNaN(y)?0:y;var z=this._get(a,"showWeek"),A=this._get(a,"dayNames"),B=this._get(a,"dayNamesShort"),C=this._get(a,"dayNamesMin"),D=this._get(a,"monthNames"),E=this._get(a,"monthNamesShort"),F=this._get(a,"beforeShowDay"),G=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths"),I=this._get(a,"calculateWeek")||this.iso8601Week,J=this._getDefaultDate(a),K="";for(var L=0;L1)switch(N){case 0:Q+=" ui-datepicker-group-first",P=" ui-corner-"+(c?"right":"left");break;case g[1]-1:Q+=" ui-datepicker-group-last",P=" ui-corner-"+(c?"left":"right");break;default:Q+=" ui-datepicker-group-middle",P=""}Q+='">'}Q+='
    '+(/all|left/.test(P)&&L==0?c?t:r:"")+(/all|right/.test(P)&&L==0?c?r:t:"")+this._generateMonthYearHeader(a,n,o,l,m,L>0||N>0,D,E)+'
    '+"";var R=z?'":"";for(var S=0;S<7;S++){var T=(S+y)%7;R+="=5?' class="ui-datepicker-week-end"':"")+">"+''+C[T]+""}Q+=R+"";var U=this._getDaysInMonth(o,n);o==a.selectedYear&&n==a.selectedMonth&&(a.selectedDay=Math.min(a.selectedDay,U));var V=(this._getFirstDayOfMonth(o,n)-y+7)%7,W=Math.ceil((V+U)/7),X=j?this.maxRows>W?this.maxRows:W:W;this.maxRows=X;var Y=this._daylightSavingAdjust(new Date(o,n,1-V));for(var Z=0;Z";var _=z?'":"";for(var S=0;S<7;S++){var ba=F?F.apply(a.input?a.input[0]:null,[Y]):[!0,""],bb=Y.getMonth()!=n,bc=bb&&!H||!ba[0]||l&&Ym;_+='",Y.setDate(Y.getDate()+1),Y=this._daylightSavingAdjust(Y)}Q+=_+""}n++,n>11&&(n=0,o++),Q+="
    '+this._get(a,"weekHeader")+"
    '+this._get(a,"calculateWeek")(Y)+""+(bb&&!G?" ":bc?''+Y.getDate()+"":''+Y.getDate()+"")+"
    "+(j?""+(g[0]>0&&N==g[1]-1?'
    ':""):""),M+=Q}K+=M}K+=x+($.browser.msie&&parseInt($.browser.version,10)<7&&!a.inline?'':""), -+a._keyEvent=!1;return K},_generateMonthYearHeader:function(a,b,c,d,e,f,g,h){var i=this._get(a,"changeMonth"),j=this._get(a,"changeYear"),k=this._get(a,"showMonthAfterYear"),l='
    ',m="";if(f||!i)m+=''+g[b]+"";else{var n=d&&d.getFullYear()==c,o=e&&e.getFullYear()==c;m+='"}k||(l+=m+(f||!i||!j?" ":""));if(!a.yearshtml){a.yearshtml="";if(f||!j)l+=''+c+"";else{var q=this._get(a,"yearRange").split(":"),r=(new Date).getFullYear(),s=function(a){var b=a.match(/c[+-].*/)?c+parseInt(a.substring(1),10):a.match(/[+-].*/)?r+parseInt(a,10):parseInt(a,10);return isNaN(b)?r:b},t=s(q[0]),u=Math.max(t,s(q[1]||""));t=d?Math.max(t,d.getFullYear()):t,u=e?Math.min(u,e.getFullYear()):u,a.yearshtml+='",l+=a.yearshtml,a.yearshtml=null}}l+=this._get(a,"yearSuffix"),k&&(l+=(f||!i||!j?" ":"")+m),l+="
    ";return l},_adjustInstDate:function(a,b,c){var d=a.drawYear+(c=="Y"?b:0),e=a.drawMonth+(c=="M"?b:0),f=Math.min(a.selectedDay,this._getDaysInMonth(d,e))+(c=="D"?b:0),g=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(d,e,f)));a.selectedDay=g.getDate(),a.drawMonth=a.selectedMonth=g.getMonth(),a.drawYear=a.selectedYear=g.getFullYear(),(c=="M"||c=="Y")&&this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max"),e=c&&bd?d:e;return e},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");b&&b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){var b=this._get(a,"numberOfMonths");return b==null?[1,1]:typeof b=="number"?[1,b]:b},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,d){var e=this._getNumberOfMonths(a),f=this._daylightSavingAdjust(new Date(c,d+(b<0?b:e[0]*e[1]),1));b<0&&f.setDate(this._getDaysInMonth(f.getFullYear(),f.getMonth()));return this._isInRange(a,f)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min"),d=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!d||b.getTime()<=d.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,d){b||(a.currentDay=a.selectedDay,a.currentMonth=a.selectedMonth,a.currentYear=a.selectedYear);var e=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(d,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),e,this._getFormatConfig(a))}}),$.fn.datepicker=function(a){if(!this.length)return this;$.datepicker.initialized||($(document).mousedown($.datepicker._checkExternalClick).find("body").append($.datepicker.dpDiv),$.datepicker.initialized=!0);var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return $.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this[0]].concat(b));return this.each(function(){typeof a=="string"?$.datepicker["_"+a+"Datepicker"].apply($.datepicker,[this].concat(b)):$.datepicker._attachDatepicker(this,a)})},$.datepicker=new Datepicker,$.datepicker.initialized=!1,$.datepicker.uuid=(new Date).getTime(),$.datepicker.version="1.8.18",window["DP_jQuery_"+dpuuid]=$})(jQuery);/* -+ * jQuery UI Progressbar 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/Progressbar -+ * -+ * Depends: -+ * jquery.ui.core.js -+ * jquery.ui.widget.js -+ */(function(a,b){a.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()}),this.valueDiv=a("
    ").appendTo(this.element),this.oldValue=this._value(),this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove(),a.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===b)return this._value();this._setOption("value",a);return this},_setOption:function(b,c){b==="value"&&(this.options.value=c,this._refreshValue(),this._value()===this.options.max&&this._trigger("complete")),a.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;typeof a!="number"&&(a=0);return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100*this._value()/this.options.max},_refreshValue:function(){var a=this.value(),b=this._percentage();this.oldValue!==a&&(this.oldValue=a,this._trigger("change")),this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(b.toFixed(0)+"%"),this.element.attr("aria-valuenow",a)}}),a.extend(a.ui.progressbar,{version:"1.8.18"})})(jQuery);/* -+ * jQuery UI Effects 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/Effects/ -+ */jQuery.effects||function(a,b){function l(b){if(!b||typeof b=="number"||a.fx.speeds[b])return!0;if(typeof b=="string"&&!a.effects[b])return!0;return!1}function k(b,c,d,e){typeof b=="object"&&(e=c,d=null,c=b,b=c.effect),a.isFunction(c)&&(e=c,d=null,c={});if(typeof c=="number"||a.fx.speeds[c])e=d,d=c,c={};a.isFunction(d)&&(e=d,d=null),c=c||{},d=d||c.duration,d=a.fx.off?0:typeof d=="number"?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,e=e||c.complete;return[b,c,d,e]}function j(a,b){var c={_:0},d;for(d in b)a[d]!=b[d]&&(c[d]=b[d]);return c}function i(b){var c,d;for(c in b)d=b[c],(d==null||a.isFunction(d)||c in g||/scrollbar/.test(c)||!/color/i.test(c)&&isNaN(parseFloat(d)))&&delete b[c];return b}function h(){var a=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,b={},c,d;if(a&&a.length&&a[0]&&a[a[0]]){var e=a.length;while(e--)c=a[e],typeof a[c]=="string"&&(d=c.replace(/\-(\w)/g,function(a,b){return b.toUpperCase()}),b[d]=a[c])}else for(c in a)typeof a[c]=="string"&&(b[c]=a[c]);return b}function d(b,d){var e;do{e=a.curCSS(b,d);if(e!=""&&e!="transparent"||a.nodeName(b,"body"))break;d="backgroundColor"}while(b=b.parentNode);return c(e)}function c(b){var c;if(b&&b.constructor==Array&&b.length==3)return b;if(c=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b))return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];if(c=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b))return[parseFloat(c[1])*2.55,parseFloat(c[2])*2.55,parseFloat(c[3])*2.55];if(c=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b))return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];if(c=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b))return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];if(c=/rgba\(0, 0, 0, 0\)/.exec(b))return e.transparent;return e[a.trim(b).toLowerCase()]}a.effects={},a.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,e){a.fx.step[e]=function(a){a.colorInit||(a.start=d(a.elem,e),a.end=c(a.end),a.colorInit=!0),a.elem.style[e]="rgb("+Math.max(Math.min(parseInt(a.pos*(a.end[0]-a.start[0])+a.start[0],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[1]-a.start[1])+a.start[1],10),255),0)+","+Math.max(Math.min(parseInt(a.pos*(a.end[2]-a.start[2])+a.start[2],10),255),0)+")"}});var e={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},f=["add","remove","toggle"],g={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.effects.animateClass=function(b,c,d,e){a.isFunction(d)&&(e=d,d=null);return this.queue(function(){var g=a(this),k=g.attr("style")||" ",l=i(h.call(this)),m,n=g.attr("class");a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),m=i(h.call(this)),g.attr("class",n),g.animate(j(l,m),{queue:!1,duration:c,easing:d,complete:function(){a.each(f,function(a,c){b[c]&&g[c+"Class"](b[c])}),typeof g.attr("style")=="object"?(g.attr("style").cssText="",g.attr("style").cssText=k):g.attr("style",k),e&&e.apply(this,arguments),a.dequeue(this)}})})},a.fn.extend({_addClass:a.fn.addClass,addClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{add:b},c,d,e]):this._addClass(b)},_removeClass:a.fn.removeClass,removeClass:function(b,c,d,e){return c?a.effects.animateClass.apply(this,[{remove:b},c,d,e]):this._removeClass(b)},_toggleClass:a.fn.toggleClass,toggleClass:function(c,d,e,f,g){return typeof d=="boolean"||d===b?e?a.effects.animateClass.apply(this,[d?{add:c}:{remove:c},e,f,g]):this._toggleClass(c,d):a.effects.animateClass.apply(this,[{toggle:c},d,e,f])},switchClass:function(b,c,d,e,f){return a.effects.animateClass.apply(this,[{add:c,remove:b},d,e,f])}}),a.extend(a.effects,{version:"1.8.18",save:function(a,b){for(var c=0;c").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e=document.activeElement;b.wrap(d),(b[0]===e||a.contains(b[0],e))&&a(e).focus(),d=b.parent(),b.css("position")=="static"?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"}));return d.css(c).show()},removeWrapper:function(b){var c,d=document.activeElement;if(b.parent().is(".ui-effects-wrapper")){c=b.parent().replaceWith(b),(b[0]===d||a.contains(b[0],d))&&a(d).focus();return c}return b},setTransition:function(b,c,d,e){e=e||{},a.each(c,function(a,c){unit=b.cssUnit(c),unit[0]>0&&(e[c]=unit[0]*d+unit[1])});return e}}),a.fn.extend({effect:function(b,c,d,e){var f=k.apply(this,arguments),g={options:f[1],duration:f[2],callback:f[3]},h=g.options.mode,i=a.effects[b];if(a.fx.off||!i)return h?this[h](g.duration,g.callback):this.each(function(){g.callback&&g.callback.call(this)});return i.call(this,g)},_show:a.fn.show,show:function(a){if(l(a))return this._show.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="show";return this.effect.apply(this,b)},_hide:a.fn.hide,hide:function(a){if(l(a))return this._hide.apply(this,arguments);var b=k.apply(this,arguments);b[1].mode="hide";return this.effect.apply(this,b)},__toggle:a.fn.toggle,toggle:function(b){if(l(b)||typeof b=="boolean"||a.isFunction(b))return this.__toggle.apply(this,arguments);var c=k.apply(this,arguments);c[1].mode="toggle";return this.effect.apply(this,c)},cssUnit:function(b){var c=this.css(b),d=[];a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])});return d}}),a.easing.jswing=a.easing.swing,a.extend(a.easing,{def:"easeOutQuad",swing:function(b,c,d,e,f){return a.easing[a.easing.def](b,c,d,e,f)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b+c;return-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b+c;return d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b+c;return-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){if((b/=e/2)<1)return d/2*b*b*b*b*b+c;return d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return b==0?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){if(b==0)return c;if(b==e)return c+d;if((b/=e/2)<1)return d/2*Math.pow(2,10*(b-1))+c;return d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){if((b/=e/2)<1)return-d/2*(Math.sqrt(1-b*b)-1)+c;return d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(b==0)return c;if((b/=e)==1)return c+d;g||(g=e*.3);if(h").css({position:"absolute",visibility:"visible",left:-j*(g/d),top:-i*(h/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:g/d,height:h/c,left:f.left+j*(g/d)+(b.options.mode=="show"?(j-Math.floor(d/2))*(g/d):0),top:f.top+i*(h/c)+(b.options.mode=="show"?(i-Math.floor(c/2))*(h/c):0),opacity:b.options.mode=="show"?0:1}).animate({left:f.left+j*(g/d)+(b.options.mode=="show"?0:(j-Math.floor(d/2))*(g/d)),top:f.top+i*(h/c)+(b.options.mode=="show"?0:(i-Math.floor(c/2))*(h/c)),opacity:b.options.mode=="show"?1:0},b.duration||500);setTimeout(function(){b.options.mode=="show"?e.css({visibility:"visible"}):e.css({visibility:"visible"}).hide(),b.callback&&b.callback.apply(e[0]),e.dequeue(),a("div.ui-effects-explode").remove()},b.duration||500)})}})(jQuery);/* -+ * jQuery UI Effects Fade 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/Effects/Fade -+ * -+ * Depends: -+ * jquery.effects.core.js -+ */(function(a,b){a.effects.fade=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"hide");c.animate({opacity:d},{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/* -+ * jQuery UI Effects Fold 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/Effects/Fold -+ * -+ * Depends: -+ * jquery.effects.core.js -+ */(function(a,b){a.effects.fold=function(b){return this.queue(function(){var c=a(this),d=["position","top","bottom","left","right"],e=a.effects.setMode(c,b.options.mode||"hide"),f=b.options.size||15,g=!!b.options.horizFirst,h=b.duration?b.duration/2:a.fx.speeds._default/2;a.effects.save(c,d),c.show();var i=a.effects.createWrapper(c).css({overflow:"hidden"}),j=e=="show"!=g,k=j?["width","height"]:["height","width"],l=j?[i.width(),i.height()]:[i.height(),i.width()],m=/([0-9]+)%/.exec(f);m&&(f=parseInt(m[1],10)/100*l[e=="hide"?0:1]),e=="show"&&i.css(g?{height:0,width:f}:{height:f,width:0});var n={},p={};n[k[0]]=e=="show"?l[0]:f,p[k[1]]=e=="show"?l[1]:0,i.animate(n,h,b.options.easing).animate(p,h,b.options.easing,function(){e=="hide"&&c.hide(),a.effects.restore(c,d),a.effects.removeWrapper(c),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery);/* -+ * jQuery UI Effects Highlight 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/Effects/Highlight -+ * -+ * Depends: -+ * jquery.effects.core.js -+ */(function(a,b){a.effects.highlight=function(b){return this.queue(function(){var c=a(this),d=["backgroundImage","backgroundColor","opacity"],e=a.effects.setMode(c,b.options.mode||"show"),f={backgroundColor:c.css("backgroundColor")};e=="hide"&&(f.opacity=0),a.effects.save(c,d),c.show().css({backgroundImage:"none",backgroundColor:b.options.color||"#ffff99"}).animate(f,{queue:!1,duration:b.duration,easing:b.options.easing,complete:function(){e=="hide"&&c.hide(),a.effects.restore(c,d),e=="show"&&!a.support.opacity&&this.style.removeAttribute("filter"),b.callback&&b.callback.apply(this,arguments),c.dequeue()}})})}})(jQuery);/* -+ * jQuery UI Effects Pulsate 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/Effects/Pulsate -+ * -+ * Depends: -+ * jquery.effects.core.js -+ */(function(a,b){a.effects.pulsate=function(b){return this.queue(function(){var c=a(this),d=a.effects.setMode(c,b.options.mode||"show");times=(b.options.times||5)*2-1,duration=b.duration?b.duration/2:a.fx.speeds._default/2,isVisible=c.is(":visible"),animateTo=0,isVisible||(c.css("opacity",0).show(),animateTo=1),(d=="hide"&&isVisible||d=="show"&&!isVisible)&×--;for(var e=0;e').appendTo(document.body).addClass(b.options.className).css({top:g.top,left:g.left,height:c.innerHeight(),width:c.innerWidth(),position:"absolute"}).animate(f,b.duration,b.options.easing,function(){h.remove(),b.callback&&b.callback.apply(c[0],arguments),c.dequeue()})})}})(jQuery); -\ No newline at end of file -diff -up cacti-0.8.8a/include/js/jquery/jquery.zoom.js.legal cacti-0.8.8a/include/js/jquery/jquery.zoom.js ---- cacti-0.8.8a/include/js/jquery/jquery.zoom.js.legal 2013-01-04 15:44:38.045416081 -0500 -+++ cacti-0.8.8a/include/js/jquery/jquery.zoom.js 2013-01-04 15:43:12.646377987 -0500 -@@ -0,0 +1,866 @@ -+/* -+ +-------------------------------------------------------------------------+ -+ | Copyright (C) 2004-2013 The Cacti Group | -+ | | -+ | This program is free software; you can redistribute it and/or | -+ | modify it under the terms of the GNU General Public License | -+ | as published by the Free Software Foundation; either version 2 | -+ | of the License, or (at your option) any later version. | -+ | | -+ | This program is distributed in the hope that it will be useful, | -+ | but WITHOUT ANY WARRANTY; without even the implied warranty of | -+ | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | -+ | GNU General Public License for more details. | -+ +-------------------------------------------------------------------------+ -+ | Cacti: The Complete RRDTool-based Graphing Solution | -+ +-------------------------------------------------------------------------+ -+ | This code is designed, written, and maintained by the Cacti Group. See | -+ | about.php and/or the AUTHORS file for specific developer information. | -+ +-------------------------------------------------------------------------+ -+ | http://www.cacti.net/ | -+ +-------------------------------------------------------------------------+ -+*/ -+ -+/* requirements: -+ jQuery 1.7.x or above -+ jQuery UI 1.8.x or above -+ jQuery cookie plugin -+*/ -+ -+(function($){ -+ $.fn.zoom = function(options) { -+ -+ /* +++++++++++++++++++++++ Global Variables +++++++++++++++++++++++++ */ -+ -+ // default values of the different options being offered -+ var defaults = { -+ inputfieldStartTime : '', // ID of the input field that contains the start date -+ inputfieldEndTime : '', // ID of the input field that contains the end date -+ submitButton : 'button_refresh_x', // ID of the submit button -+ cookieName : 'cacti_zoom' // default name required for session cookie -+ }; -+ -+ // define global variables / objects here -+ var zoom = { -+ // "initiator" is the element that initiates Zoom -+ initiator: $(this), -+ // "image" means the image tag and its properties -+ image: { top:0, left:0, width:0, height:0 }, -+ // "graph" stands for the rrdgraph itself excluding legend, graph title etc. -+ graph: { timespan:0, secondsPerPixel:0 }, -+ // "box" describes the area in front of the graph whithin jQueryZoom will allow interaction -+ box: { top:0, left:0, right:0, width:0, height:0 }, -+ // "markers" are selectors useable within the advanced mode -+ marker: { 1 : { placed:false }, 2 : { placed:false} }, -+ // "custom" holds the local configuration done by the user -+ custom: {}, -+ // "options" contains the start input parameters -+ options: $.extend(defaults, options), -+ // "attributes" holds all values that will describe the selected area -+ attr: { activeElement:'', start:'none', end:'none', action:'left2right', location: window.location.href.split("?") } -+ }; -+ -+ -+ /* ++++++++++++++++++++++++ Initialization ++++++++++++++++++++++++++ */ -+ -+ // use a cookie to support local settings -+ zoom.custom = $.cookie(zoom.options.cookieName) ? unserialize( $.cookie(zoom.options.cookieName) ) : {}; -+ if(zoom.custom.zoomMode == undefined) zoom.custom.zoomMode = 'quick'; -+ if(zoom.custom.zoomOutPositioning == undefined) zoom.custom.zoomOutPositioning = 'center'; -+ if(zoom.custom.zoomOutFactor == undefined) zoom.custom.zoomOutFactor = '2'; -+ if(zoom.custom.zoomMarkers == undefined) zoom.custom.zoomMarkers = true; -+ if(zoom.custom.zoomTimestamps == undefined) zoom.custom.zoomTimestamps = 'auto'; -+ if(zoom.custom.zoom3rdMouseButton == undefined) zoom.custom.zoom3rdMouseButton = false; -+ -+ // create or update a session cookie -+ $.cookie( zoom.options.cookieName, serialize(zoom.custom), {expires: null} ); -+ -+ // support jQuery's concatination -+ return this.each(function() { zoom_init( $(this) ); }); -+ -+ -+ /* ++++++++++++++++++++ Universal Functions +++++++++++++++++++++++++ */ -+ -+ /** -+ * checks if an image has been already loaded or if the link is broken -+ **/ -+ function isReady(image){ -+ if(typeof image[0].naturalWidth !== undefined && image[0].naturalWidth == 0) { -+ return false; -+ } -+ // support older versions of IE(6-8) -+ if(!image[0].complete) { -+ return false; -+ } -+ return true; -+ } -+ -+ /** -+ * splits off the parameters of a given url -+ **/ -+ function getUrlVars(url) { -+ var parameters = [], name, value; -+ -+ urlBaseAndParameters = url.split("?"); -+ urlBase = urlBaseAndParameters[0]; -+ urlParameters = urlBaseAndParameters[1].split("&"); -+ parameters["urlBase"] = urlBase; -+ -+ for(var i=0; i 9) ? date.getDate() : '0' + date.getDate(); -+ var hours = (date.getHours() > 9) ? date.getHours() : '0' + date.getHours(); -+ var minutes = (date.getMinutes() > 9) ? date.getMinutes() : '0' + date.getMinutes(); -+ var seconds = (date.getSeconds() > 9) ? date.getSeconds() : '0' + date.getSeconds(); -+ -+ var formattedTime = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds; -+ return formattedTime; -+ } -+ -+ -+ /* +++++++++++++++++++++++ Core Functions +++++++++++++++++++++++++++ */ -+ -+ /* init zoom */ -+ function zoom_init(image) { -+ var $this = image; -+ $this.mouseenter( -+ function(){ -+ if(zoom.attr.activeElement == '') { -+ zoom.attr.activeElement = $(this).attr('id'); -+ zoomFunction_init($this); -+ // focusing another image will trigger a reset of Zoom -+ }else if(zoom.attr.activeElement != $(this).attr('id')) { -+ zoom.attr.activeElement = $(this).attr('id'); -+ zoomFunction_init($this); -+ } -+ } -+ ); -+ } -+ -+ function zoomFunction_init(image) { -+ var $this = image; -+ // exit if image has not been already loaded or if image is not available -+ if(isReady($this)) { -+ // update zoom.image object with the attributes of this image -+ zoom.image.width = parseInt($this.width()); -+ zoom.image.height = parseInt($this.height()); -+ zoom.image.top = parseInt($this.offset().top); -+ zoom.image.left = parseInt($this.offset().left); -+ }else { -+ return; -+ } -+ -+ // get all graph parameters and merge results with zoom.graph object -+ $.extend(zoom.graph, getUrlVars( $this.attr("src") )); -+ zoom.graph.timespan = zoom.graph.end - zoom.graph.start; -+ zoom.graph.secondsPerPixel = zoom.graph.timespan/zoom.graph.width; -+ -+ if((zoom.graph.title_font_size <= 0) || (zoom.graph.title_font_size == "")) { -+ zoom.graph.title_font_size = 10; -+ } -+ -+ if(zoom.graph.nolegend != undefined) { -+ zoom.graph.title_font_size *= .70; -+ } -+ -+ // update all zoom box attributes. Unfortunately we have to use that best fit way -+ // to support RRDtool 1.2 and below. With RRDtool 1.3 or higher there would be a -+ // much more elegant solution available. (see RRDdtool graph option "graphv") -+ zoom.box.width = zoom.graph.width; -+ zoom.box.height = zoom.graph.height; -+ -+ if(zoom.graph.title_font_size == null) { -+ zoom.box.top = 32 - 1; -+ }else { -+ //default multiplier -+ var multiplier = 2.4; -+ // array of "best fit" multipliers -+ multipliers = new Array("-5", "-2", "0", "1.7", "1.6", "1.7", "1.8", "1.9", "2", "2", "2.1", "2.1", "2.2", "2.2", "2.3", "2.3", "2.3", "2.3", "2.3"); -+ if(multipliers[Math.round(zoom.graph.title_font_size)] != null) { -+ multiplier = multipliers[Math.round(zoom.graph.title_font_size)]; -+ } -+ zoom.box.top = zoom.image.top + parseInt(Math.abs(zoom.graph.title_font_size) * multiplier) + 15; -+ } -+ -+ zoom.box.bottom = zoom.box.top + zoom.box.height; -+ zoom.box.right = zoom.image.left + zoom.image.width - 30; -+ zoom.box.left = zoom.box.right - zoom.graph.width; -+ -+ // add all additional HTML elements to the DOM if necessary and register -+ // the individual events needed. Once added we will only reset -+ // and reposition these elements. -+ -+ // add the "zoomBox" -+ if($("#zoom-box").length == 0) { -+ // Please note: IE does not fire hover or click behaviors on completely transparent elements. -+ // Use a background color and set opacity to 1% as a workaround.(see CSS file) -+ $("
    ").appendTo("body"); -+ } -+ -+ // add the "zoomSelectedArea" -+ if($("#zoom-area").length == 0) { -+ $("
    ").appendTo("body"); -+ } -+ -+ // add two markers for the advanced mode -+ if($("#zoom-marker-1").length == 0) { -+ $('
    ').appendTo("body"); -+ $('
    ').appendTo("body"); -+ $('
    -
    ').appendTo('body'); -+ } -+ if($("#zoom-marker-2").length == 0) { -+ $('
    ').appendTo("body"); -+ $('
    ').appendTo("body"); -+ $('
    -
    ').appendTo('body'); -+ } -+ zoom.marker[1].placed = false; -+ zoom.marker[2].placed = false; -+ -+ // add the context (right click) menu -+ if($("#zoom-menu").length == 0) { -+ $('
    ' -+ + '
    ' -+ + '
    ' -+ + 'Zoom In' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + 'Zoom Out (2x)' -+ + '
    ' -+ + '2x' -+ + '4x' -+ + '8x' -+ + '16x' -+ + '32x' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + '
    Zoom Mode' -+ + '
    ' -+ + 'Quick' -+ + 'Advanced' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + '
    Settings' -+ + '
    ' -+ + '
    Markers' -+ + '
    ' -+ + 'Enabled' -+ + 'Disabled' -+ + '
    ' -+ + '
    ' -+ + '
    Timestamps' -+ + '
    ' -+ + 'Always On' -+ + 'Auto' -+ + 'Always Off' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + '
    Zoom Out Factor' -+ + '
    ' -+ + '2x' -+ + '4x' -+ + '8x' -+ + '16x' -+ + '32x' -+ + '
    ' -+ + '
    ' -+ + '
    Zoom Out Positioning' -+ + '
    ' -+ + 'Begin with' -+ + 'Center' -+ + 'End with' -+ + '
    ' -+ + '
    ' -+ + '
    3rd Mouse Button' -+ + '
    ' -+ + 'Zoom in' -+ + 'Zoom out' -+ + 'Disabled' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + '
    ' -+ + '
    Close' -+ + '
    ').appendTo('body'); -+ } -+ zoomElemtents_reset() -+ zoomContextMenu_init(); -+ zoomAction_init(image); -+ } -+ -+ /** -+ * resets all elements of Zoom -+ **/ -+ function zoomElemtents_reset() { -+ zoom.marker = { 1 : { placed:false }, 2 : { placed:false} }; -+ $('div[id^="zoom-"]').not('#zoom-menu').each( function () { -+ $(this).removeAttr('style'); -+ }); -+ $("#zoom-box").off(); -+ $("#zoom-box").css({ cursor:'crosshair', width:zoom.box.width + 'px', height:zoom.box.height + 'px', top:zoom.box.top+'px', left:zoom.box.left+'px' }); -+ $("#zoom-box").bind('contextmenu', function(e) { zoomContextMenu_show(e); return false;} ); -+ $("#zoom-area").off().css({ top:zoom.box.top+'px', height:zoom.box.height+'px' }); -+ $(".zoom-area-excluded").off(); -+ $(".zoom-area-excluded").bind('contextmenu', function(e) { zoomContextMenu_show(e); return false;} ); -+ $(".zoom-area-excluded").bind('click', function(e) { zoomContextMenu_hide(); return false;} ); -+ $(".zoom-marker-arrow-up").css({ top:(zoom.box.height-6) + 'px' }); -+ $(".zoom-marker-tooltip-value").disableSelection(); -+ } -+ -+ /* -+ * registers all the different mouse click event handler -+ */ -+ function zoomAction_init(image) { -+ -+ if(zoom.custom.zoomMode == 'quick') { -+ $("#zoom-box").off("mousedown").on("mousedown", function(e) { -+ switch(e.which) { -+ /* clicking the left mouse button will initiates a zoom-in */ -+ case 1: -+ zoomContextMenu_hide(); -+ // reset the zoom area -+ zoom.attr.start = e.pageX; -+ if(zoom.custom.zoomMode != 'quick') { -+ $("#zoom-marker-1").css({ height:zoom.box.height+'px', top:zoom.box.top+'px', left:zoom.attr.start+'px', display:'block' }); -+ $("#zoom-marker-tooltip-1").css({ top:zoom.box.top+'px', left:zoom.attr.start+'px'}); -+ } -+ $("#zoom-box").css({ cursor:'e-resize' }); -+ $("#zoom-area").css({ width:'0px', left:zoom.attr.start+'px' }); -+ break; -+ } -+ }); -+ -+ /* register the mouse up event */ -+ $("#zoom-area").off("mouseup").on("mouseup", function(e) { -+ switch(e.which) { -+ /* leaving the left mouse button will execute a zoom in */ -+ case 1: -+ if(zoom.custom.zoomMode == 'quick' && zoom.attr.start != 'none') { -+ zoomAction_zoom_in(); -+ } -+ break; -+ } -+ }); -+ -+ /* stretch the zoom area in that direction the user moved the mouse pointer */ -+ $("#zoom-box").mousemove( function(e) { zoomAction_draw(e) } ); -+ -+ /* stretch the zoom area in that direction the user moved the mouse pointer. -+ That is required to get it working faultlessly with Opera, IE and Chrome */ -+ $("#zoom-area").mousemove( function(e) { zoomAction_draw(e); } ); -+ -+ /* moving the mouse pointer quickly will avoid that the mousemove event has enough time to actualize the zoom area */ -+ $("#zoom-box").mouseout( function(e) { zoomAction_draw(e) } ); -+ -+ }else{ -+ /* welcome to the advanced mode ;) */ -+ $("#zoom-box").off("mousedown").on("mousedown", function(e) { -+ switch(e.which) { -+ case 1: -+ /* hide context menu if open */ -+ zoomContextMenu_hide(); -+ -+ /* find out which marker has to be added */ -+ if(zoom.marker[1].placed && zoom.marker[2].placed) { -+ zoomAction_zoom_in(); -+ return; -+ }else { -+ var marker = zoom.marker[1].placed ? 2 : 1; -+ var secondmarker = (marker == 1) ? 2 : 1; -+ } -+ -+ /* select marker */ -+ var $this = $("#zoom-marker-" + marker); -+ -+ /* place the marker and make it visible */ -+ $this.css({ height:zoom.box.height+'px', top:zoom.box.top+'px', left:e.pageX+'px', display:'block' }); -+ zoom.marker[marker].placed = true; -+ zoom.marker[marker].left = e.pageX; -+ -+ /* place the marker's tooltip, update its value and make it visible if necessary (Setting: "Always On") */ -+ zoom.marker[marker].unixtime = parseInt(parseInt(zoom.graph.start) + (e.pageX + 1 - zoom.box.left)*zoom.graph.secondsPerPixel); -+ $("#zoom-marker-tooltip-value-" + marker).html( -+ unixTime2Date(zoom.marker[marker].unixtime).replace(" ", "
    ") -+ ); -+ zoom.marker[marker].width = $("#zoom-marker-tooltip-" + marker).width(); -+ -+ $("#zoom-marker-tooltip-" + marker).css({ -+ top: ( (marker == 1) ? zoom.box.top+3 : zoom.box.bottom-30 )+'px', -+ left:( (marker == 1) ? e.pageX - zoom.marker[marker].width : e.pageX )+'px'} -+ ); -+ -+ if(zoom.custom.zoomTimestamps === true) { -+ $("#zoom-marker-tooltip-" + marker).fadeIn(500); -+ } -+ -+ if(e.pageX == $("#zoom-marker-tooltip-" + marker).position().left) { -+ $("#zoom-marker-tooltip-" + marker + "-arrow-right").css({ visibility:'hidden'}); -+ }else { -+ $("#zoom-marker-tooltip-" + marker + "-arrow-left").css({ visibility:'hidden'}); -+ } -+ -+ /* make the excluded areas visible directly in that moment both markers are set */ -+ if(zoom.marker[1].placed && zoom.marker[2].placed) { -+ zoom.marker.distance = zoom.marker[1].left - zoom.marker[2].left; -+ -+ $("#zoom-excluded-area-1").css({ -+ height:zoom.box.height+'px', -+ top:zoom.box.top+'px', -+ left: (zoom.marker.distance > 0) ? zoom.marker[1].left : zoom.box.left, -+ width: (zoom.marker.distance > 0) ? zoom.box.right - zoom.marker[1].left : zoom.marker[1].left - zoom.box.left, -+ display:'block' -+ }); -+ -+ $("#zoom-excluded-area-2").css({ -+ height:zoom.box.height+'px', -+ top:zoom.box.top+'px', -+ left: (zoom.marker.distance < 0) ? zoom.marker[2].left : zoom.box.left, -+ width: (zoom.marker.distance < 0) ? zoom.box.right - zoom.marker[2].left : zoom.marker[2].left - zoom.box.left, -+ display:'block' -+ }); -+ -+ /* reposition both tooltips */ -+ $("#zoom-marker-tooltip-1").css({ left: $("#zoom-marker-1").position().left - ( (zoom.marker.distance > 0) ? 0 : $("#zoom-marker-tooltip-1").width() ) + 'px' }); -+ $("#zoom-marker-tooltip-1-arrow-left").css({ visibility: (($("#zoom-marker-tooltip-1").position().left < $("#zoom-marker-1").position().left ) ? 'hidden' : 'visible') }); -+ $("#zoom-marker-tooltip-1-arrow-right").css({ visibility: (($("#zoom-marker-tooltip-1").position().left < $("#zoom-marker-1").position().left ) ? 'visible' : 'hidden') }); -+ -+ $("#zoom-marker-tooltip-2").css({ left: $("#zoom-marker-2").position().left - ( (zoom.marker.distance < 0) ? 0 : $("#zoom-marker-tooltip-2").width() ) + 'px' }); -+ $("#zoom-marker-tooltip-2-arrow-left").css({ visibility: (($("#zoom-marker-tooltip-2").position().left < $("#zoom-marker-2").position().left ) ? 'hidden' : 'visible') }); -+ $("#zoom-marker-tooltip-2-arrow-right").css({ visibility: (($("#zoom-marker-tooltip-2").position().left < $("#zoom-marker-2").position().left ) ? 'visible' : 'hidden') }); -+ } -+ -+ /* make the marker draggable */ -+ $this.draggable({ -+ containment:[ zoom.box.left-1, 0 , zoom.box.left+parseInt(zoom.box.width), 0 ], -+ axis: "x", -+ start: -+ function(event, ui) { -+ if(zoom.custom.zoomTimestamps == "auto") { -+ $(".zoom-marker-tooltip").fadeIn(500); -+ } -+ }, -+ drag: -+ function(event, ui) { -+ -+ zoom.marker[marker].left = ui.position["left"]; -+ -+ /* update the timestamp shown in tooltip */ -+ zoom.marker[marker].unixtime = parseInt(parseInt(zoom.graph.start) + (zoom.marker[marker].left + 1 - zoom.box.left)*zoom.graph.secondsPerPixel); -+ $("#zoom-marker-tooltip-value-" + marker).html( -+ unixTime2Date(zoom.marker[marker].unixtime).replace(" ", "
    ") -+ ); -+ -+ zoom.marker[marker].width = $("#zoom-marker-tooltip-" + marker).width(); -+ -+ /* update the execludedArea if both markers have been placed */ -+ if(zoom.marker[1].placed && zoom.marker[2].placed) { -+ zoom.marker.distance = zoom.marker[marker].left - zoom.marker[secondmarker].left; -+ -+ if( zoom.marker.distance > 0 ) { -+ zoom.marker[marker].excludeArea = 'right'; -+ zoom.marker[secondmarker].excludeArea = 'left'; -+ }else { -+ zoom.marker[marker].excludeArea = 'left'; -+ zoom.marker[secondmarker].excludeArea = 'right'; -+ } -+ -+ /* in that case we have to update the tooltip of both marker */ -+ $("#zoom-excluded-area-" + marker).css({ left: (zoom.marker.distance > 0) ? zoom.marker[marker].left : zoom.box.left, width: (zoom.marker.distance > 0) ? zoom.box.right - zoom.marker[marker].left : zoom.marker[marker].left - zoom.box.left}); -+ $("#zoom-marker-tooltip-" + marker).css({ left: zoom.marker[marker].left + ( (zoom.marker[marker].excludeArea == 'right') ? (0) : (-zoom.marker[marker].width) ) }); -+ $("#zoom-marker-tooltip-" + marker + "-arrow-left").css({ visibility: ( zoom.marker[marker].excludeArea == 'left' ? 'hidden' : 'visible') }); -+ $("#zoom-marker-tooltip-" + marker + "-arrow-right").css({ visibility: ( zoom.marker[marker].excludeArea == 'left' ? 'visible' : 'hidden') }); -+ -+ $("#zoom-excluded-area-" + secondmarker).css({ left: (zoom.marker.distance > 0) ? zoom.box.left : zoom.marker[secondmarker].left, width: (zoom.marker.distance > 0) ? zoom.marker[secondmarker].left - zoom.box.left : zoom.box.right - zoom.marker[secondmarker].left}); -+ $("#zoom-marker-tooltip-" + secondmarker ).css({ left: zoom.marker[secondmarker].left + ( (zoom.marker[secondmarker].excludeArea == 'right') ? (0) : (-zoom.marker[secondmarker].width) ) }); -+ $("#zoom-marker-tooltip-" + secondmarker + "-arrow-left").css({ visibility: ( zoom.marker[secondmarker].excludeArea == 'left' ? 'hidden' : 'visible') }); -+ $("#zoom-marker-tooltip-" + secondmarker + "-arrow-right").css({ visibility: ( zoom.marker[secondmarker].excludeArea == 'left' ? 'visible' : 'hidden') }); -+ -+ }else { -+ /* let the tooltip follow its marker */ -+ $("#zoom-marker-tooltip-" + marker).css({ left: zoom.marker[marker].left -zoom.marker[marker].width }); -+ } -+ -+ }, -+ stop: -+ function(event,ui) { -+ /* hide all tooltip if we are in auto mode */ -+ if(zoom.custom.zoomTimestamps == "auto") { -+ $(".zoom-marker-tooltip").fadeOut(1000); -+ } -+ } -+ -+ }); -+ -+ break; -+ case 2: -+ if(zoom.custom.zoom3rdMouseButton != false) { -+ /* hide context menu if open */ -+ zoomContextMenu_hide(); -+ if(zoom.custom.zoom3rdMouseButton == "zoom_in") { -+ zoomAction_zoom_in(); -+ }else { -+ zoomAction_zoom_out( zoom.custom.zoomOutFactor ); -+ } -+ } -+ break; -+ } -+ return false; -+ -+ }); -+ -+ } -+ } -+ -+ -+ /* -+ * executes a dynamic zoom in -+ */ -+ function zoomAction_zoom_in(){ -+ -+ /* hide context menu if open */ -+ zoomContextMenu_hide(); -+ -+ if(zoom.custom.zoomMode == 'quick') { -+ -+ var newGraphStartTime = (zoom.attr.action == 'left2right') ? parseInt(parseInt(zoom.graph.start) + (zoom.attr.start - zoom.box.left)*zoom.graph.secondsPerPixel) -+ : parseInt(parseInt(zoom.graph.start) + (zoom.attr.end - zoom.box.left)*zoom.graph.secondsPerPixel); -+ var newGraphEndTime = (zoom.attr.action == 'left2right') ? parseInt(newGraphStartTime + (zoom.attr.end-zoom.attr.start)*zoom.graph.secondsPerPixel) -+ : parseInt(newGraphStartTime + (zoom.attr.start-zoom.attr.end)*zoom.graph.secondsPerPixel); -+ -+ /* If the user only clicked on a graph then equal end and start date to ensure that we do not propergate NaNs */ -+ if(isNaN(newGraphStartTime) & isNaN(newGraphEndTime)) { -+ return; -+ }else if(isNaN(newGraphStartTime) & !isNaN(newGraphEndTime)) { -+ newGraphStartTime = newGraphEndTime; -+ }else if(!isNaN(newGraphStartTime) & isNaN(newGraphEndTime)){ -+ newGraphEndTime = newGraphStartTime; -+ } -+ }else { -+ /* advanced mode has other requirements */ -+ /* first of, do nothing if not both marker have been positioned */ -+ if(!zoom.marker[1].placed | !zoom.marker[2].placed) { -+ alert("NOTE: In advanced mode both markers have to be positioned first to define the period of time you want to zoom in."); -+ return; -+ }else { -+ var newGraphStartTime = zoom.marker[((zoom.marker[1].unixtime > zoom.marker[2].unixtime)? 2 : 1 )].unixtime; -+ var newGraphEndTime = zoom.marker[((zoom.marker[1].unixtime > zoom.marker[2].unixtime)? 1 : 2 )].unixtime; -+ } -+ } -+ -+ if(zoom.options.inputfieldStartTime != '' & zoom.options.inputfieldEndTime != ''){ -+ /* execute zoom within "tree view" or the "preview view" */ -+ $('#' + zoom.options.inputfieldStartTime).val(unixTime2Date(newGraphStartTime)); -+ $('#' + zoom.options.inputfieldEndTime).val(unixTime2Date(newGraphEndTime)); -+ -+ $("input[name='" + zoom.options.submitButton + "']").trigger('click'); -+ return false; -+ }else { -+ /* graph view is alread in zoom status */ -+ open(zoom.attr.location[0] + "?action=" + zoom.graph.action + "&local_graph_id=" + zoom.graph.local_graph_id + "&rra_id=" + zoom.graph.rra_id + "&view_type=" + zoom.graph.view_type + "&graph_start=" + newGraphStartTime + "&graph_end=" + newGraphEndTime + "&graph_height=" + zoom.graph.height + "&graph_width=" + zoom.graph.width + "&title_font_size=" + zoom.graph.title_font_size, "_self"); -+ } -+ -+ } -+ -+ -+ -+ -+ /* -+ * executes a static zoom out (as right click event) -+ */ -+ function zoomAction_zoom_out(multiplier){ -+ -+ multiplier--; -+ /* avoid that we can not zoom out anymore if start and end date will be equal */ -+ if(zoom.graph.timespan == 0) { -+ zoom.graph.timespan = 1; -+ } -+ -+ if(zoom.custom.zoomMode == 'quick' || !zoom.marker[1].placed || !zoom.marker[2].placed ) { -+ if(zoom.custom.zoomOutPositioning == 'begin') { -+ var newGraphStartTime = parseInt(zoom.graph.start); -+ var newGraphEndTime = parseInt(parseInt(zoom.graph.end) + (multiplier * zoom.graph.timespan)); -+ }else if(zoom.custom.zoomOutPositioning == 'end') { -+ var newGraphStartTime = parseInt(parseInt(zoom.graph.start) - (multiplier * zoom.graph.timespan)); -+ var newGraphEndTime = parseInt(zoom.graph.end); -+ }else { -+ // define the new start and end time, so that the selected area will be centered per default -+ var newGraphStartTime = parseInt(parseInt(zoom.graph.start) - (0.5 * multiplier * zoom.graph.timespan)); -+ var newGraphEndTime = parseInt(parseInt(zoom.graph.end) + (0.5 * multiplier * zoom.graph.timespan)); -+ } -+ }else { -+ var newGraphStartTime = zoom.marker[((zoom.marker[1].unixtime > zoom.marker[2].unixtime)? 2 : 1 )].unixtime; -+ var newGraphEndTime = zoom.marker[((zoom.marker[1].unixtime > zoom.marker[2].unixtime)? 1 : 2 )].unixtime; -+ var selectedTimeSpan = newGraphEndTime - newGraphStartTime; -+ -+ if(zoom.custom.zoomOutPositioning == 'begin') { -+ newGraphEndTime = newGraphEndTime + multiplier * selectedTimeSpan; -+ }else if(zoom.custom.zoomOutPositioning == 'end') { -+ newGraphStartTime = newGraphStartTime - multiplier * selectedTimeSpan; -+ }else { -+ newGraphStartTime = newGraphStartTime - 0.5 * multiplier * selectedTimeSpan; -+ newGraphEndTime = newGraphEndTime + 0.5 * multiplier * selectedTimeSpan; -+ } -+ } -+ -+ if(zoom.options.inputfieldStartTime != '' & zoom.options.inputfieldEndTime != ''){ -+ $('#' + zoom.options.inputfieldStartTime).val(unixTime2Date(newGraphStartTime)); -+ $('#' + zoom.options.inputfieldEndTime).val(unixTime2Date(newGraphEndTime)); -+ $('#' + zoom.options.inputfieldStartTime).closest("form").submit(); -+ }else { -+ open(zoom.attr.location[0] + "?action=" + zoom.graph.action + "&local_graph_id=" + zoom.graph.local_graph_id + "&rra_id=" + zoom.graph.rra_id + "&view_type=" + zoom.graph.view_type + "&graph_start=" + newGraphStartTime + "&graph_end=" + newGraphEndTime + "&graph_height=" + zoom.graph.height + "&graph_width=" + zoom.graph.width + "&title_font_size=" + zoom.graph.title_font_size, "_self"); -+ } -+ } -+ -+ -+ /* -+ * updates the css parameters of the zoom area to reflect user's interaction -+ */ -+ function zoomAction_draw(event) { -+ -+ if(zoom.attr.start == 'none') { return; } -+ -+ /* mouse has been moved from right to left */ -+ if((event.pageX-zoom.attr.start)<0) { -+ zoom.attr.action = 'right2left'; -+ zoom.attr.end = (event.pageX < zoom.box.left) ? zoom.box.left : event.pageX; -+ $("#zoom-area").css({ background:'red', left:(zoom.attr.end+1)+'px', width:Math.abs(zoom.attr.start-zoom.attr.end-1)+'px' }); -+ /* mouse has been moved from left to right*/ -+ }else { -+ zoom.attr.action = 'left2right'; -+ zoom.attr.end = (event.pageX > zoom.box.right) ? zoom.box.right : event.pageX; -+ $("#zoom-area").css({ background:'red', left:zoom.attr.start+'px', width:Math.abs(zoom.attr.end-zoom.attr.start-1)+'px' }); -+ } -+ /* move second marker if necessary */ -+ if(zoom.custom.zoomMode != 'quick') { -+ $("#zoom-marker-2").css({ left:(zoom.attr.end+1)+'px' }); -+ $("#zoom-marker-tooltip-2").css({ top:zoom.box.top+'px', left:(zoom.attr.end-5)+'px' }); -+ } -+ } -+ -+ /** -+ * -+ * @access public -+ * @return void -+ **/ -+ function zoomContextMenu_init(){ -+ -+ /* sync menu with cookie parameters */ -+ $(".zoomContextMenuAction__set_zoomMode__" + zoom.custom.zoomMode).addClass("ui-state-highlight"); -+ $(".zoomContextMenuAction__set_zoomMarkers__" + ((zoom.custom.zoomMarkers === true) ? "on" : "off") ).addClass("ui-state-highlight"); -+ $(".zoomContextMenuAction__set_zoomTimestamps__" + ((zoom.custom.zoomTimestamps == 'auto') ? "auto" : ((zoom.custom.zoomTimestamps) ? "on" : "off" ))).addClass("ui-state-highlight"); -+ $(".zoomContextMenuAction__set_zoomOutFactor__" + zoom.custom.zoomOutFactor).addClass("ui-state-highlight"); -+ $(".zoomContextMenuAction__set_zoomOutPositioning__" + zoom.custom.zoomOutPositioning).addClass("ui-state-highlight"); -+ $(".zoomContextMenuAction__set_zoom3rdMouseButton__" + ((zoom.custom.zoom3rdMouseButton === false) ? "off" : zoom.custom.zoom3rdMouseButton) ).addClass("ui-state-highlight"); -+ -+ if(zoom.custom.zoomMode == "quick") { -+ $("#zoom-menu > .advanced_mode").hide(); -+ }else { -+ $(".zoomContextMenuAction__zoom_out").text("Zoom Out (" + zoom.custom.zoomOutFactor + "x)"); -+ } -+ -+ /* init click on events */ -+ $('[class*=zoomContextMenuAction__]').off().on('click', function() { -+ var zoomContextMenuAction = false; -+ var zoomContextMenuActionValue = false; -+ var classList = $(this).attr('class').trim().split(/\s+/); -+ -+ $.each( classList, function(index, item){ -+ if( item.search("zoomContextMenuAction__") != -1) { -+ zoomContextMenuActionList = item.replace("zoomContextMenuAction__", "").split("__"); -+ zoomContextMenuAction = zoomContextMenuActionList[0]; -+ if(zoomContextMenuActionList[1] == 'undefined' || zoomContextMenuActionList[1] == 'off') { -+ zoomContextMenuActionValue = false; -+ }else if(zoomContextMenuActionList[1] == 'on') { -+ zoomContextMenuActionValue = true; -+ }else { -+ zoomContextMenuActionValue = zoomContextMenuActionList[1]; -+ } -+ return( false ); -+ } -+ }); -+ -+ if( zoomContextMenuAction ) { -+ if( zoomContextMenuAction.substring(0,8) == "set_zoom") { -+ zoomContextMenuAction_set( zoomContextMenuAction.replace("set_zoom", "").toLowerCase(), zoomContextMenuActionValue); -+ }else { -+ zoomContextMenuAction_do( zoomContextMenuAction, zoomContextMenuActionValue); -+ } -+ } -+ }); -+ -+ /* init hover events */ -+ $(".first_li , .sec_li, .inner_li span").hover( -+ function () { -+ $(this).css({backgroundColor : '#E0EDFE' , cursor : 'pointer'}); -+ if ( $(this).children().size() >0 ) -+ if(zoom.custom.zoomMode == "quick") { -+ $(this).children('.inner_li:not(.advanced_mode)').show(); -+ }else { -+ $(this).children('.inner_li').show(); -+ } -+ }, -+ function () { -+ $(this).css('background-color' , '#fff' ); -+ $(this).children('.inner_li').hide(); -+ } -+ ); -+ }; -+ -+ /** -+ * -+ * @access public -+ * @return void -+ **/ -+ function zoomContextMenuAction_set(object, value){ -+ switch(object) { -+ case "mode": -+ if( zoom.custom.zoomMode != value) { -+ zoom.custom.zoomMode = value; -+ $('[class*=zoomContextMenuAction__set_zoomMode__]').toggleClass("ui-state-highlight"); -+ -+ if(value == "quick") { -+ // reset menu -+ $("#zoom-menu > .advanced_mode").hide(); -+ $(".zoomContextMenuAction__zoom_out").text("Zoom Out (2x)"); -+ -+ zoom.custom.zoomMode = 'quick'; -+ $.cookie( zoom.options.cookieName, serialize(zoom.custom)); -+ }else { -+ // switch to advanced mode -+ $("#zoom-menu > .advanced_mode").show(); -+ $(".zoomContextMenuAction__zoom_out").text("Zoom Out (" + + zoom.custom.zoomOutFactor + "x)"); -+ -+ zoom.custom.zoomMode = 'advanced'; -+ $.cookie( zoom.options.cookieName, serialize(zoom.custom)); -+ } -+ zoomElemtents_reset(); -+ zoomAction_init(zoom.initiator); -+ -+ } -+ break; -+ case "markers": -+ if( zoom.custom.zoomMarkers != value) { -+ zoom.custom.zoomMarkers = value; -+ $.cookie( zoom.options.cookieName, serialize(zoom.custom)); -+ $('[class*=zoomContextMenuAction__set_zoomMarkers__]').toggleClass('ui-state-highlight'); -+ } -+ break; -+ case "timestamps": -+ if( zoom.custom.zoomTimestamps != value) { -+ zoom.custom.zoomTimestamps = value; -+ $.cookie( zoom.options.cookieName, serialize(zoom.custom)); -+ $('[class*=zoomContextMenuAction__set_zoomTimestamps__]').removeClass('ui-state-highlight'); -+ $('.zoomContextMenuAction__set_zoomTimestamps__' + ((zoom.custom.zoomTimestamps == 'auto') ? "auto" : ((zoom.custom.zoomTimestamps) ? "on" : "off" ))).addClass('ui-state-highlight'); -+ -+ /* make them visible only for mode "Always On" */ -+ if(zoom.custom.zoomTimestamps === true) { -+ $('.zoom-marker-tooltip').fadeIn(500); -+ }else { -+ $('.zoom-marker-tooltip').fadeOut(500); -+ } -+ } -+ break; -+ case "outfactor": -+ if( zoom.custom.zoomOutFactor != value) { -+ zoom.custom.zoomOutFactor = value; -+ $.cookie( zoom.options.cookieName, serialize(zoom.custom)); -+ $('[class*=zoomContextMenuAction__set_zoomOutFactor__]').removeClass('ui-state-highlight'); -+ $('.zoomContextMenuAction__set_zoomOutFactor__' + value).addClass('ui-state-highlight'); -+ $('.zoomContextMenuAction__zoom_out').text('Zoom Out (' + value + 'x)'); -+ } -+ break; -+ case "outpositioning": -+ if( zoom.custom.zoomOutPositioning != value) { -+ zoom.custom.zoomOutPositioning = value; -+ $.cookie( zoom.options.cookieName, serialize(zoom.custom)); -+ $('[class*=zoomContextMenuAction__set_zoomOutPositioning__]').removeClass('ui-state-highlight'); -+ $('.zoomContextMenuAction__set_zoomOutPositioning__' + value).addClass('ui-state-highlight'); -+ } -+ break; -+ case "3rdmousebutton": -+ if( zoom.custom.zoom3rdMouseButton != value) { -+ zoom.custom.zoom3rdMouseButton = value; -+ $.cookie( zoom.options.cookieName, serialize(zoom.custom)); -+ $('[class*=zoomContextMenuAction__set_zoom3rdMouseButton__]').removeClass('ui-state-highlight'); -+ $('.zoomContextMenuAction__set_zoom3rdMouseButton__' + ((value === false) ? "off" : value)).addClass('ui-state-highlight'); -+ } -+ break; -+ } -+ } -+ -+ function zoomContextMenuAction_do(action, value){ -+ switch(action) { -+ case "close": -+ zoomContextMenu_hide(); -+ break; -+ case "zoom_out": -+ if(value == undefined) { -+ value = (zoom.custom.zoomMode != "quick") ? zoom.custom.zoomOutFactor : 2; -+ } -+ zoomAction_zoom_out(value); -+ break; -+ case "zoom_in": -+ zoomAction_zoom_in(); -+ break; -+ } -+ } -+ -+ function zoomContextMenu_show(e){ -+ $("#zoom-menu").css({ left: e.pageX, top: e.pageY, zIndex: '101' }).show(); -+ }; -+ -+ function zoomContextMenu_hide(){ -+ $('#zoom-menu').hide(); -+ } -+ -+ }; -+ -+})(jQuery); -\ No newline at end of file -diff -up cacti-0.8.8a/include/js/jquery/themes/default/d.gif.legal cacti-0.8.8a/include/js/jquery/themes/default/d.gif -Binary files cacti-0.8.8a/include/js/jquery/themes/default/d.gif.legal and cacti-0.8.8a/include/js/jquery/themes/default/d.gif differ -diff -up cacti-0.8.8a/include/js/jquery/themes/default/d.png.legal cacti-0.8.8a/include/js/jquery/themes/default/d.png -Binary files cacti-0.8.8a/include/js/jquery/themes/default/d.png.legal and cacti-0.8.8a/include/js/jquery/themes/default/d.png differ -diff -up cacti-0.8.8a/include/js/jquery/themes/default/style.css.legal cacti-0.8.8a/include/js/jquery/themes/default/style.css ---- cacti-0.8.8a/include/js/jquery/themes/default/style.css.legal 2013-01-04 15:44:49.350420872 -0500 -+++ cacti-0.8.8a/include/js/jquery/themes/default/style.css 2013-01-04 15:44:08.391403304 -0500 -@@ -0,0 +1,74 @@ -+/* -+ * jsTree default theme 1.0 -+ * Supported features: dots/no-dots, icons/no-icons, focused, loading -+ * Supported plugins: ui (hovered, clicked), checkbox, contextmenu, search -+ */ -+ -+.jstree-default li, -+.jstree-default ins { background-image:url("d.png"); background-repeat:no-repeat; background-color:transparent; } -+.jstree-default li { background-position:-90px 0; background-repeat:repeat-y; } -+.jstree-default li.jstree-last { background:transparent; } -+.jstree-default .jstree-open > ins { background-position:-72px 0; } -+.jstree-default .jstree-closed > ins { background-position:-54px 0; } -+.jstree-default .jstree-leaf > ins { background-position:-36px 0; } -+ -+.jstree-default .jstree-hovered { background:#e7f4f9; border:1px solid #d8f0fa; padding:0 2px 0 1px; } -+.jstree-default .jstree-clicked { background:#beebff; border:1px solid #99defd; padding:0 2px 0 1px; } -+.jstree-default a .jstree-icon { background-position:-56px -19px; } -+.jstree-default a.jstree-loading .jstree-icon { background:url("throbber.gif") center center no-repeat !important; } -+ -+.jstree-default.jstree-focused { background:#ffffee; } -+ -+.jstree-default .jstree-no-dots li, -+.jstree-default .jstree-no-dots .jstree-leaf > ins { background:transparent; } -+.jstree-default .jstree-no-dots .jstree-open > ins { background-position:-18px 0; } -+.jstree-default .jstree-no-dots .jstree-closed > ins { background-position:0 0; } -+ -+.jstree-default .jstree-no-icons a .jstree-icon { display:none; } -+ -+.jstree-default .jstree-search { font-style:italic; } -+ -+.jstree-default .jstree-no-icons .jstree-checkbox { display:inline-block; } -+.jstree-default .jstree-no-checkboxes .jstree-checkbox { display:none !important; } -+.jstree-default .jstree-checked > a > .jstree-checkbox { background-position:-38px -19px; } -+.jstree-default .jstree-unchecked > a > .jstree-checkbox { background-position:-2px -19px; } -+.jstree-default .jstree-undetermined > a > .jstree-checkbox { background-position:-20px -19px; } -+.jstree-default .jstree-checked > a > .jstree-checkbox:hover { background-position:-38px -37px; } -+.jstree-default .jstree-unchecked > a > .jstree-checkbox:hover { background-position:-2px -37px; } -+.jstree-default .jstree-undetermined > a > .jstree-checkbox:hover { background-position:-20px -37px; } -+ -+#vakata-dragged.jstree-default ins { background:transparent !important; } -+#vakata-dragged.jstree-default .jstree-ok { background:url("d.png") -2px -53px no-repeat !important; } -+#vakata-dragged.jstree-default .jstree-invalid { background:url("d.png") -18px -53px no-repeat !important; } -+#jstree-marker.jstree-default { background:url("d.png") -41px -57px no-repeat !important; text-indent:-100px; } -+ -+.jstree-default a.jstree-search { color:aqua; } -+.jstree-default .jstree-locked a { color:silver; cursor:default; } -+ -+#vakata-contextmenu.jstree-default-context, -+#vakata-contextmenu.jstree-default-context li ul { background:#f0f0f0; border:1px solid #979797; -moz-box-shadow: 1px 1px 2px #999; -webkit-box-shadow: 1px 1px 2px #999; box-shadow: 1px 1px 2px #999; } -+#vakata-contextmenu.jstree-default-context li { } -+#vakata-contextmenu.jstree-default-context a { color:black; } -+#vakata-contextmenu.jstree-default-context a:hover, -+#vakata-contextmenu.jstree-default-context .vakata-hover > a { padding:0 5px; background:#e8eff7; border:1px solid #aecff7; color:black; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; } -+#vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a, -+#vakata-contextmenu.jstree-default-context li.jstree-contextmenu-disabled a:hover { color:silver; background:transparent; border:0; padding:1px 4px; } -+#vakata-contextmenu.jstree-default-context li.vakata-separator { background:white; border-top:1px solid #e0e0e0; margin:0; } -+#vakata-contextmenu.jstree-default-context li ul { margin-left:-4px; } -+ -+/* IE6 BEGIN */ -+.jstree-default li, -+.jstree-default ins, -+#vakata-dragged.jstree-default .jstree-invalid, -+#vakata-dragged.jstree-default .jstree-ok, -+#jstree-marker.jstree-default { _background-image:url("d.gif"); } -+.jstree-default .jstree-open ins { _background-position:-72px 0; } -+.jstree-default .jstree-closed ins { _background-position:-54px 0; } -+.jstree-default .jstree-leaf ins { _background-position:-36px 0; } -+.jstree-default a ins.jstree-icon { _background-position:-56px -19px; } -+#vakata-contextmenu.jstree-default-context ins { _display:none; } -+#vakata-contextmenu.jstree-default-context li { _zoom:1; } -+.jstree-default .jstree-undetermined a .jstree-checkbox { _background-position:-20px -19px; } -+.jstree-default .jstree-checked a .jstree-checkbox { _background-position:-38px -19px; } -+.jstree-default .jstree-unchecked a .jstree-checkbox { _background-position:-2px -19px; } -+/* IE6 END */ -\ No newline at end of file -diff -up cacti-0.8.8a/include/js/jquery/themes/default/throbber.gif.legal cacti-0.8.8a/include/js/jquery/themes/default/throbber.gif -Binary files cacti-0.8.8a/include/js/jquery/themes/default/throbber.gif.legal and cacti-0.8.8a/include/js/jquery/themes/default/throbber.gif differ diff --git a/src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch b/src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch deleted file mode 100644 index b0b54febc..000000000 --- a/src/patches/cacti/cacti-0.8.8a-replace_treeview_by_jquery.jstree.patch +++ /dev/null @@ -1,607 +0,0 @@ -Description: treeview has a license issue, cacti upstream is going to replace it - with functionality from jquery.jstree. - . - This patch implements the changes needed for an upstream layout where the - necessary code is in cacti/include/js/jquery/ but the code in that path is - not included in this patch. - . - The necessary jquery scripts and theme info can come from cacti upstream and from - debian packages (libjs-jquery and libjs-jquery-cookie) The version used when - creating this patch can be found here: - http://svn.cacti.net/viewvc/cacti/branches/0.8.9/include/js/jquery/jquery.js?pathrev=7324 - http://svn.cacti.net/viewvc/cacti/branches/0.8.9/include/js/jquery/jquery.jstree.js?pathrev=7324 - http://svn.cacti.net/viewvc/cacti/branches/main/include/js/jquery/themes/default/?pathrev=7324 - http://anonscm.debian.org/gitweb/?p=pkg-javascript/jquery-goodies.git;a=blob;f=cookie/jquery.cookie.js;hb=c50e1a2d599cb48893e8d77470e71e83e44dfdb5 - . - This patch does NOT implement the changes needed for the Debian package of - cacti. - . - This patch was updated with the patch from Jan Zalesak in - http://bugs.debian.org/702690 which was further improved to also cover - lib/graph_export.php and to keep tag alignment consistent. -Bug: http://bugs.cacti.net/view.php?id=2228 -Bug-Debian: http://bugs.debian.org/679980 -Author: Paul Gevers -Date: Sun, 31 Mar 2013 11:59:05 +0200 - ---- a/include/top_graph_header.php -+++ b/include/top_graph_header.php -@@ -84,8 +84,9 @@ - - - -- -- -+ -+ -+ - - - -@@ -178,7 +179,6 @@ - -
    - -- - - - \n"); -- fwrite($fp,"\n"); - fwrite($fp,"\n"); - fwrite($fp,"\n"); - } -@@ -1383,16 +1374,7 @@ - include_once($config["library_path"] . "/tree.php"); - include_once($config["library_path"] . "/data_query.php"); - -- fwrite($fp, "\n"); -+ fwrite($fp, "
    \n"); -+ fwrite($fp, "\n"); -+ - } - - /* get_graph_tree_array_export - returns a list of graph trees taking permissions into account if -@@ -1478,8 +1485,7 @@ - $dhtml_tree = array(); - $dhtml_tree[0] = $start; - $dhtml_tree[1] = read_graph_config_option("expand_hosts"); -- $dhtml_tree[2] = "foldersTree = gFld(\"\", \"\")\n"; -- $i = 2; -+ $i = 1; - - $tree_list = get_graph_tree_array_export(); - -@@ -1499,7 +1505,6 @@ - if (((read_config_option("export_tree_isolation") == "on") && ($tree_id == $tree["id"])) || - (read_config_option("export_tree_isolation") == "off")) { - -- $i++; - - $hier_sql = "SELECT DISTINCT - graph_tree_items.id, -@@ -1522,19 +1527,53 @@ - $dhtml_tree_id = 0; - - if (sizeof($hierarchy) > 0) { -+ $last_tier = 1; -+ $openli = false; -+ $lasthost = false; -+ $opentree = false; - foreach ($hierarchy as $leaf) { - if ($dhtml_tree_id <> $tree["id"]) { -- $dhtml_tree[$i] = "ou0 = insFld(foldersTree, gFld(\"" . get_tree_name($tree["id"]) . "\", \"" . clean_up_export_name(get_tree_name($tree["id"])) . "_leaf.html\"))\n"; -+ if ($opentree) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\n\t\t\n\t\n"; -+ } -+ $i++; -+ $clean_id = clean_up_export_name(get_tree_name($tree["id"])); -+ $dhtml_tree[$i] = "\t
      \n\t\t
    • " . get_tree_name($tree["id"]) . "\n\t\t\t
        \n"; -+ $opentree = true; - } - $dhtml_tree_id = $tree["id"]; - -- $i++; - $tier = tree_tier($leaf["order_key"]); - - if ($leaf["host_id"] > 0) { //It's a host -- $dhtml_tree[$i] = "ou" . ($tier) . " = insFld(ou" . ($tier-1) . ", gFld(\"Host: " . $leaf["hostname"] . "\", \"" . clean_up_export_name($leaf["hostname"] . "_" . $leaf["id"]) . ".html\"))\n"; -+ if ($tier > $last_tier) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
          \n"; -+ } elseif ($tier < $last_tier) { -+ if (!$lasthost) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\n"; -+ } -+ for ($x = $tier; $x < $last_tier; $x++) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
        \n\t\t\t\t\n"; -+ $openli = false; -+ } -+ } elseif ($openli && !$lasthost) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\n"; -+ $openli = false; -+ } -+ $last_tier = $tier; -+ $lasthost = true; -+ $i++; -+ $clean_id = clean_up_export_name($leaf["hostname"] . "_" . $leaf["id"]); -+ $dhtml_tree[$i] = "\t\t\t\t
      • Host: " . htmlspecialchars($leaf["hostname"]) . "\n"; - - if (read_config_option("export_tree_expand_hosts") == "on") { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t
          \n"; - if ($leaf["host_grouping_type"] == HOST_GROUPING_GRAPH_TEMPLATE) { - $graph_templates = db_fetch_assoc("SELECT - graph_templates.id, -@@ -1552,7 +1591,8 @@ - if (sizeof($graph_templates) > 0) { - foreach ($graph_templates as $graph_template) { - $i++; -- $dhtml_tree[$i] = "ou" . ($tier+1) . " = insFld(ou" . ($tier) . ", gFld(\" " . $graph_template["name"] . "\", \"" . clean_up_export_name($leaf["hostname"] . "_gt_" . $leaf["id"]) . "_" . $graph_template["id"] . ".html\"))\n"; -+ $clean_id = clean_up_export_name($leaf["hostname"] . "_gt_" . $leaf["id"] . "_" . $graph_template["id"]); -+ $dhtml_tree[$i] = "\t\t\t\t\t\t
        • " . htmlspecialchars($graph_template["name"]) . "
        • \n"; - } - } - }else if ($leaf["host_grouping_type"] == HOST_GROUPING_DATA_QUERY_INDEX) { -@@ -1567,36 +1607,77 @@ - - array_push($data_queries, array( - "id" => "0", -- "name" => "Graph Template Based" -+ "name" => "Non Query Based" - )); - - if (sizeof($data_queries) > 0) { -- foreach ($data_queries as $data_query) { -- $i++; -- -- $dhtml_tree[$i] = "ou" . ($tier+1) . " = insFld(ou" . ($tier) . ", gFld(\" " . $data_query["name"] . "\", \"" . clean_up_export_name($leaf["hostname"] . "_dq_" . $leaf["title"] . "_" . $leaf["id"]) . "_" . $data_query["id"] . ".html\"))\n"; -+ foreach ($data_queries as $data_query) { -+ $i++; -+ $clean_id = clean_up_export_name($leaf["hostname"] . "_dq_" . $leaf["title"] . "_" . $leaf["id"] . "_" . $data_query["id"]); -+ $dhtml_tree[$i] = "\t\t\t\t\t\t
        • " . htmlspecialchars($data_query["name"]) . "\n"; - -- /* fetch a list of field names that are sorted by the preferred sort field */ -- $sort_field_data = get_formatted_data_query_indexes($leaf["host_id"], $data_query["id"]); -+ /* fetch a list of field names that are sorted by the preferred sort field */ -+ $sort_field_data = get_formatted_data_query_indexes($leaf["host_id"], $data_query["id"]); - -- if ($data_query["id"] > 0) { -- while (list($snmp_index, $sort_field_value) = each($sort_field_data)) { -+ if ($data_query["id"] > 0) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t\t
            \n"; -+ while (list($snmp_index, $sort_field_value) = each($sort_field_data)) { -+ $i++; -+ $clean_id = clean_up_export_name($leaf["hostname"] . "_dqi_" . $leaf["id"] . "_" . $data_query["id"] . "_" . $snmp_index); -+ $dhtml_tree[$i] = "\t\t\t\t\t\t\t\t
          • " . htmlspecialchars($sort_field_value) . "
          • \n"; -+ } - $i++; -- $dhtml_tree[$i] = "ou" . ($tier+2) . " = insFld(ou" . ($tier+1) . ", gFld(\" " . $sort_field_value . "\", \"" . clean_up_export_name($leaf["hostname"] . "_dqi_" . $leaf["title"] . "_" . $leaf["id"]) . "_" . $data_query["id"] . "_" . $snmp_index . ".html\"))\n"; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t\t
          \n"; - } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t
        • \n"; - } - } -- } - } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t
        \n"; - } -- }else { -- $dhtml_tree[$i] = "ou" . ($tier) . " = insFld(ou" . ($tier-1) . ", gFld(\"" . $leaf["title"] . "\", \"" . clean_up_export_name(get_tree_name($tree["id"]) . "_" . $leaf["title"] . "_" . $leaf["id"]) . "_leaf.html\"))\n"; -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t
      • \n"; -+ }else { //It's not a host -+ if ($tier > $last_tier) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
          \n"; -+ } elseif ($tier < $last_tier) { -+ if (!$lasthost) { -+ $i++; -+ $dhtml_tree[$i] = "\n"; -+ } -+ for ($x = $tier; $x < $last_tier; $x++) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t
        \n\t\t\t\t\n"; -+ $openli = false; -+ } -+ } elseif ($openli && !$lasthost) { -+ $i++; -+ $dhtml_tree[$i] = "\n"; -+ $openli = false; -+ } -+ $last_tier = $tier; -+ $i++; -+ $clean_id = clean_up_export_name(get_tree_name($tree["id"]) . "_" . $leaf["title"] . "_" . $leaf["id"]); -+ $dhtml_tree[$i] = "\t\t\t\t
      • " . htmlspecialchars($leaf["title"]) . "\n"; -+ $openli = true; -+ $lasthost = false; - } - } -+ for ($x = $last_tier; $x > 1; $x--) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t
      \n\t\t\t\t
    • \n"; -+ } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
    \n\t\t\n\t\n"; - }else{ - if ($dhtml_tree_id <> $tree["id"]) { -- $dhtml_tree[$i] = "ou0 = insFld(foldersTree, gFld(\"" . get_tree_name($tree["id"]) . "\", \"" . clean_up_export_name(get_tree_name($tree["id"])) . "_leaf.html\"))\n"; - $i++; -+ $clean_id = clean_up_export_name(get_tree_name($tree["id"])); -+ $dhtml_tree[$i] = "\t"; - } - } - } -@@ -1612,10 +1693,10 @@ - $dir - the export directory where graphs will either be staged or located. - */ - function create_export_directory_structure($cacti_root_path, $dir) { -- /* create the treeview sub-directory */ -- if (!is_dir("$dir/treeview")) { -- if (!mkdir("$dir/treeview", 0755)) { -- export_fatal("Create directory '" . $dir . "/treeview' failed. Can not continue"); -+ /* create the jquery sub-directory */ -+ if (!is_dir("$dir/js")) { -+ if (!mkdir("$dir/js", 0755)) { -+ export_fatal("Create directory '" . $dir . "/js' failed. Can not continue"); - } - } - -@@ -1626,8 +1707,6 @@ - } - } - -- $treeview_dir = $dir . "/treeview"; -- - /* css */ - copy("$cacti_root_path/include/main.css", "$dir/main.css"); - -@@ -1639,18 +1718,15 @@ - copy("$cacti_root_path/images/shadow_gray.gif", "$dir/shadow_gray.gif"); - - /* java scripts for the tree */ -- copy("$cacti_root_path/include/treeview/ftiens4_export.js", "$treeview_dir/ftiens4.js"); -- copy("$cacti_root_path/include/treeview/ua.js", "$treeview_dir/ua.js"); -- -- /* images for the tree */ -- copy("$cacti_root_path/include/treeview/ftv2blank.gif", "$treeview_dir/ftv2blank.gif"); -- copy("$cacti_root_path/include/treeview/ftv2lastnode.gif", "$treeview_dir/ftv2lastnode.gif"); -- copy("$cacti_root_path/include/treeview/ftv2mlastnode.gif", "$treeview_dir/ftv2mlastnode.gif"); -- copy("$cacti_root_path/include/treeview/ftv2mnode.gif", "$treeview_dir/ftv2mnode.gif"); -- copy("$cacti_root_path/include/treeview/ftv2node.gif", "$treeview_dir/ftv2node.gif"); -- copy("$cacti_root_path/include/treeview/ftv2plastnode.gif", "$treeview_dir/ftv2plastnode.gif"); -- copy("$cacti_root_path/include/treeview/ftv2pnode.gif", "$treeview_dir/ftv2pnode.gif"); -- copy("$cacti_root_path/include/treeview/ftv2vertline.gif", "$treeview_dir/ftv2vertline.gif"); -+ copy("$cacti_root_path/include/js/jquery/jquery.js", "$dir/js/jquery.js"); -+ copy("$cacti_root_path/include/js/jquery/jquery.jstree.js", "$dir/js/jquery.jstree.js"); -+ copy("$cacti_root_path/include/js/jquery/jquery.cookie.js", "$dir/js/jquery.cookie.js"); -+ -+ /* theme info for java scripts */ -+ copy("$cacti_root_path/include/js/jquery/themes/default/style.css", "$dir/js/style.css"); -+ copy("$cacti_root_path/include/js/jquery/themes/default/d.png", "$dir/js/d.png"); -+ copy("$cacti_root_path/include/js/jquery/themes/default/d.gif", "$dir/js/d.gif"); -+ copy("$cacti_root_path/include/js/jquery/themes/default/throbber.gif", "$dir/js/throbber.gif"); - } - - function get_host_description($host_id) { -@@ -1738,8 +1814,9 @@ - - - -- -- -+ -+ -+ - - - ---- a/lib/html_tree.php -+++ b/lib/html_tree.php -@@ -495,17 +495,9 @@ - include_once($config["library_path"] . "/data_query.php"); - - ?> -- -+ - \n"; -+ $i = 2; - - $tree_list = get_graph_tree_array(); - -@@ -567,7 +583,6 @@ - - if (sizeof($tree_list) > 0) { - foreach ($tree_list as $tree) { -- $i++; - $hierarchy = db_fetch_assoc("select - graph_tree_items.id, - graph_tree_items.title, -@@ -583,21 +598,45 @@ - and graph_tree_items.local_graph_id = 0 - order by graph_tree_items.order_key"); - -- $dhtml_tree[$i] = "ou0 = insFld(foldersTree, gFld(\"" . htmlspecialchars($tree["name"]) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"]) . "\"))\n"; - $i++; -- $dhtml_tree[$i] = "ou0.xID = \"tree_" . $tree["id"] . "\"\n"; -+ $dhtml_tree[$i] = "\t
      \n\t\t
    • " . htmlspecialchars($tree["name"]) . "\n"; - - if (sizeof($hierarchy) > 0) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
        \n"; -+ $last_tier = 1; -+ $openli = false; -+ $lasthost = false; - foreach ($hierarchy as $leaf) { -- $i++; - $tier = tree_tier($leaf["order_key"]); - -- if ($leaf["host_id"] > 0) { -- $dhtml_tree[$i] = "ou" . ($tier) . " = insFld(ou" . abs(($tier-1)) . ", gFld(\"" . "Host: " . htmlspecialchars($leaf["hostname"]) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"]) . "\"))\n"; -+ if ($leaf["host_id"] > 0) { //It's a host -+ if ($tier > $last_tier) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
          \n"; -+ } elseif ($tier < $last_tier) { -+ if (!$lasthost) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\n"; -+ } -+ for ($x = $tier; $x < $last_tier; $x++) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
        \n\t\t\t\t\n"; -+ $openli = false; -+ } -+ } elseif ($openli && !$lasthost) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\n"; -+ $openli = false; -+ } -+ $last_tier = $tier; -+ $lasthost = true; - $i++; -- $dhtml_tree[$i] = "ou" . ($tier) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "\"\n"; -+ $dhtml_tree[$i] = "\t\t\t\t
      • Host: " . htmlspecialchars($leaf["hostname"]) . "\n"; - - if (read_graph_config_option("expand_hosts") == "on") { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t
          \n"; - if ($leaf["host_grouping_type"] == HOST_GROUPING_GRAPH_TEMPLATE) { - $graph_templates = db_fetch_assoc("select - graph_templates.id, -@@ -612,9 +651,7 @@ - if (sizeof($graph_templates) > 0) { - foreach ($graph_templates as $graph_template) { - $i++; -- $dhtml_tree[$i] = "ou" . ($tier+1) . " = insFld(ou" . ($tier) . ", gFld(\" " . htmlspecialchars($graph_template["name"]) . "\", \"graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=graph_template:" . $graph_template["id"] . "\"))\n"; -- $i++; -- $dhtml_tree[$i] = "ou" . ($tier+1) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_gt_" . $graph_template["id"] . "\"\n"; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t
        • " . htmlspecialchars($graph_template["name"]) . "
        • \n"; - } - } - }else if ($leaf["host_grouping_type"] == HOST_GROUPING_DATA_QUERY_INDEX) { -@@ -645,33 +682,71 @@ - if ((($data_query["id"] == 0) && ($non_template_graphs > 0)) || - (($data_query["id"] > 0) && (sizeof($sort_field_data) > 0))) { - $i++; -- $dhtml_tree[$i] = "ou" . ($tier+1) . " = insFld(ou" . ($tier) . ", gFld(\" " . htmlspecialchars($data_query["name"]) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=data_query:" . $data_query["id"]) . "\"))\n"; -- $i++; -- $dhtml_tree[$i] = "ou" . ($tier+1) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_dq_" . $data_query["id"] . "\"\n"; -- -+ $dhtml_tree[$i] = "\t\t\t\t\t\t
        • " . htmlspecialchars($data_query["name"]) . "\n"; - if ($data_query["id"] > 0) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t\t
            \n"; - while (list($snmp_index, $sort_field_value) = each($sort_field_data)) { - $i++; -- $dhtml_tree[$i] = "ou" . ($tier+2) . " = insFld(ou" . ($tier+1) . ", gFld(\" " . htmlspecialchars($sort_field_value) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"] . "&host_group_data=data_query_index:" . $data_query["id"] . ":" . urlencode($snmp_index)) . "\"))\n"; -- $i++; -- $dhtml_tree[$i] = "ou" . ($tier+2) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "_hgd_dqi" . $data_query["id"] . "_" . urlencode($snmp_index) . "\"\n"; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t\t\t
          • " . htmlspecialchars($sort_field_value) . "
          • \n"; - } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t\t
          \n"; -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t
        • \n"; - } - } - } - } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t\t\n"; -+ } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t
        \n"; -+ } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t
      • \n"; -+ }else{ //It's not a host -+ if ($tier > $last_tier) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
          \n"; -+ } elseif ($tier < $last_tier) { -+ if (!$lasthost) { -+ $i++; -+ $dhtml_tree[$i] = "\n"; - } -+ for ($x = $tier; $x < $last_tier; $x++) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t
        \n\t\t\t\t\n"; -+ $openli = false; -+ } -+ } elseif ($openli && !$lasthost) { -+ $i++; -+ $dhtml_tree[$i] = "\n"; -+ $openli = false; - } -- }else{ -- $dhtml_tree[$i] = "ou" . ($tier) . " = insFld(ou" . abs(($tier-1)) . ", gFld(\"" . htmlspecialchars($leaf["title"]) . "\", \"" . htmlspecialchars("graph_view.php?action=tree&tree_id=" . $tree["id"] . "&leaf_id=" . $leaf["id"]) . "\"))\n"; -+ $last_tier = $tier; - $i++; -- $dhtml_tree[$i] = "ou" . ($tier) . ".xID = \"tree_" . $tree["id"] . "_leaf_" . $leaf["id"] . "\"\n"; -+ $dhtml_tree[$i] = "\t\t\t\t
      • " . htmlspecialchars($leaf["title"]) . "\n"; -+ $openli = true; -+ $lasthost = false; - } - } -+ for ($x = $last_tier; $x > 1; $x--) { -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t\t\t
      \n\t\t\t\t
    • \n"; -+ } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\t
    \n"; - } -+ $i++; -+ $dhtml_tree[$i] = "\t\t\n\t\n"; - } - } - -+ $i++; -+ $dhtml_tree[$i] = "\n"; -+ - return $dhtml_tree; - } - -@@ -758,14 +833,6 @@ - } - } - -- print ""; -- - /* ================= input validation ================= */ - input_validate_input_number(get_request_var_post("graphs")); - input_validate_input_number(get_request_var_post("page")); diff --git a/src/patches/cacti/cacti-0.8.8b-html-injection.patch b/src/patches/cacti/cacti-0.8.8b-html-injection.patch deleted file mode 100644 index 1326dffb7..000000000 --- a/src/patches/cacti/cacti-0.8.8b-html-injection.patch +++ /dev/null @@ -1,19 +0,0 @@ ------------------------------------------------------------------------- -r7443 | rony | 2014-03-30 18:43:28 -0500 (Sun, 30 Mar 2014) | 2 lines - -bug#0002431: CVE-2014-2326 Unspecified HTML Injection Vulnerability - ------------------------------------------------------------------------- -Index: branches/0.8.8/cdef.php -=================================================================== ---- branches/0.8.8/cdef.php (revision 7442) -+++ branches/0.8.8/cdef.php (revision 7443) -@@ -431,7 +431,7 @@ - ">Item # - - - - - - -
    -- : -+ : - - ">Move Down diff --git a/src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch b/src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch deleted file mode 100644 index c357a06d7..000000000 --- a/src/patches/cacti/cacti-0.8.8b-remote-command-execution.patch +++ /dev/null @@ -1,28 +0,0 @@ ------------------------------------------------------------------------- -r7442 | rony | 2014-03-30 18:41:56 -0500 (Sun, 30 Mar 2014) | 2 lines - -bug#0002433: CVE-2014-2328 Unspecified Remote Command Execution Vulnerability - ------------------------------------------------------------------------- -Index: branches/0.8.8/lib/graph_export.php -=================================================================== ---- branches/0.8.8/lib/graph_export.php (revision 7441) -+++ branches/0.8.8/lib/graph_export.php (revision 7442) -@@ -339,7 +339,7 @@ - chdir($stExportDir); - - /* set the initial command structure */ -- $stExecute = 'ncftpput -R -V -r 1 -u '.$aFtpExport['username'].' -p '.$aFtpExport['password']; -+ $stExecute = 'ncftpput -R -V -r 1 -u ' . cacti_escapeshellarg($aFtpExport['username']) . ' -p ' . cacti_escapeshellarg($aFtpExport['password']); - - /* if the user requested passive mode, use it */ - if ($aFtpExport['passive']) { -@@ -347,7 +347,7 @@ - } - - /* setup the port, server, remote directory and all files */ -- $stExecute .= ' -P ' . $aFtpExport['port'] . ' ' . $aFtpExport['server'] . ' ' . $aFtpExport['remotedir'] . "."; -+ $stExecute .= ' -P ' . cacti_escapeshellarg($aFtpExport['port']) . ' ' . cacti_escapeshellarg($aFtpExport['server']) . ' ' . cacti_escapeshellarg($aFtpExport['remotedir']) . "."; - - /* run the command */ - $iExecuteReturns = 0; diff --git a/src/patches/cacti/cacti-0.8.8b-rra-comments.patch b/src/patches/cacti/cacti-0.8.8b-rra-comments.patch deleted file mode 100644 index c5becfe77..000000000 --- a/src/patches/cacti/cacti-0.8.8b-rra-comments.patch +++ /dev/null @@ -1,42 +0,0 @@ ------------------------------------------------------------------------- -r7418 | gandalf | 2013-08-13 13:32:49 -0600 (Tue, 13 Aug 2013) | 1 line - -fix COMMENT handling, even in case COMMENT is empty, with or without HR and with variable substitution ------------------------------------------------------------------------- -Index: branches/0.8.8/lib/rrd.php -=================================================================== ---- branches/0.8.8/lib/rrd.php (revision 7417) -+++ branches/0.8.8/lib/rrd.php (revision 7418) -@@ -1343,20 +1343,20 @@ - $need_rrd_nl = TRUE; - - if ($graph_item_types{$graph_item["graph_type_id"]} == "COMMENT") { -+ # perform variable substitution first (in case this will yield an empty results or brings command injection problems) -+ $comment_arg = rrd_substitute_host_query_data($graph_variables["text_format"][$graph_item_id], $graph, $graph_item); -+ # next, compute the argument of the COMMENT statement and perform injection counter measures -+ if (trim($comment_arg) == '') { # an empty COMMENT must be treated with care -+ $comment_arg = cacti_escapeshellarg(' ' . $hardreturn[$graph_item_id]); -+ } else { -+ $comment_arg = cacti_escapeshellarg($comment_arg . $hardreturn[$graph_item_id]); -+ } -+ -+ # create rrdtool specific command line - if (read_config_option("rrdtool_version") != "rrd-1.0.x") { -- $comment_string = $graph_item_types{$graph_item["graph_type_id"]} . ":" . str_replace(":", "\:", cacti_escapeshellarg($graph_variables["text_format"][$graph_item_id] . $hardreturn[$graph_item_id])) . " "; -- if (trim($comment_string) == 'COMMENT:"\n"') { -- $txt_graph_items .= 'COMMENT:" \n"'; # rrdtool will skip a COMMENT that holds a NL only; so add a blank to make NL work -- } else if (trim($comment_string) != "COMMENT:\"\"") { -- $txt_graph_items .= rrd_substitute_host_query_data($comment_string, $graph, $graph_item); -- } -+ $txt_graph_items .= $graph_item_types{$graph_item["graph_type_id"]} . ":" . str_replace(":", "\:", $comment_arg) . " "; - }else { -- $comment_string = $graph_item_types{$graph_item["graph_type_id"]} . ":" . cacti_escapeshellarg($graph_variables["text_format"][$graph_item_id] . $hardreturn[$graph_item_id]) . " "; -- if (trim($comment_string) == 'COMMENT:"\n"') { -- $txt_graph_items .= 'COMMENT:" \n"'; # rrdtool will skip a COMMENT that holds a NL only; so add a blank to make NL work -- } else if (trim($comment_string) != "COMMENT:\"\"") { -- $txt_graph_items .= rrd_substitute_host_query_data($comment_string, $graph, $graph_item); -- } -+ $txt_graph_items .= $graph_item_types{$graph_item["graph_type_id"]} . ":" . $comment_arg . " "; - } - }elseif (($graph_item_types{$graph_item["graph_type_id"]} == "GPRINT") && (!isset($graph_data_array["graph_nolegend"]))) { - $graph_variables["text_format"][$graph_item_id] = str_replace(":", "\:", $graph_variables["text_format"][$graph_item_id]); /* escape colons */ diff --git a/src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch b/src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch deleted file mode 100644 index 37ded2ec0..000000000 --- a/src/patches/cacti/cacti-0.8.8b-sanitize-variables.patch +++ /dev/null @@ -1,155 +0,0 @@ ------------------------------------------------------------------------- -r7420 | cigamit | 2013-08-17 21:41:24 -0600 (Sat, 17 Aug 2013) | 1 line - -Bug #0002383 : Sanitize the step and id variables ------------------------------------------------------------------------- -Index: branches/0.8.8/host.php -=================================================================== ---- branches/0.8.8/host.php (revision 7419) -+++ branches/0.8.8/host.php (revision 7420) -@@ -149,6 +149,9 @@ - if ($_POST["snmp_version"] == 3 && ($_POST["snmp_password"] != $_POST["snmp_password_confirm"])) { - raise_message(4); - }else{ -+ input_validate_input_number(get_request_var_post("id")); -+ input_validate_input_number(get_request_var_post("host_template_id")); -+ - $host_id = api_device_save($_POST["id"], $_POST["host_template_id"], $_POST["description"], - trim($_POST["hostname"]), $_POST["snmp_community"], $_POST["snmp_version"], - $_POST["snmp_username"], $_POST["snmp_password"], -Index: branches/0.8.8/lib/api_device.php -=================================================================== ---- branches/0.8.8/lib/api_device.php (revision 7419) -+++ branches/0.8.8/lib/api_device.php (revision 7420) -@@ -107,7 +107,7 @@ - $_host_template_id = db_fetch_cell("select host_template_id from host where id=$id"); - } - -- $save["id"] = $id; -+ $save["id"] = form_input_validate($id, "id", "^[0-9]+$", false, 3); - $save["host_template_id"] = form_input_validate($host_template_id, "host_template_id", "^[0-9]+$", false, 3); - $save["description"] = form_input_validate($description, "description", "", false, 3); - $save["hostname"] = form_input_validate(trim($hostname), "hostname", "", false, 3); -Index: branches/0.8.8/install/index.php -=================================================================== ---- branches/0.8.8/install/index.php (revision 7419) -+++ branches/0.8.8/install/index.php (revision 7420) -@@ -310,27 +310,28 @@ - } - - /* pre-processing that needs to be done for each step */ --if (empty($_REQUEST["step"])) { -- $_REQUEST["step"] = 1; --}else{ -- if ($_REQUEST["step"] == "1") { -- $_REQUEST["step"] = "2"; -- }elseif (($_REQUEST["step"] == "2") && ($_REQUEST["install_type"] == "1")) { -- $_REQUEST["step"] = "3"; -- }elseif (($_REQUEST["step"] == "2") && ($_REQUEST["install_type"] == "3")) { -- $_REQUEST["step"] = "8"; -- }elseif (($_REQUEST["step"] == "8") && ($old_version_index <= array_search("0.8.5a", $cacti_versions))) { -- $_REQUEST["step"] = "9"; -- }elseif ($_REQUEST["step"] == "8") { -- $_REQUEST["step"] = "3"; -- }elseif ($_REQUEST["step"] == "9") { -- $_REQUEST["step"] = "3"; -- }elseif ($_REQUEST["step"] == "3") { -- $_REQUEST["step"] = "4"; -+if (isset($_REQUEST["step"]) && $_REQUEST["step"] > 0) { -+ $step = intval($_REQUEST["step"]); -+ if ($step == "1") { -+ $step = "2"; -+ } elseif (($step == "2") && ($_REQUEST["install_type"] == "1")) { -+ $step = "3"; -+ } elseif (($step == "2") && ($_REQUEST["install_type"] == "3")) { -+ $step = "8"; -+ } elseif (($step == "8") && ($old_version_index <= array_search("0.8.5a", $cacti_versions))) { -+ $step = "9"; -+ } elseif ($step == "8") { -+ $step = "3"; -+ } elseif ($step == "9") { -+ $step = "3"; -+ } elseif ($step == "3") { -+ $step = "4"; - } -+} else { -+ $step = 1; - } - --if ($_REQUEST["step"] == "4") { -+if ($step == "4") { - include_once("../lib/data_query.php"); - include_once("../lib/utility.php"); - -@@ -366,7 +367,7 @@ - - header ("Location: ../index.php"); - exit; --}elseif (($_REQUEST["step"] == "8") && ($_REQUEST["install_type"] == "3")) { -+}elseif (($step == "8") && ($_REQUEST["install_type"] == "3")) { - /* if the version is not found, die */ - if (!is_int($old_version_index)) { - print "

    Error

    -@@ -505,7 +506,7 @@ -
    -- -+ - -

    Thanks for taking the time to download and install cacti, the complete graphing - solution for your network. Before you can start making cool graphs, there are a few -@@ -530,7 +531,7 @@ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details.

    - -- -+ - -

    Please select the type of installation

    - -@@ -551,7 +552,7 @@ - print "Server Operating System Type: " . $config["cacti_server_os"] . "
    "; ?> -

    - -- -+ - -

    Make sure all of these values are correct before continuing.

    - - -- -+ - -

    Upgrade results:

    - -@@ -659,7 +660,7 @@ - print $upgrade_results; - ?> - -- -+ - -

    Important Upgrade Notice

    - -@@ -673,7 +674,7 @@ - - - --

    finishnext.gif" alt="FinishNext">

    -+

    finishnext.gif" alt="FinishNext">

    -
    -@@ -681,7 +682,7 @@ - - - --"> -+ - - - diff --git a/src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch b/src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch deleted file mode 100644 index cb72d7971..000000000 --- a/src/patches/cacti/cacti-0.8.8b-sql-injection-shell-escaping.patch +++ /dev/null @@ -1,117 +0,0 @@ ------------------------------------------------------------------------- -r7439 | rony | 2014-03-30 17:52:10 -0500 (Sun, 30 Mar 2014) | 5 lines - -bug#0002405: SQL injection in graph_xport.php - - - Fixed form input validation problems - - Fixed rrd export and graph shell escape issues - ------------------------------------------------------------------------- -Index: branches/0.8.8/graph_xport.php -=================================================================== ---- branches/0.8.8/graph_xport.php (revision 7438) -+++ branches/0.8.8/graph_xport.php (revision 7439) -@@ -47,43 +47,48 @@ - - $graph_data_array = array(); - -+/* ================= input validation ================= */ -+input_validate_input_number(get_request_var("local_graph_id")); -+input_validate_input_number(get_request_var("rra_id")); -+/* ==================================================== */ -+ - /* override: graph start time (unix time) */ --if (!empty($_GET["graph_start"]) && $_GET["graph_start"] < 1600000000) { -- $graph_data_array["graph_start"] = $_GET["graph_start"]; -+if (!empty($_GET["graph_start"]) && is_numeric($_GET["graph_start"] && $_GET["graph_start"] < 1600000000)) { -+ $graph_data_array["graph_start"] = get_request_var("graph_start"); - } - - /* override: graph end time (unix time) */ --if (!empty($_GET["graph_end"]) && $_GET["graph_end"] < 1600000000) { -- $graph_data_array["graph_end"] = $_GET["graph_end"]; -+if (!empty($_GET["graph_end"]) && is_numeric($_GET["graph_end"]) && $_GET["graph_end"] < 1600000000) { -+ $graph_data_array["graph_end"] = get_request_var("graph_end"); - } - - /* override: graph height (in pixels) */ --if (!empty($_GET["graph_height"]) && $_GET["graph_height"] < 3000) { -- $graph_data_array["graph_height"] = $_GET["graph_height"]; -+if (!empty($_GET["graph_height"]) && is_numeric($_GET["graph_height"]) && $_GET["graph_height"] < 3000) { -+ $graph_data_array["graph_height"] = get_request_var("graph_height"); - } - - /* override: graph width (in pixels) */ --if (!empty($_GET["graph_width"]) && $_GET["graph_width"] < 3000) { -- $graph_data_array["graph_width"] = $_GET["graph_width"]; -+if (!empty($_GET["graph_width"]) && is_numeric($_GET["graph_width"]) && $_GET["graph_width"] < 3000) { -+ $graph_data_array["graph_width"] = get_request_var("graph_width"); - } - - /* override: skip drawing the legend? */ - if (!empty($_GET["graph_nolegend"])) { -- $graph_data_array["graph_nolegend"] = $_GET["graph_nolegend"]; -+ $graph_data_array["graph_nolegend"] = get_request_var("graph_nolegend"); - } - - /* print RRDTool graph source? */ - if (!empty($_GET["show_source"])) { -- $graph_data_array["print_source"] = $_GET["show_source"]; -+ $graph_data_array["print_source"] = get_request_var("show_source"); - } - --$graph_info = db_fetch_row("SELECT * FROM graph_templates_graph WHERE local_graph_id='" . $_REQUEST["local_graph_id"] . "'"); -+$graph_info = db_fetch_row("SELECT * FROM graph_templates_graph WHERE local_graph_id='" . get_request_var("local_graph_id") . "'"); - - /* for bandwidth, NThPercentile */ - $xport_meta = array(); - - /* Get graph export */ --$xport_array = @rrdtool_function_xport($_GET["local_graph_id"], $_GET["rra_id"], $graph_data_array, $xport_meta); -+$xport_array = @rrdtool_function_xport($_GET["local_graph_id"], get_request_var("rra_id"), $graph_data_array, $xport_meta); - - /* Make graph title the suggested file name */ - if (is_array($xport_array["meta"])) { -Index: branches/0.8.8/lib/rrd.php -=================================================================== ---- branches/0.8.8/lib/rrd.php (revision 7438) -+++ branches/0.8.8/lib/rrd.php (revision 7439) -@@ -865,13 +865,13 @@ - /* basic graph options */ - $graph_opts .= - "--imgformat=" . $image_types{$graph["image_format_id"]} . RRD_NL . -- "--start=$graph_start" . RRD_NL . -- "--end=$graph_end" . RRD_NL . -+ "--start=" . cacti_escapeshellarg($graph_start) . RRD_NL . -+ "--end=" . cacti_escapeshellarg($graph_end) . RRD_NL . - "--title=" . cacti_escapeshellarg($graph["title_cache"]) . RRD_NL . - "$rigid" . -- "--base=" . $graph["base_value"] . RRD_NL . -- "--height=$graph_height" . RRD_NL . -- "--width=$graph_width" . RRD_NL . -+ "--base=" . cacti_escapeshellarg($graph["base_value"]) . RRD_NL . -+ "--height=" . cacti_escapeshellarg($graph_height) . RRD_NL . -+ "--width=" . cacti_escapeshellarg($graph_width) . RRD_NL . - "$scale" . - "$unit_value" . - "$unit_exponent_value" . -@@ -1606,8 +1606,8 @@ - - /* basic export options */ - $xport_opts = -- "--start=$xport_start" . RRD_NL . -- "--end=$xport_end" . RRD_NL . -+ "--start=" . cacti_escapeshellarg($xport_start) . RRD_NL . -+ "--end=" . cacti_escapeshellarg($xport_end) . RRD_NL . - "--maxrows=10000" . RRD_NL; - - $xport_defs = ""; -@@ -1997,7 +1997,7 @@ - $stacked_columns["col" . $j] = ($graph_item_types{$xport_item["graph_type_id"]} == "STACK") ? 1 : 0; - $j++; - -- $txt_xport_items .= "XPORT:" . $data_source_name . ":" . str_replace(":", "", cacti_escapeshellarg($legend_name)) ; -+ $txt_xport_items .= "XPORT:" . cacti_escapeshellarg($data_source_name) . ":" . str_replace(":", "", cacti_escapeshellarg($legend_name)) ; - }else{ - $need_rrd_nl = FALSE; - } From d7dde64550dc2327df8b473104448fcb7d83c510 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 16 Dec 2017 12:38:01 +0000 Subject: [PATCH 19/21] Drop phpSANE The upstream project is dead. Signed-off-by: Michael Tremer --- config/phpSANE/phpSANE.conf | 15 ----- config/rootfiles/packages/phpSANE | 22 ------- lfs/phpSANE | 87 --------------------------- make.sh | 1 - src/patches/phpSANE-0.3.3-fixes.patch | 71 ---------------------- 5 files changed, 196 deletions(-) delete mode 100644 config/phpSANE/phpSANE.conf delete mode 100644 config/rootfiles/packages/phpSANE delete mode 100644 lfs/phpSANE delete mode 100644 src/patches/phpSANE-0.3.3-fixes.patch diff --git a/config/phpSANE/phpSANE.conf b/config/phpSANE/phpSANE.conf deleted file mode 100644 index 3956019ef..000000000 --- a/config/phpSANE/phpSANE.conf +++ /dev/null @@ -1,15 +0,0 @@ -Listen 1003 - - - - DocumentRoot /srv/web/phpSANE - - Include /etc/httpd/conf/conf.d/php*.conf - - - Options None - AllowOverride None - Require all granted - - - diff --git a/config/rootfiles/packages/phpSANE b/config/rootfiles/packages/phpSANE deleted file mode 100644 index 98a99f0c9..000000000 --- a/config/rootfiles/packages/phpSANE +++ /dev/null @@ -1,22 +0,0 @@ -#srv/web/phpSANE -#srv/web/phpSANE/bilder -srv/web/phpSANE/bilder/black.gif -srv/web/phpSANE/bilder/clear.gif -srv/web/phpSANE/bilder/de.gif -srv/web/phpSANE/bilder/en.gif -srv/web/phpSANE/bilder/logo.jpg -srv/web/phpSANE/bilder/scan.jpg -srv/web/phpSANE/config.php -#srv/web/phpSANE/css -srv/web/phpSANE/css/save.css -srv/web/phpSANE/css/style.css -srv/web/phpSANE/index.php -#srv/web/phpSANE/javascript -srv/web/phpSANE/javascript/position.js -srv/web/phpSANE/language.php -srv/web/phpSANE/menu.php -srv/web/phpSANE/phpsane.php -srv/web/phpSANE/save.php -srv/web/phpSANE/scan.php -srv/web/phpSANE/tmp -etc/httpd/conf/vhosts.d/phpSANE.conf diff --git a/lfs/phpSANE b/lfs/phpSANE deleted file mode 100644 index 6a605f1fa..000000000 --- a/lfs/phpSANE +++ /dev/null @@ -1,87 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# 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 . # -# # -############################################################################### - - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = 0.3.3 - -THISAPP = phpSANE-$(VER) -DL_FILE = $(THISAPP).tar.bz2 -DL_FROM = $(URL_IPFIRE) -DIR_APP = $(DIR_SRC)/$(THISAPP) -TARGET = $(DIR_INFO)/$(THISAPP) -PROG = phpSANE -PAK_VER = 2 - -DEPS = "sane netpbm" - -############################################################################### -# Top-level Rules -############################################################################### - -objects = $(DL_FILE) - -$(DL_FILE) = $(DL_FROM)/$(DL_FILE) - -$(DL_FILE)_MD5 = 48fd77f85555ad41382bb1e0d1e373b9 - -install : $(TARGET) - -check : $(patsubst %,$(DIR_CHK)/%,$(objects)) - -download :$(patsubst %,$(DIR_DL)/%,$(objects)) - -md5 : $(subst %,%_MD5,$(objects)) - -dist: - @$(PAK) - -############################################################################### -# Downloading, checking, md5sum -############################################################################### - -$(patsubst %,$(DIR_CHK)/%,$(objects)) : - @$(CHECK) - -$(patsubst %,$(DIR_DL)/%,$(objects)) : - @$(LOAD) - -$(subst %,%_MD5,$(objects)) : - @$(MD5) - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) - @$(PREBUILD) - @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar jxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP)/phpSANE && patch -N -p1 < $(DIR_SRC)/src/patches/$(THISAPP)-fixes.patch - cd $(DIR_APP)/phpSANE && ln -s phpsane.php index.php - @rm -rf /srv/web/phpSANE - cd $(DIR_APP) && mv -vf phpSANE /srv/web/ - cp -vf $(DIR_SRC)/config/phpSANE/phpSANE.conf /etc/httpd/conf/vhosts.d/ - @rm -rf $(DIR_APP) - @$(POSTBUILD) diff --git a/make.sh b/make.sh index 234f09496..10a31fd9f 100755 --- a/make.sh +++ b/make.sh @@ -1365,7 +1365,6 @@ buildipfire() { lfsmake2 qemu lfsmake2 sane lfsmake2 netpbm - lfsmake2 phpSANE lfsmake2 tunctl lfsmake2 netsnmpd lfsmake2 nagios_nrpe diff --git a/src/patches/phpSANE-0.3.3-fixes.patch b/src/patches/phpSANE-0.3.3-fixes.patch deleted file mode 100644 index d5b73570a..000000000 --- a/src/patches/phpSANE-0.3.3-fixes.patch +++ /dev/null @@ -1,71 +0,0 @@ -diff -Naur phpSANE_org/config.php phpSANE/config.php ---- phpSANE_org/config.php 2005-02-21 07:05:00.000000000 +0100 -+++ phpSANE/config.php 2008-03-04 14:44:30.000000000 +0100 -@@ -1,7 +1,7 @@ - ".$lang[$lang_id][16]."\n"; - echo "