Imported Upstream version 2.6.0

This commit is contained in:
arnaud.quette@free.fr 2011-01-26 10:35:08 +01:00
parent 26fb71b504
commit 459aaf9392
510 changed files with 40508 additions and 18859 deletions

126
docs/website/Makefile.am Normal file
View file

@ -0,0 +1,126 @@
# FIXME: do we really have to distribute these many Kb too?
# RCS should be enough, and website generation should use
# source from subversion tags!
EXTRA_DIST = news.txt projects.txt website.txt \
ups-protocols.txt $(LAYOUT).conf $(SCRIPT_FILES) $(LAYOUT_FILES) \
$(FAVICON_FILES)
IMAGE_FILES = images/asciidoc.png \
images/eaton-logo.png \
images/blue-arrow.png \
images/simple.png \
images/advanced.png \
images/bigbox.png \
images/bizarre.png \
images/note.png \
images/warning.png
FAVICON_FILES = faviconut.ico faviconut.png
LAYOUT_FILES = css/ie-overrides.css \
css/web-layout.css \
css/xhtml11-quirks.css \
css/xhtml11.css
SCRIPT_FILES = scripts/filter_png.js \
scripts/jquery.js \
scripts/nut_jquery.js \
scripts/toc.js
WEBSITE_FILES = index.html projects.html stable-hcl.html \
documentation.html acknowledgements.html features.html \
ups-protocols.html \
cables.html nut-qa.html download.html support.html
WEBSITE_DEPS = ../user-manual.chunked ../packager-guide.chunked \
../FAQ.html ../developer-guide.chunked \
../user-manual.pdf \
../developer-guide.pdf \
../packager-guide.pdf \
../FAQ.pdf ../man/man-index.html
# CSS based simulated frames layout.
LAYOUT = web-layout
# Add --unsafe to allow includes on older versions of asciidoc ( < 8.5.3 ):
ASCIIDOC_PARAMS = --unsafe --backend=xhtml11 \
--conf-file=$(srcdir)/$(LAYOUT).conf \
--attribute icons \
--attribute iconsdir=$(srcdir)/images \
--attribute scriptsdir=$(srcdir)/scripts \
--attribute=badges \
--attribute=website \
--attribute=revision=$(PACKAGE_VERSION) \
--attribute localdate=`TZ=UTC date +%Y-%m-%d` \
--attribute localtime=`TZ=UTC date +%H:%M:%S` \
--attribute=date="`TZ=UTC date`"
all:
OUTDIR = output
$(WEBSITE_FILES): $(LAYOUT).conf
images/:
$(MKDIR_P) images
$(IMAGE_FILES): images/
cp -f ../$@ images/
if HAVE_ASCIIDOC
website: $(WEBSITE_FILES) $(WEBSITE_DEPS) $(IMAGE_FILES) $(SCRIPT_FILES) \
$(LAYOUT_FILES) scripts/ups_data.js ../stable-hcl.txt ../ups-html.txt \
$(OUTDIR) $(FAVICON_FILES)
else !HAVE_ASCIIDOC
website:
@echo "Not building website since 'asciidoc' was not found."
endif !HAVE_ASCIIDOC
.PHONY: website $(OUTDIR)
$(OUTDIR):
$(RM) -r $(OUTDIR)
$(MKDIR_P) $(OUTDIR)/docs/man
cp -fR $(WEBSITE_FILES) css images scripts $(OUTDIR)
cp -fR $(WEBSITE_DEPS) $(OUTDIR)/docs/
cp -f ../man/man-index.html $(OUTDIR)/docs/man/
cp -f ../man/*.html $(OUTDIR)/docs/man/
clean-local:
rm -rf $(WEBSITE_FILES) $(OUTDIR) images/
SUFFIXES = .txt .html
index.html: website.txt news.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a index-only $<
acknowledgements.html: ../acknowledgements.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
features.html: ../features.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
cables.html: ../cables.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $<
download.html: ../download.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $<
documentation.html: ../documentation.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
projects.html: projects.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $<
support.html: ../support.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
nut-qa.html: ../nut-qa.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
stable-hcl.html: ../stable-hcl.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a hcl $<
.txt.html:
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<

538
docs/website/Makefile.in Normal file
View file

@ -0,0 +1,538 @@
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
subdir = docs/website
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_compare_version.m4 \
$(top_srcdir)/m4/ax_create_stdint_h.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nut_arg_with.m4 \
$(top_srcdir)/m4/nut_check_asciidoc.m4 \
$(top_srcdir)/m4/nut_check_libgd.m4 \
$(top_srcdir)/m4/nut_check_libhal.m4 \
$(top_srcdir)/m4/nut_check_libneon.m4 \
$(top_srcdir)/m4/nut_check_libnetsnmp.m4 \
$(top_srcdir)/m4/nut_check_libpowerman.m4 \
$(top_srcdir)/m4/nut_check_libssl.m4 \
$(top_srcdir)/m4/nut_check_libusb.m4 \
$(top_srcdir)/m4/nut_check_libwrap.m4 \
$(top_srcdir)/m4/nut_check_os.m4 \
$(top_srcdir)/m4/nut_config_libhal.m4 \
$(top_srcdir)/m4/nut_report_feature.m4 \
$(top_srcdir)/m4/nut_type_socklen_t.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/include/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
A2X = @A2X@
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
AR = @AR@
ASCIIDOC = @ASCIIDOC@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BINDIR = @BINDIR@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CONFPATH = @CONFPATH@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
DBLATEX = @DBLATEX@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DOC_BUILD_LIST = @DOC_BUILD_LIST@
DRIVER_BUILD_LIST = @DRIVER_BUILD_LIST@
DRIVER_INSTALL_TARGET = @DRIVER_INSTALL_TARGET@
DRIVER_MAN_LIST = @DRIVER_MAN_LIST@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
HAL_CALLOUTS_PATH = @HAL_CALLOUTS_PATH@
HAL_DEVICE_MATCH_KEY = @HAL_DEVICE_MATCH_KEY@
HAL_FDI_PATH = @HAL_FDI_PATH@
HAL_USER = @HAL_USER@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBGD_CFLAGS = @LIBGD_CFLAGS@
LIBGD_LDFLAGS = @LIBGD_LDFLAGS@
LIBHAL_CFLAGS = @LIBHAL_CFLAGS@
LIBHAL_LIBS = @LIBHAL_LIBS@
LIBNEON_CFLAGS = @LIBNEON_CFLAGS@
LIBNEON_LIBS = @LIBNEON_LIBS@
LIBNETSNMP_CFLAGS = @LIBNETSNMP_CFLAGS@
LIBNETSNMP_LIBS = @LIBNETSNMP_LIBS@
LIBOBJS = @LIBOBJS@
LIBPOWERMAN_CFLAGS = @LIBPOWERMAN_CFLAGS@
LIBPOWERMAN_LIBS = @LIBPOWERMAN_LIBS@
LIBS = @LIBS@
LIBSSL_CFLAGS = @LIBSSL_CFLAGS@
LIBSSL_LIBS = @LIBSSL_LIBS@
LIBTOOL = @LIBTOOL@
LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
LIBUSB_LIBS = @LIBUSB_LIBS@
LIBWRAP_CFLAGS = @LIBWRAP_CFLAGS@
LIBWRAP_LIBS = @LIBWRAP_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
NETLIBS = @NETLIBS@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_NAME = @OS_NAME@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
RUN_AS_GROUP = @RUN_AS_GROUP@
RUN_AS_USER = @RUN_AS_USER@
SED = @SED@
SERLIBS = @SERLIBS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STATEPATH = @STATEPATH@
STRIP = @STRIP@
SUN_LIBUSB = @SUN_LIBUSB@
VERSION = @VERSION@
WORDS_BIGENDIAN = @WORDS_BIGENDIAN@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
cgiexecdir = @cgiexecdir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
driverexecdir = @driverexecdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
hotplugdir = @hotplugdir@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
pkgconfigdir = @pkgconfigdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target = @target@
target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
udevdir = @udevdir@
# FIXME: do we really have to distribute these many Kb too?
# RCS should be enough, and website generation should use
# source from subversion tags!
EXTRA_DIST = news.txt projects.txt website.txt \
ups-protocols.txt $(LAYOUT).conf $(SCRIPT_FILES) $(LAYOUT_FILES) \
$(FAVICON_FILES)
IMAGE_FILES = images/asciidoc.png \
images/eaton-logo.png \
images/blue-arrow.png \
images/simple.png \
images/advanced.png \
images/bigbox.png \
images/bizarre.png \
images/note.png \
images/warning.png
FAVICON_FILES = faviconut.ico faviconut.png
LAYOUT_FILES = css/ie-overrides.css \
css/web-layout.css \
css/xhtml11-quirks.css \
css/xhtml11.css
SCRIPT_FILES = scripts/filter_png.js \
scripts/jquery.js \
scripts/nut_jquery.js \
scripts/toc.js
WEBSITE_FILES = index.html projects.html stable-hcl.html \
documentation.html acknowledgements.html features.html \
ups-protocols.html \
cables.html nut-qa.html download.html support.html
WEBSITE_DEPS = ../user-manual.chunked ../packager-guide.chunked \
../FAQ.html ../developer-guide.chunked \
../user-manual.pdf \
../developer-guide.pdf \
../packager-guide.pdf \
../FAQ.pdf ../man/man-index.html
# CSS based simulated frames layout.
LAYOUT = web-layout
# Add --unsafe to allow includes on older versions of asciidoc ( < 8.5.3 ):
ASCIIDOC_PARAMS = --unsafe --backend=xhtml11 \
--conf-file=$(srcdir)/$(LAYOUT).conf \
--attribute icons \
--attribute iconsdir=$(srcdir)/images \
--attribute scriptsdir=$(srcdir)/scripts \
--attribute=badges \
--attribute=website \
--attribute=revision=$(PACKAGE_VERSION) \
--attribute localdate=`TZ=UTC date +%Y-%m-%d` \
--attribute localtime=`TZ=UTC date +%H:%M:%S` \
--attribute=date="`TZ=UTC date`"
OUTDIR = output
SUFFIXES = .txt .html
all: all-am
.SUFFIXES:
.SUFFIXES: .txt .html
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu docs/website/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu docs/website/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
clean-local distclean distclean-generic distclean-libtool \
distdir dvi dvi-am html html-am info info-am install \
install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
uninstall uninstall-am
all:
$(WEBSITE_FILES): $(LAYOUT).conf
images/:
$(MKDIR_P) images
$(IMAGE_FILES): images/
cp -f ../$@ images/
@HAVE_ASCIIDOC_TRUE@website: $(WEBSITE_FILES) $(WEBSITE_DEPS) $(IMAGE_FILES) $(SCRIPT_FILES) \
@HAVE_ASCIIDOC_TRUE@ $(LAYOUT_FILES) scripts/ups_data.js ../stable-hcl.txt ../ups-html.txt \
@HAVE_ASCIIDOC_TRUE@ $(OUTDIR) $(FAVICON_FILES)
@HAVE_ASCIIDOC_FALSE@website:
@HAVE_ASCIIDOC_FALSE@ @echo "Not building website since 'asciidoc' was not found."
.PHONY: website $(OUTDIR)
$(OUTDIR):
$(RM) -r $(OUTDIR)
$(MKDIR_P) $(OUTDIR)/docs/man
cp -fR $(WEBSITE_FILES) css images scripts $(OUTDIR)
cp -fR $(WEBSITE_DEPS) $(OUTDIR)/docs/
cp -f ../man/man-index.html $(OUTDIR)/docs/man/
cp -f ../man/*.html $(OUTDIR)/docs/man/
clean-local:
rm -rf $(WEBSITE_FILES) $(OUTDIR) images/
index.html: website.txt news.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a index-only $<
acknowledgements.html: ../acknowledgements.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
features.html: ../features.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
cables.html: ../cables.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $<
download.html: ../download.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $<
documentation.html: ../documentation.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
projects.html: projects.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a toc $<
support.html: ../support.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
nut-qa.html: ../nut-qa.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
stable-hcl.html: ../stable-hcl.txt
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ -a hcl $<
.txt.html:
$(ASCIIDOC) $(ASCIIDOC_PARAMS) -o $@ $<
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View file

@ -0,0 +1,7 @@
#layout-content-box {
margin-left: 207px;
}
#support-level-legend { width: 400px; }
#support-level-legend ul { margin: 0; }
.support-level-descr { float: none; }

View file

@ -0,0 +1,136 @@
body {
margin: 0;
font-size: 0.9em;
background-color: #f4f4f4;
}
#layout-banner-box {
width: 100%;
height: 110px;
z-index: 2;
background-color: #0067cd;
}
#layout-menu-box {
float: left;
height: 100%;
z-index: 1;
}
#layout-content-box {
border-left: 3px solid #eeeeee;
background-color: white;
overflow-y: auto;
}
h1 {
margin-top: 0.5em;
}
#layout-banner {
color: white;
font-family: sans-serif;
text-align: left;
padding: 0.8em 20px;
}
#layout-title {
font-family: monospace;
font-size: 3.5em;
font-weight: bold;
letter-spacing: 0.2em;
margin: 0;
}
#layout-description {
font-size: 1.2em;
letter-spacing: 0.1em;
}
#sponsor {
clear: both;
font-size: small;
margin-top: 50px;
margin-bottom: 10px;
color:#0067CD;
font-weight:bold;
}
#sponsor span { margin-left: 10px; }
#sponsor img { border: 0; }
#layout-menu {
padding-top: 0.8em;
padding-left: 20px;
margin-left: 0;
font-size: 1.0em;
font-family: sans-serif;
font-weight: bold;
list-style: none;
list-style-image: url(../images/blue-arrow.png)
}
#layout-menu li { margin-left: 10px; }
#layout-menu a {
line-height: 2em;
margin-left: 0.5em;
}
#layout-menu a:link, #layout-menu a:visited, #layout-menu a:hover {
color: #0067cd;
text-decoration: none;
}
#layout-menu a:hover {
color: navy;
text-decoration: none;
}
#layout-menu #page-source {
border-top: 2px solid silver;
margin-top: 0.2em;
}
#layout-content {
padding-top: 0.2em;
padding-left: 1.0em;
padding-right: 0.4em;
}
@media print {
#layout-banner-box { display: none; }
#layout-menu-box { display: none; }
#layout-content-box { margin-top: 0; margin-left: 0; }
}
#ups_list
{
margin: 20px 0 0 0; width: 100%;
border-collapse: collapse;
}
#ups_list td { border: 1px solid silver; }
#ups_list thead { font-weight: bold; background: #bbb; }
#ups_list .odd { background: #eee; }
#ups_list .even { background: #ddd; }
.filter { min-width: 100px; }
td#manufacturer-col { width: 20%; }
td#model-col { width: 50%; }
td#driver-col { width: 30%; }
.blue { background-color: #cfd9fe; }
.green { background-color: #b1fea7; }
.yellow { background-color: #fdf88e; }
.orange { background-color: #fccb81; }
.red { background-color: #ffa4a4; }
.hidden { display: none; }
#filters-set, #filters-set fieldset { display: none; border: 1px solid silver; padding: 10px; }
#filters-set legend { font-weight: bold; }
#filters-set td { border: 0; }
#filters-set fieldset { display: block; }
#filters-set select { max-width: 200px }
#support-level-legend { width: 31.25em; float: right; margin-right: 10px; padding: 10px; }
#support-level-legend dt { margin: 0; padding: 0; width: 15%; float: left; }
#support-level-legend dd { margin: 0; padding: 0; width: 85%; float: left; }
/*.support-level-descr { margin-left: 20px; float: right; }*/

View file

@ -0,0 +1,41 @@
/* Workarounds for IE6's broken and incomplete CSS2. */
div.sidebar-content {
background: #ffffee;
border: 1px solid silver;
padding: 0.5em;
}
div.sidebar-title, div.image-title {
color: #527bbd;
font-family: sans-serif;
font-weight: bold;
margin-top: 0.0em;
margin-bottom: 0.5em;
}
div.listingblock div.content {
border: 1px solid silver;
background: #f4f4f4;
padding: 0.5em;
}
div.quoteblock-attribution {
padding-top: 0.5em;
text-align: right;
}
div.verseblock-content {
white-space: pre;
}
div.verseblock-attribution {
padding-top: 0.75em;
text-align: left;
}
div.exampleblock-content {
border-left: 2px solid silver;
padding-left: 0.5em;
}
/* IE6 sets dynamically generated links as visited. */
div#toc a:visited { color: blue; }

View file

@ -0,0 +1,333 @@
/* Debug borders */
p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
/*
border: 1px solid red;
*/
}
body {
margin: 1em 5% 1em 5%;
}
a {
color: blue;
text-decoration: underline;
}
a:visited {
color: fuchsia;
}
em {
font-style: italic;
color: navy;
}
strong {
font-weight: bold;
color: #083194;
}
tt {
color: navy;
}
h1, h2, h3, h4, h5, h6 {
color: #527bbd;
font-family: sans-serif;
margin-top: 1.2em;
margin-bottom: 0.5em;
line-height: 1.3;
}
h1, h2, h3 {
border-bottom: 2px solid silver;
}
h2 {
padding-top: 0.5em;
}
h3 {
float: left;
}
h3 + * {
clear: left;
}
div.sectionbody {
font-family: serif;
margin-left: 0;
}
hr {
border: 1px solid silver;
}
p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
ul, ol, li > p {
margin-top: 0;
}
pre {
padding: 0;
margin: 0;
}
span#author {
color: #527bbd;
font-family: sans-serif;
font-weight: bold;
font-size: 1.1em;
}
span#email {
}
span#revnumber, span#revdate, span#revremark {
font-family: sans-serif;
}
div#footer {
font-family: sans-serif;
font-size: small;
border-top: 2px solid silver;
padding-top: 0.5em;
margin-top: 4.0em;
}
div#footer-text {
float: left;
padding-bottom: 0.5em;
}
div#footer-badges {
float: right;
padding-bottom: 0.5em;
}
div#preamble {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
div.admonitionblock {
margin-top: 2.5em;
margin-bottom: 2.5em;
}
div.content { /* Block element content. */
padding: 0;
}
/* Block element titles. */
div.title, caption.title {
color: #527bbd;
font-family: sans-serif;
font-weight: bold;
text-align: left;
margin-top: 1.0em;
margin-bottom: 0.5em;
}
div.title + * {
margin-top: 0;
}
td div.title:first-child {
margin-top: 0.0em;
}
div.content div.title:first-child {
margin-top: 0.0em;
}
div.content + div.title {
margin-top: 0.0em;
}
div.sidebarblock > div.content {
background: #ffffee;
border: 1px solid silver;
padding: 0.5em;
}
div.listingblock > div.content {
border: 1px solid silver;
background: #f4f4f4;
padding: 0.5em;
}
div.quoteblock {
padding-left: 2.0em;
margin-right: 10%;
}
div.quoteblock > div.attribution {
padding-top: 0.5em;
text-align: right;
}
div.verseblock {
padding-left: 2.0em;
margin-right: 10%;
}
div.verseblock > div.content {
white-space: pre;
}
div.verseblock > div.attribution {
padding-top: 0.75em;
text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
text-align: left;
}
div.admonitionblock .icon {
vertical-align: top;
font-size: 1.1em;
font-weight: bold;
text-decoration: underline;
color: #527bbd;
padding-right: 0.5em;
}
div.admonitionblock td.content {
padding-left: 0.5em;
border-left: 2px solid silver;
}
div.exampleblock > div.content {
border-left: 2px solid silver;
padding: 0.5em;
}
div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; }
a.image:visited { color: white; }
dl {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
dt {
margin-top: 0.5em;
margin-bottom: 0;
font-style: normal;
color: navy;
}
dd > *:first-child {
margin-top: 0.1em;
}
ul, ol {
list-style-position: outside;
}
ol.arabic {
list-style-type: decimal;
}
ol.loweralpha {
list-style-type: lower-alpha;
}
ol.upperalpha {
list-style-type: upper-alpha;
}
ol.lowerroman {
list-style-type: lower-roman;
}
ol.upperroman {
list-style-type: upper-roman;
}
div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
margin-top: 0.1em;
margin-bottom: 0.1em;
}
div.tableblock > table {
border: 3px solid #527bbd;
}
thead {
font-family: sans-serif;
font-weight: bold;
}
tfoot {
font-weight: bold;
}
td > div.verse {
white-space: pre;
}
p.table {
margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
border-style: none;
}
div.tableblock > table[frame="hsides"] {
border-left-style: none;
border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
border-top-style: none;
border-bottom-style: none;
}
div.hdlist {
margin-top: 0.8em;
margin-bottom: 0.8em;
}
div.hdlist tr {
padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
font-weight: bold;
}
td.hdlist1 {
vertical-align: top;
font-style: normal;
padding-right: 0.8em;
color: navy;
}
td.hdlist2 {
vertical-align: top;
}
div.hdlist.compact tr {
margin: 0;
padding-bottom: 0;
}
.comment {
background: yellow;
}
@media print {
div#footer-badges { display: none; }
}
div#toctitle {
color: #527bbd;
font-family: sans-serif;
font-size: 1.1em;
font-weight: bold;
margin-top: 1.0em;
margin-bottom: 0.1em;
}
div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
margin-top: 0;
margin-bottom: 0;
}
div.toclevel2 {
margin-left: 2em;
font-size: 0.9em;
}
div.toclevel3 {
margin-left: 4em;
font-size: 0.9em;
}
div.toclevel4 {
margin-left: 6em;
font-size: 0.9em;
}

BIN
docs/website/faviconut.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
docs/website/faviconut.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 B

9
docs/website/news.txt Normal file
View file

@ -0,0 +1,9 @@
- January 14, 2011: 2.6.0 released
- December 24, 2010: 2.6.0-pre1 released
- December 16, 2010: link:http://www.lestat.st/en/informatique/projets/nut-monitor[NUT-Monitor] 1.3 released
- July 22, 2010: new client link:http://www.revpol.com/xymon_nut_scripts[Hobbit (Xymon) monitor plugin]
- July 2, 2010: link:http://knut.prynych.cz[KNutClient] 1.0.3 and link update
- May 12, 2010: link:http://www.lestat.st/informatique/projets/nut-monitor-en[NUT-Monitor] 1.2 released
- March 22, 2010: link:http://knut.prynych.cz[KNutClient] 1.0
- February 23, 2010: 2.4.3 released
- February 19, 2010: 2.4.2 released

187
docs/website/projects.txt Normal file
View file

@ -0,0 +1,187 @@
Related projects
================
There are many programs and devices that integrate NUT support.
This page tries to track them.
Graphical desktop clients
-------------------------
link:http://sourceforge.net/projects/gknut/[GKrellM NUT]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Simple UPS monitoring plugin for GKrellM. Uses NUT (Network UPS Tools) for UPS connection.
link:http://knut.prynych.cz[KNutClient]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KNutClient is a visual client for NUT.
link:http://www.lestat.st/en/informatique/projets/nut-monitor[NUT-Monitor]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NUT-Monitor is a graphical application to monitor and manage UPSes connected to
a NUT server. This application is written in Python and PyGTK, and uses the <<PyNUT,PyNUT>> class.
NOTE: NUT-Monitor is part of NUT since version NUT 2.4.1.
It will further evolve toward the NUT Control Center.
link:http://download.mgeops.com/explore/eng/ptp/ptp_sol.htm?sol=PSP[Eaton - Personal Solution Pac]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NUT configuration and monitoring software for Eaton (previously MGE Office Protection Systems) units.
link:http://www.amautacorp.com/staff/Rudd-O/ups-monitor/[UPS Monitor]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Multi-threaded python/GTK2 graphical monitoring application.
link:http://sourceforge.net/projects/winnutclient[Windows NUT client]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Windows NUT client is a partial port of KNutClient to Windows using
link:http://www.autoitscript.com[AUTOIT] scripting language.
link:http://csociety.ecn.purdue.edu/~delpha/winnut/[WinNUT]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WinNUT is a partial port of the client side of Network UPS Tools (NUT) to Windows.
link:http://wmnut.mgeops.org/[WMNUT]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
WMNut is a program to monitor multiple UPSs statistics through the NUT (Network
UPS Tools) framework on Linux and other systems.
Network Management Systems (NMS) integration
--------------------------------------------
link:http://bigsister.graeff.com/[Big Sister system and network monitor]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The "nut" module monitors uninterruptible power supplies under control of the
NUT (Network UPS Tools) free software suite.
It sends alerts on power outages, overload and battery problems. The longterm
graphing may point you to battery aging problems.
link:http://cacti.net[Cacti monitoring tool]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are three different scripts that add NUT support to Cacti:
- link:http://forums.cacti.net/about19250.html[PHP script]
- link:http://forums.cacti.net/about14475.html[Ruby script]
- link:http://forums.cacti.net/about9729.html[shell script]
link:http://collectd.org[collectd]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The `collectd` system statistics collection daemon features a
link:http://collectd.org/wiki/index.php/Plugin:NUT[NUT plugin] to
collect statistics from UPSes.
link:http://xymon.sourceforge.net/[Xymon (Hobbit) monitor]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A link:http://www.revpol.com/xymon_nut_scripts[NUT plugin] is available.
link:http://monami.sourceforge.net[MonAMI NUT plugin]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A plugin to return UPS status to the MonAMI universal sensor framework.
link:http://munin.projects.linpro.no[Munin NUT plugin]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A link:http://muninexchange.projects.linpro.no/?search&cid=0&pid=136&phid=279[NUT plugin] is available.
link:http://www.nagios.org/[Nagios plugin]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The link:http://sourceforge.net/projects/nagiosplug/[check_ups] plugin returns
UPS status to the Nagios monitoring system using NUT.
Configuration GUIs
------------------
link:http://www.knut.noveradsl.cz/knutsetting/index.html[KNutSetting]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
KNutSetting is a visual KDE tool for configuring NUT - Network UPS Tools.
Other software projects
-----------------------
link:http://www.the-mcdonalds.org/Nut-Graph/[Nut-Graph]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PHP4 / GD / MySQL / jpgraph package to visualize logged UPS status data.
[[PyNUT]]
link:http://www.lestat.st/informatique/projets/pynut-en[PyNUT]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PyNUT is an abstraction class written in Python to access NUT (Network UPS
Tools) server and execute commands without needing to know the communication protocol.
link:http://bugs.debian.org/343530[RRDtool logging support]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This patch adds link:http://oss.oetiker.ch/rrdtool[RRDtool] logging support to NUT.
link:http://home.tele2.fr/elrik/[ups_control]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A developing Python wrapper to upsc which can generate mails and shutdown the machine.
link:http://search.cpan.org/search?dist=ups-nut[UPS::Nut]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A Perl module to talk to an UPS via NUT (Network UPS Tools) upsd.
Hardware projects involving NUT
-------------------------------
link:http://www.opengear.com/UPS.html[OpenGear]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Opengear provides an advanced NUT integration into many models.
There is also a link:http://www.opengear.com/Videos/Network-UPS-Tools/Network-UPS-Tools.html[video presentation] of the NUT integration.
For more information on Opengear's contributions to NUT, have a look at the
link:acknowledgements.html[acknowledgements information].
Synology
~~~~~~~~
link:http://www.synology.com[Synology] has worked closely with Arnaud to integrate
link:http://www.synology.com/enu/products/features/power.php[UPS support] on all
its devices.
Alcatel Lucent IPBX
~~~~~~~~~~~~~~~~~~~
Alcatel has been working for years with us (Patrick Agrain and Arnaud) to improve
NUT integration into some of their IPBX.
link:http://www.readynas.com/?page_id=92[Netgear ReadyNAS]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The RAIDiator firmware for the ReadyNAS product line includes NUT to either
monitor a local USB UPS, or to connect as a slave to a NUT server.
link:http://www.webbastards.com/projects/[lcd-nut]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A Project to display the status of a UPS on computer through one of the many
cheap LCD matrix displays available on the market.
Notes
-------
- Client authors: send updates on your releases to the NUT users mailing list.
We will also put a link to you in the news section of the top page when things change.
- If you know of a project which should be listed, please send in the URL.

View file

@ -0,0 +1,14 @@
$(function()
{
var imgs = $("img");
for(var i = 0; i < imgs.length; i++)
{
var img = $(imgs[i]);
if(img.attr("src").match(/\.png$/i))
{
img.replaceWith(
"<div style=\"width:" + img.width() + "px;height:" + img.height() + "px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.attr("src") + "', sizingMethod='crop');\"></div>"
);
}
}
});

19
docs/website/scripts/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,422 @@
var NUT =
{
// UPS table DOM ids
listID: "#ups_list",
listBodyID: "#ups_list_body",
// Field names
fields:
[
"manufacturer",
"device-type",
"support-level",
"model",
"comment",
"driver"
],
// Actual HTML table columns
columns:
[
["manufacturer"],
["model","comment"],
["driver"],
["support-level"],
],
// driver => connection type mappings
driverMap: function(driver)
{
if(driver.match(/bcmxcp_usb|blazer_usb|richcomm_usb|tripplite_usb|usbhid-ups/))
return "USB";
if(driver.match(/snmp-ups|netxml-ups/))
return "Network";
return "Serial";
},
// Support level => CSS class mappings
supportLevelClasses:
{
0: "",
1: "red",
2: "orange",
3: "yellow",
4: "blue",
5: "green"
},
tableCache: false,
// Parse GET parameters from window url and return them as a hash
// The call format is:
// stable-hcl.html?<filter name>=<filter value>
// Refer to docs/website/stable-hcl.txt for examples
parseGetParameters: function()
{
var url = window.location.href;
url = url.replace(/#$/, "");
var fieldPos = url.indexOf("?");
var get = {};
if(fieldPos > -1)
{
var fileName = url.substring(0, fieldPos);
var getList = url.substring(fieldPos + 1).split("&");
for(var i = 0; i<getList.length; i++)
{
var getField = getList[i].split("=");
get[unescape(getField[0])] = unescape(getField[1]);
}
}
return get;
},
// UPS filter renderers by data column index
filterRenderers:
{
"support-level": function(value)
{
var result = [];
for(var i = 0; i < value; i++) result.push("*");
return result.join("");
},
"driver": function(value)
{
return this.driverMap(value);
},
"device-type": function(value)
{
var map =
{
"pdu": "Power Distribution Unit",
"ups": "Uninterruptible Power Supply",
"scd": "Solar Controller Device"
}
return map[value];
}
},
// Specific filter handlers
filterHandlers:
{
/**
* @param {string} value value to filter
* @param {array} row raw data fields
* @return {boolean} true if value passes the filter, false otherwise
*/
"driver": function(value, row)
{
var driver = row[this.fields.indexOf("driver")];
if(this.driverMap(driver) == value) return true;
return false;
}
},
/**
* Returns rendered UPS data according to column index
* @param {integer} index
* @param {string} value
*/
renderFilter: function(index, value)
{
var renderer = this.filterRenderers[this.fields[index]];
if(typeof renderer == "function")
return renderer.call(this, value);
return value;
},
/**
* Initialization method
*/
init: function()
{
this.initFilters();
this.sortUPSData(UPSData);
this.buildUPSList(UPSData);
this.buildFilters(UPSData);
var get = this.parseGetParameters();
for(var param in get)
{
var filter = $("#"+param);
if(filter)
{
filter.val(get[param]);
this.doFilter();
}
}
},
/**
* Initialize filter filters references
*/
initFilters: function()
{
// Display filters fieldset hidden by default for user-agents not using javascript
$("#filters-set").show();
this.filters =
{
"support-level": { index: this.fields.indexOf("support-level"), field: $("#support-level") },
"device-type": { index: this.fields.indexOf("device-type"), field: $("#device-type") },
"manufacturer": { index: this.fields.indexOf("manufacturer"), field: $("#manufacturer") },
"model": { index: this.fields.indexOf("model"), field: $("#model") },
"driver": { index: this.fields.indexOf("driver"), field: $("#connection") }
}
},
/**
* Sorts table data by manufacturer and driver
* @param {Object} data
*/
sortUPSData: function(data)
{
var mI = this.fields.indexOf("manufacturer"), dI = this.fields.indexOf("driver");
data.sort(function(a,b)
{
var toLower = function(ar)
{
var res = ar.slice();
res.forEach(function(i, index) { if(typeof i == "string") res[index] = i.toLowerCase() });
return res;
}
var c = toLower(a), d = toLower(b);
return c[mI] == d[mI] ? c[dI] > d[dI] : c[mI] > d[mI];
});
},
/**
* Builds UPS list from provided data
* @param {array} data
*/
buildUPSList: function(data)
{
var list = $(this.listBodyID);
// Initialize table cache
if(!this.tableCache) this.tableCache = list.html();
// If we're rebuilding the original table, just use the one in cache
if(data == UPSData && this.tableCache)
{
list.html(this.tableCache);
return;
}
list.empty();
// Bailout if no data
if(!data || data.length == 0) return;
// Build rows
var cellHistory = [], rows = [];
var rowHistory = data[0][0];
var classes = ["even", "odd"], manufIndex = this.fields.indexOf("manufacturer"), currentClass = 0;
data.forEach(function(upsRow, rowIndex)
{
if(upsRow[manufIndex] != rowHistory)
{
currentClass = Number(!currentClass);
rowHistory = upsRow[manufIndex];
}
var cells = [];
// Build cells
this.columns.forEach(function(column, colIndex)
{
var cellContent = [];
column.forEach(function(field) {cellContent.push(upsRow[this.fields.indexOf(field)])}, this);
cellContent = cellContent.join("<br />");
// Inspect the last cell on this column and increase row span if the current cell has the same content
var cH = cellHistory[colIndex];
if(cH && cH.html == cellContent)
cH.rowSpan += 1;
else
{
var cell = "";
if(column.indexOf("driver") != -1)
{
cell = {html: cellContent, rowSpan: 1, cls: this.supportLevelClasses[upsRow[this.fields.indexOf("support-level") || ""]]};
}
else cell = {html: cellContent, rowSpan: 1, cls: classes[currentClass] }
if(column.indexOf("support-level") != -1) cell.cls += " hidden";
cells.push(cell);
cellHistory[colIndex] = cell;
}
}, this);
rows.push(cells);
}, this);
// Generate actual rows/cells tags
rows.forEach(function(r, index)
{
r.forEach(function(c, index)
{
r[index] = ["<td class='", c.cls, "' rowspan='", c.rowSpan, "'>", c.html, "</td>"].join("");
});
rows[index] = ["<tr>", r.join(""), "</tr>"].join("");
});
list.html(rows.join(""));
},
/**
* Initialize filters event listeners
* @param {Object} data
*/
buildFilters: function(data)
{
for(var f in this.filters)
{
var filter = this.filters[f];
this.populateCombo(data, filter);
filter.field.change(this.doFilter);
var op = $("#op-" + (filter.index));
if(op) op.change(this.doFilter);
}
},
/**
* Load data in filter combos
* @param {array} data
* @param {object} combo
* @param {integer} index
*/
populateCombo: function(data, filter)
{
var values = [];
var valueDict = {};
var combo = filter.field;
var oldValue = combo.val();
combo.html("<option value='-1'>---</option>");
// Special case for connection type
if(filter.field.attr("id") == "connection")
{
["Serial", "USB", "Network"].forEach(function(type)
{
values.push([type, type]);
}, this);
}
else
{
data.forEach(function(row)
{
var value = row[filter.index];
if(value != "" && !valueDict[value])
{
values.push([value, this.renderFilter(filter.index, value)]);
valueDict[value] = true;
}
}, this);
values = values.sort();
}
values.forEach(function(value)
{
var option = $(document.createElement("option"));
option.val(value[0]);
option.text(value[1]);
combo.append(option);
}, this);
combo.val(oldValue);
},
/**
* Apply selected filters on UPS list
*/
doFilter: function()
{
var initialRows = UPSData.slice();
var filteredRows = UPSData.slice();
/**
* Applies a single filter on provided UPS data set
* @param {string} value
* @param {integer} index
* @param {array} data
* @returns {array} filtered data set
*/
var applyFilter = function(value, index, data)
{
var tmpData = [];
tmpData = data.slice();
tmpData.forEach(function(row, rowIndex)
{
var field = row[index];
var handler = this.filterHandlers[this.fields[index]];
if(handler)
{
if(!handler.apply(this, [value, row]))
{
data.splice(data.indexOf(row), 1);
}
}
else if(row[index] != value) data.splice(data.indexOf(row), 1);
}, this);
return data;
}
// Sequentially apply filters
for(var f in NUT.filters)
{
var filter = NUT.filters[f];
var value = filter.field.val();
if(value != "-1") // Is filter active, i.e have the user picked a value in the filter combo
{
var opField = $("#op-" + filter.index);
filteredRows = applyFilter.apply(NUT, [value, filter.index, filteredRows]);
}
}
// Rebuild UPS list and combos according to filtered data
NUT.buildUPSList(filteredRows);
["manufacturer", "model", "driver"].forEach(function(id)
{
if(this.id != id) this.populateCombo(filteredRows, this.filters[id]);
}, NUT);
},
resetCombos: function()
{
for(var f in this.filters)
{
var field = this.filters[f].field;
this.populateCombo(UPSData, this.filters[f]);
field.val("-1");
}
this.buildUPSList(UPSData);
}
}
if(typeof Array.prototype.indexOf != "function")
{
Array.prototype.indexOf = function(elt)
{
var i = 0;
while(i < this.length)
{
if(this[i] == elt) return i;
i++;
}
return -1;
}
}
if(typeof Array.prototype.forEach != "function")
{
Array.prototype.forEach = function(cb, scope)
{
for (var i = 0, n = this.length; i<n; i++)
if (i in this)
cb.call(scope, this[i], i, this);
}
}
// Global initialization
$(function()
{
NUT.init.call(NUT);
});

View file

@ -0,0 +1,69 @@
/* Author: Mihai Bazon, September 2002
* http://students.infoiasi.ro/~mishoo
*
* Table Of Content generator
* Version: 0.4
*
* Feel free to use this script under the terms of the GNU General Public
* License, as long as you do not remove or alter this notice.
*/
/* modified by Troy D. Hanson, September 2006. License: GPL */
/* modified by Stuart Rackham, October 2006. License: GPL */
function getText(el) {
var text = "";
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
text += i.data;
else if (i.firstChild != null)
text += getText(i);
}
return text;
}
function TocEntry(el, text, toclevel) {
this.element = el;
this.text = text;
this.toclevel = toclevel;
}
function tocEntries(el, toclevels) {
var result = new Array;
var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
// Function that scans the DOM tree for header elements (the DOM2
// nodeIterator API would be a better technique but not supported by all
// browsers).
var iterate = function (el) {
for (var i = el.firstChild; i != null; i = i.nextSibling) {
if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
var mo = re.exec(i.tagName)
if (mo)
result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
iterate(i);
}
}
}
iterate(el);
return result;
}
// This function does the work. toclevels = 1..4.
function generateToc(toclevels) {
var toc = document.getElementById("toc");
var entries = tocEntries(document.getElementsByTagName("body")[0], toclevels);
for (var i = 0; i < entries.length; ++i) {
var entry = entries[i];
if (entry.element.id == "")
entry.element.id = "toc" + i;
var a = document.createElement("a");
a.href = "#" + entry.element.id;
a.appendChild(document.createTextNode(entry.text));
var div = document.createElement("div");
div.appendChild(a);
div.className = "toclevel" + entry.toclevel;
toc.appendChild(div);
}
if (entries.length == 0)
document.getElementById("header").removeChild(toc);
}

View file

@ -0,0 +1,101 @@
WARNING: this is a Work In Progress document. For the time being, you
should refer to the
link:http://old.networkupstools.org/protocols/[old NUT website library].
UPS Protocols
-------------
All protocol information on this site is provided in the hope that it will be
useful.
Some are officialy provided by the manufacturers, while others are the result of
reverse engineering work.
However, UPS hardware is plentiful and varied. Test your software thoroughly, as
these documents may not always reflect the reality within your equipment!
APC
~~~
- link:ups-protocols/apcsmart.html[APC's smart protocol] - unofficial decoding work
Belkin
~~~~~~
- link:ups-protocols/belkinsmart.html[Belkin's smart protocol] - unofficial decoding work on the Regulator Pro
- link:ups-protocols/belkinuniversal.html[Belkin Universal UPS] - courtesy of Peter Selinger
Eaton
~~~~~
- Eaton Protocols Library - all official Eaton documents are here, including Powerware, MGE, ...
- Best Fortress protocol - for LI 520, 720, 1020, and 1420 models
- SOLA/Best Power protocol (Phoenixtec) - courtesy of Invensys Energy Systems
MicroDowell
~~~~~~~~~~~
- MicroDowell UPS Serial Protocol v3.3.1 (PDF, 225KB)
MGE
~~~
- MGE Protocols Library - all official MGE documents are here
ONEAC
~~~~~
- ONEAC serial information - two scans
Opti-UPS
~~~~~~~~
- Opti-UPS protocol - more guesswork
Powercom
~~~~~~~~
All these document are officially provided by Powercom
- link:ups-protocols/powercom/Software_USB_communication_controller_BNT_series.doc[USB information for BNT series]
- link:ups-protocols/powercom/Software_USB_communication_controller_IMPERIAL_series_R21.doc[USB information for IMPERIAL series]
- link:ups-protocols/powercom/Software_USB_communication_controller_SKP_series.doc[USB information for SKP series]
- link:ups-protocols/powercom/Software_USB_communication_controller_WOW_series.doc[USB information for WOW series]
PowerKinetics
~~~~~~~~~~~~~
- PowerKinetics MiniCOL protocol - courtesy of PowerKinetics technical support
Standard protocols
~~~~~~~~~~~~~~~~~~
SEC
^^^
- link:ups-protocols/sec.html[SEC protocol] - superset of the US9003, below
- link:ups-protocols/sec-standard.html[SEC standard UPS Communication interface] - 15 scanned pages
- link:us9003.html[US9003 UPS Communication Interface]
SNMP
^^^^
- link:ups-protocols/snmp.html[SNMP]
- link:http://powerquality.eaton.com/Support/Software-Drivers/Downloads/connectivity-firmware/bestpwr2.mib[Best Power MIB]
USB/HID Power Devices Class
^^^^^^^^^^^^^^^^^^^^^^^^^^^
- link:http://www.usb.org/developers/devclass_docs/pdcv10.pdf[USB Usage Tables for HID Power Devices] (offsite PDF, 351K)
Various
~~~~~~~
- link:ups-protocols/megatec.html[Megatec] UPS Protocol

View file

@ -0,0 +1,185 @@
#
# Network UPS Tools website layout (based on AsciiDoc's).
# Three division CSS based layout
#
# Simulated frames using CSS (fixed banner and menu, scrolling content).
# NOTE: This layout does not work with IE6.
#
# +-----------------------------------------------------+
# | #layout-banner |
# +--------------+--------------------------------------+
# | | |
# | | |
# | #layout-menu | #layout-content |
# | | |
# | | |
# | | |
# +--------------+--------------------------------------+
#
# Each of the three divisions is enclosed in a same-named *-box division
# which position and size the layout.
#
# - The #layout-content division is a container for AsciiDoc page documents.
# - Documents rendered in the #layout-content use the standard AsciiDoc
# xhtml11 backend stylesheets.
[specialwords]
#emphasizedwords=(?u)\\?\bNetwork UPS Tools\b
#monospacedwords=(?u)\\?\basciidoc\(1\) (?u)\\?\ba2x\(1\)
[header]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Network UPS Tools - {doctitle}</title>
<meta http-equiv="Content-Type" content="text/html; charset={encoding}" />
<meta name="generator" content="AsciiDoc {asciidoc-version}" />
ifdef::index-only[]
<meta name="description" content="Power Devices support" />
<meta name="keywords" content="Free Software, UPS, Uninterruptible Power Supplies, PDU, Power Distributions Units, Solar Controllers, Power Devices" />
endif::index-only[]
<link rel="stylesheet" href="{stylesdir=css}/{theme={backend}}.css" type="text/css" />
{doctype-manpage}<link rel="stylesheet" href="{stylesdir=.}/{theme={backend}}-manpage.css" type="text/css" />
ifdef::quirks[]
<link rel="stylesheet" href="{stylesdir=css}/{theme={backend}}-quirks.css" type="text/css" />
endif::quirks[]
<link rel="stylesheet" href="{stylesdir=css}/web-layout.css" type="text/css" />
<link rel="shortcut icon" href="faviconut.ico" />
<link rel="icon" href="faviconut.png" />
ifdef::toc[]
<script type="text/javascript">
/*<![CDATA[*/
window.onload = function()\{generateToc({toclevels=2})\}
/*]]>*/
</script>
<script type="text/javascript" src="{scriptsdir=.}/toc.js"></script>
endif::toc[]
ifdef::hcl[]
<script type="text/javascript" src="{scriptsdir=.}/jquery.js"></script>
<script type="text/javascript" src="{scriptsdir=.}/ups_data.js"></script>
<script language="javascript1.7" type="text/javascript" src="{scriptsdir=.}/nut_jquery.js"></script>
endif::hcl[]
<!--[if lte IE 7]>
<link rel="stylesheet" href="{stylesdir=css}/ie-overrides.css" type="text/css" />
<![endif]-->
<!--[if lte IE 6]>
<script type="text/javascript" src="./scripts/filter_png.js"></script>
<![endif]-->
</head>
<body>
<div id="layout-banner-box">
<div id="layout-banner">
<div id="layout-title">Network UPS Tools</div>
<div id="layout-description">Power Devices support</div>
</div>
</div>
<div id="layout-menu-box">
<ul id="layout-menu">
<li><a href="index.html">Home</a></li>
<li><a href="download.html">Download</a></li>
<li><a href="projects.html">Related projects</a></li>
<li><a href="stable-hcl.html">Compatibility</a></li>
<li><a href="documentation.html">Documentation</a></li>
<li><a href="support.html">Support</a></li>
<li><a href="https://alioth.debian.org/projects/nut/">Alioth Forge</a></li>
</ul>
<div id="sponsor"><span>Hosted by<br/></span>
<a href="http://powerquality.eaton.com"><img src="images/eaton-logo.png" alt="Eaton" /></a>
</div>
</div>
<div id="layout-content-box">
<div id="layout-content">
# Article, book header.
ifndef::doctype-manpage[]
<div id="header">
<h1>{doctitle}</h1>
<span id="author">{author}</span><br />
<span id="email"><tt>&lt;<a href="mailto:{email}">{email}</a>&gt;</tt></span><br />
{authored}<span id="revision">version {revnumber}{revdate?,}</span>
{authored}{revdate}
</div>
ifdef::toc[]
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</div>
endif::toc[]
endif::doctype-manpage[]
# Man page header.
ifdef::doctype-manpage[]
<div id="header">
<h1>
{doctitle} Manual Page
</h1>
ifdef::toc[]
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</div>
endif::toc[]
<h2>NAME</h2>
<div class="sectionbody">
<p>{manname} -
{manpurpose}
</p>
</div>
</div>
endif::doctype-manpage[]
[footer]
<div id="footer">
<div id="footer-text">
Version {revision}<br />
Last updated {localdate} {localtime}
</div>
ifdef::badges[]
<div id="footer-badges">
ifdef::textonly[]
Valid <a href="http://validator.w3.org/check?uri=referer">XHTML</a>
and <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a>.
endif::textonly[]
ifndef::textonly[]
<a href="http://www.methods.co.nz/asciidoc/">
<img style="border:0;width:88px;height:31px"
src="images/asciidoc.png"
alt="Powered by AsciiDoc" />
</a>
<a href="http://validator.w3.org/check?uri=referer">
<img style="border:0;width:88px;height:31px"
src="http://www.w3.org/Icons/valid-xhtml11-blue"
alt="Valid XHTML 1.1" height="31" width="88" />
</a>
<a href="http://jigsaw.w3.org/css-validator/check?uri=referer">
<img style="border:0;width:88px;height:31px"
src="http://jigsaw.w3.org/css-validator/images/vcss-blue"
alt="Valid CSS!" />
</a>
<a href="http://www.mozilla.org/products/firefox/">
<img style="border:none; width:110px; height:32px;"
src="http://www.spreadfirefox.com/community/images/affiliates/Buttons/110x32/safer.gif"
alt="Get Firefox!" />
</a>
endif::textonly[]
</div>
endif::badges[]
</div>
</div>
</div>
ifdef::analytics[]
<!-- script type="text/javascript" src="{scriptsdir=.}/ga.js"></script -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-9664272-1");
pageTracker._trackPageview();
} catch(err) {}
</script>
endif::analytics[]
</body>
</html>

19
docs/website/website.txt Normal file
View file

@ -0,0 +1,19 @@
Welcome
=======
The primary goal of the Network UPS Tools (NUT) project is to provide support
for Power Devices, such as Uninterruptible Power Supplies, Power Distribution
Units and Solar Controllers.
NUT provides many control and monitoring link:features.html[features], with a
uniform control and management interface.
More than 100 different manufacturers, and several thousands models are
link:stable-hcl.html[compatible].
This software is the combined effort of many
link:acknowledgements.html[individuals and companies].
News
----
include::news.txt[]