summaryrefslogtreecommitdiffstats
path: root/util/lg
diff options
context:
space:
mode:
Diffstat (limited to 'util/lg')
-rw-r--r--util/lg/Makefile.in43
-rw-r--r--util/lg/README76
-rwxr-xr-xutil/lg/configure991
-rw-r--r--util/lg/configure.in27
-rw-r--r--util/lg/index.html9
-rwxr-xr-xutil/lg/lg.cgi.in783
-rw-r--r--util/lg/lg.conf.in105
-rwxr-xr-xutil/lg/lgform.cgi.in245
-rw-r--r--util/lg/lgnotes.html61
9 files changed, 0 insertions, 2340 deletions
diff --git a/util/lg/Makefile.in b/util/lg/Makefile.in
deleted file mode 100644
index 54b42a6..0000000
--- a/util/lg/Makefile.in
+++ /dev/null
@@ -1,43 +0,0 @@
-PREFIX = @prefix@
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-UTIL_LG_PROGS = @RD_UTIL_LG_PROGS@
-
-DISTDIR=../$(distdir)/lg
-
-all:
-
-install: all
- for file in $(UTIL_LG_PROGS) ; do \
- $(INSTALL) $$file $(PREFIX)/util/lg; \
- done; \
- if test -f $(PREFIX)/util/lg/lg.conf ; then \
- echo "WARNING: *** $(PREFIX)/util/lg/lg.conf exists: installing as lg.conf.new."; \
- echo " *** review lg.conf.new for new/deprecated switches"; \
- $(INSTALL_DATA) lg.conf $(PREFIX)/util/lg/lg.conf.new; \
- else \
- $(INSTALL_DATA) lg.conf $(PREFIX)/util/lg; \
- fi; \
- for file in *README* *.html; do \
- $(INSTALL_DATA) $$file $(PREFIX)/util/lg; \
- done
-
-clean:
-
-distclean: clean
- rm -f Makefile $(UTIL_LG_PROGS) lg.conf
- rm -f config.log config.status
-
-distdir:
- test -d $(DISTDIR) \
- || mkdir $(DISTDIR) \
- || exit 1; \
- chmod 777 $(DISTDIR); \
- for file in Makefile.in configure.in *README* *.html lg.conf.in ; do \
- $(INSTALL_DATA) $$file $(DISTDIR); \
- done; \
- for file in configure $(UTIL_LG_PROGS:=.in) ; do \
- $(INSTALL) $$file $(DISTDIR); \
- done
diff --git a/util/lg/README b/util/lg/README
deleted file mode 100644
index faa4120..0000000
--- a/util/lg/README
+++ /dev/null
@@ -1,76 +0,0 @@
-This is a looking glass based on Ed Kern's which used to be available on
-http://nitrous.digex.net/. This version supports cisco, juniper, and
-foundry, using rancid's [cfj]login to login (so rcmd is not necessary,
-it can use telnet, ssh, or rsh), and has some additional commands
-implemented. There are a few cisco commands where either no juniper or
-foundry equivalent exists or we have not had time to implement yet.
-
-packing list:
-README This file.
-index.html often the default document the server will load, contains
- an html redirect to load lgform.cgi
-lg.conf looking glass configuration file
-lg.cgi work horse of the looking glass
-lgform.cgi front-end form for the looking glass engine
-lgnotes.html user info for the looking glass
-
-the looking glass requires the CGI and LockFile-Simple perl modules.
-these can be retrieved from CPAN, http://www.cpan.org/. CGI's home is
-ftp://ftp-genome.wi.mit.edu/pub/software/WWW/. it also requires
-the POSIX module (for strftime) and Sys::Syslog, which i believe come
-with perl5 and/or are converted with h2ph(1).
-
-basic installation instructions:
-
-The configure and make install process will make variable substitutions
-and install bits in /usr/local/rancid/util/lg (or <prefix>/util/lg).
-
-1) make the scripts/html available to your server (httpd) by
- creating a directory in your server's document root directory
- (apache's httpd.conf "DocumentRoot" variable).
- eg: assuming the default in freebsd's apache pkg
- mkdir /usr/local/www/data/lg
-
- then either:
- - copy the files {lgnotes.html, lg.cgi, lgform.cgi} to
- /usr/local/www/data/lg
- OR
- - create symlinks from /usr/local/www/data/lg to each of {lgnotes.html,
- lg.cgi, lgform.cgi} in /usr/local/rancid/util/lg
-
- note on links: if you use symlinks, you have to configure apache to
- allow following symlinks. eg:
- % cat /usr/local/www/data/lg/.htaccess
- Options FollowSymLinks ExecCGI
-
- note on index.html: index.html is typically the default file loaded
- when a url ends with a '/'. index.html can be used to redirect this
- to lgform.cgi using a netscape meta refresh. Though this is supported
- by many browsers, it is supposedly netscape specific and non-standard.
- In apache, the same thing can be acheived by altering the default
- directory index like this:
-
- % cat /usr/local/www/data/lg/.htaccess
- DirectoryIndex lgform.cgi
-
-2) the LG needs to be able to find and read lg.conf. by default this
- is installed as <PREFIX>/util/lg/lg.conf and the LG will first look in
- its CWD (current working directory) and then <PREFIX>/util/lg/lg.conf if
- it does not exist in the CWD. However the LG_CONF environment variable can
- be used to move it elsewhere.
-
- to get LG_CONF into the enviroment, you can use SetEnvIf in apache's
- httpd.conf. for example:
- SetEnvIf Request_URI "\/lg/.*.cgi" LG_CONF=/usr/local/util/lg/lg.conf
-
-3) edit <PREFIX>/util/lg/lg.conf.
-
-4) set-up cron jobs to rotate the log file and clean out old cache files.
- see LG_CACHE_DIR & LG_LOG in lg.conf. something like (YMMV):
-
- # rotate lookingglass log
- #0 0 * * * cd /usr/local/www/data/lg/tmp; /usr/local/etc/savelog -m 666 -c14 lg.log
- 0 0 * * * cd /usr/local/www/data/lg/tmp; /bin/mv lg.log lg.log.0
- # clean out the lookingglass cache
- 0 0 * * * cd /usr/local/www/data/lg/tmp; /usr/local/bin/find . -type f -maxdepth 1 \( \! -name lg.log\* \) -mtime +1 -exec rm -f {} \;
-
diff --git a/util/lg/configure b/util/lg/configure
deleted file mode 100755
index e41f619..0000000
--- a/util/lg/configure
+++ /dev/null
@@ -1,991 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_default_prefix=/usr/local/rancid
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.13"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
- if test -f $ac_dir/install-sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f $ac_dir/install.sh; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-subdirs="lg"
-
-
-
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:563: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-RD_UTIL_LG_PROGS=$rd_cv_rd_util_lg_progs
-
-
-PERLV_PATH=$ac_cv_path_PERLV_PATH
-
-
-LG_PING_CMD=$rd_cv_lg_ping_cmd
-
-
-ENV_PATH=$ac_cv_env_path
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.13"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile lg.conf $RD_UTIL_LG_PROGS" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@subdirs@%$subdirs%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@RD_UTIL_LG_PROGS@%$RD_UTIL_LG_PROGS%g
-s%@PERLV_PATH@%$PERLV_PATH%g
-s%@LG_PING_CMD@%$LG_PING_CMD%g
-s%@ENV_PATH@%$ENV_PATH%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
- else
- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
- fi
- if test ! -s conftest.s$ac_file; then
- ac_more_lines=false
- rm -f conftest.s$ac_file
- else
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f conftest.s$ac_file"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
- fi
- ac_file=`expr $ac_file + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_cmds`
- fi
-done
-if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile lg.conf $RD_UTIL_LG_PROGS"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
-
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-if test "$no_recursion" != yes; then
-
- # Remove --cache-file and --srcdir arguments so they do not pile up.
- ac_sub_configure_args=
- ac_prev=
- for ac_arg in $ac_configure_args; do
- if test -n "$ac_prev"; then
- ac_prev=
- continue
- fi
- case "$ac_arg" in
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- ;;
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- ;;
- *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
- esac
- done
-
- for ac_config_dir in lg; do
-
- # Do not complain, so a configure script can configure whichever
- # parts of a large source tree are present.
- if test ! -d $srcdir/$ac_config_dir; then
- continue
- fi
-
- echo configuring in $ac_config_dir
-
- case "$srcdir" in
- .) ;;
- *)
- if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :;
- else
- { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; }
- fi
- ;;
- esac
-
- ac_popdir=`pwd`
- cd $ac_config_dir
-
- # A "../" for each directory in /$ac_config_dir.
- ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
-
- case "$srcdir" in
- .) # No --srcdir option. We are building in place.
- ac_sub_srcdir=$srcdir ;;
- /*) # Absolute path.
- ac_sub_srcdir=$srcdir/$ac_config_dir ;;
- *) # Relative path.
- ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;;
- esac
-
- # Check for guested configure; otherwise get Cygnus style configure.
- if test -f $ac_sub_srcdir/configure; then
- ac_sub_configure=$ac_sub_srcdir/configure
- elif test -f $ac_sub_srcdir/configure.in; then
- ac_sub_configure=$ac_configure
- else
- echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2
- ac_sub_configure=
- fi
-
- # The recursion is here.
- if test -n "$ac_sub_configure"; then
-
- # Make the cache file name correct relative to the subdirectory.
- case "$cache_file" in
- /*) ac_sub_cache_file=$cache_file ;;
- *) # Relative path.
- ac_sub_cache_file="$ac_dots$cache_file" ;;
- esac
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
-
- echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
- # The eval makes quoting arguments work.
- if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
- then :
- else
- { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; }
- fi
- fi
-
- cd $ac_popdir
- done
-fi
-
-
-# fix permissions on scripts.
-for file in $RD_UTIL_LG_PROGS; do chmod a+x $file; done
diff --git a/util/lg/configure.in b/util/lg/configure.in
deleted file mode 100644
index 445b74d..0000000
--- a/util/lg/configure.in
+++ /dev/null
@@ -1,27 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT()
-
-AC_CONFIG_SUBDIRS(lg)
-
-dnl default install location
-AC_PREFIX_DEFAULT(/usr/local/rancid)
-
-dnl install program(s)
-AC_PROG_INSTALL
-
-RD_UTIL_LG_PROGS=$rd_cv_rd_util_lg_progs
-AC_SUBST(RD_UTIL_LG_PROGS)
-
-PERLV_PATH=$ac_cv_path_PERLV_PATH
-AC_SUBST(PERLV_PATH)
-
-LG_PING_CMD=$rd_cv_lg_ping_cmd
-AC_SUBST(LG_PING_CMD)
-
-ENV_PATH=$ac_cv_env_path
-AC_SUBST(ENV_PATH)
-
-AC_OUTPUT(Makefile lg.conf $RD_UTIL_LG_PROGS)
-
-# fix permissions on scripts.
-for file in $RD_UTIL_LG_PROGS; do chmod a+x $file; done
diff --git a/util/lg/index.html b/util/lg/index.html
deleted file mode 100644
index 0087a90..0000000
--- a/util/lg/index.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!--
- this is just a redirection page to load lg.cgi - is there a way to
- make the server load a .cgi as it's default document?
- this can also be done with a redirect (which is supposedly more universally
- supported. something like <redirect URL=lgform.cgi>. not sure...i'm not
- a web person. but this works for netscape.
--->
-
-<meta http-equiv=Refresh content="0; URL=lgform.cgi">
diff --git a/util/lg/lg.cgi.in b/util/lg/lg.cgi.in
deleted file mode 100755
index 2921f72..0000000
--- a/util/lg/lg.cgi.in
+++ /dev/null
@@ -1,783 +0,0 @@
-#!@PERLV_PATH@
-## The original original lookingglass s/w was written by Ed Kern. it
-## is a single script and used to be available at http://nitrous.digex.net/
-#
-## Copyright (C) 1997-2001 by Henry Kilmer.
-## All rights reserved.
-##
-## This software may be freely copied, modified and redistributed without
-## fee for non-commerical purposes provided that this copyright notice is
-## preserved intact on all copies and modified copies.
-##
-## There is no warranty or other guarantee of fitness of this software.
-## It is provided solely "as is". The author(s) disclaim(s) all
-## responsibility and liability with respect to this software's usage
-## or its effect upon hardware, computer systems, other software, or
-## anything else.
-#
-# Looking glass
-# vars: query, router, args
-
-BEGIN {
-$me = $0;
-$me =~ s/.*\/(\S+)$/$1/;
-}
-
-use CGI qw/:standard/;
-use POSIX qw(strftime);
-use Sys::Syslog;
-use LockFile::Simple qw(lock trylock unlock);
-
-my($BASEDIR) = "@prefix@";
-my($pingcmd) = "@LG_PING_CMD@";
-
-my($query, $max_time_diff, $cache_dir, $cloginrc, @results);
-my($type, $router_param, $remote_user, $arg, $router, $mfg);
-
-my($LG_CACHE_DIR, $LG_CLOGINRC, $LG_IMAGE, $LG_LOG, $LG_ROUTERDB, $LG_AS_REG);
-my($LG_BGP_RT, $LG_CACHE_TIME, $LG_SINGLE, $LG_STRIP);
-
-if (!defined($ENV{HOME})) { $ENV{HOME} = "."; }
-
-# note: the following functions are duplicated between lgform.cgi and lg.cgi
-# to avoid the need for module inclusion headaches from within a httpd context.
-# it is just easier to be self-contained.
-# SO, ANY CHANGES HERE SHOULD BE REFLECTED IN THE OTHER .cgi.
-
-# logging
-sub dolog
-{
- my($level, $msg) = @_;
-
- if (defined($LG_LOG) && $LG_LOG !~ /\//) {
- openlog($me, "pid", $LG_LOG);
- syslog($level, "%s", $msg);
- closelog;
- } else {
- local(*LOG);
- my($file);
- if (defined($LG_LOG)) {
- $file = $LG_LOG;
- } else {
- $file = "$cache_dir/lg.log";
- }
- # log date, hostname, query, addr
- if (open(LOG, ">>$file") == 0) {
- # stderr, if all else fails
- printf(STDERR "[" . strftime("%a %b %e %H:%M:%S %Y", gmtime) .
- "] could not open log file $file: $!\n");
- printf(STDERR $msg);
- } else {
- printf(LOG $msg);
- close(LOG);
- }
- }
- return;
-}
-# read LG configuration file
-sub readconf
-{
- my($conffile, $cmds);
- local(*CONF);
- if (defined($env{LG_CONF})) {
- $conffile = $env{LG_CONF};
- } elsif (-e "lg.conf") {
- $conffile = "lg.conf";
- } else {
- $conffile = "$BASEDIR/util/lg/lg.conf";
- }
-
- if (! -f $conffile) {
- return;
- }
-
- if (open(CONF, "< $conffile")) {
- while (<CONF>) {
- next if (/^\s*(#|$)/);
- $cmds .= $_;
- }
- close(CONF);
- eval $cmds;
- } else {
- printf(STDERR "ERROR: couldn\'t open the configuration file: $conffile: $!\n");
- exit(1);
- }
-
- return;
-}
-# read router.db file
-sub readrouters
-{
- my($rtrdb);
- local(*RTR);
-
- if (defined($LG_ROUTERDB)) {
- $rtrdb = $LG_ROUTERDB;
- } else {
- $rtrdb = "$BASEDIR/util/lg/router.db";
- }
-
- if (! -f $rtrdb) {
- my(@dirs, $dir);
- # if the router.db file does not exist, try to compile the list from
- # the rancid group router.db files.
- local(*DIR);
- if (! opendir(DIR, $BASEDIR)) {
- dolog(LOG_ERR, "ERROR: couldn\'t read $BASEDIR: $!\n");
- } else {
- while ($dir = readdir(DIR)) {
- next if ($dir =~ /^(\.|\.\.|CVS|bin|logs|util)$/);
- push(@dirs, $dir) if (-d "$BASEDIR/$dir");
- }
- closedir(DIR);
-
- foreach $dir (@dirs) {
- if (! opendir(DIR, "$BASEDIR/$dir")) {
- dolog(LOG_ERR, "ERROR: couldn\'t read $BASEDIR/$dir: $!\n");
- next;
- }
- closedir(DIR);
- next if (! -f "$BASEDIR/$dir/router.db");
- if (open(RTR, "< $BASEDIR/$dir/router.db")) {
- while (<RTR>) {
- next if (/^\s*(#|$)/);
- # fqdn:mfg:state
- @record = split('\:', $_);
- next if ($record[2] !~ /up/i || $record[1] !~ /(cisco|foundry|juniper)/);
- push(@rtrlist, join(':', ($record[0], $record[1])));
- $rtrlabels{join(':', ($record[0], $record[1]))} = $record[0];
- }
- close(RTR);
- } else {
- dolog(LOG_ERR, "ERROR: couldn\'t open the router.db file: $BASEDIR/$dir/router.db: $!\n");
- }
- }
- }
- } else {
- if (open(RTR, "< $rtrdb")) {
- while (<RTR>) {
- next if (/^\s*(#|$)/);
- # fqdn:mfg:state
- @record = split('\:', $_);
- next if ($record[2] !~ /up/i || $record[1] !~ /(cisco|foundry|juniper)/);
- push(@rtrlist, join(':', ($record[0], $record[1])));
- $rtrlabels{join(':', ($record[0], $record[1]))} = $record[0];
- }
- close(RTR);
- } else {
- dolog(LOG_ERR, "ERROR: couldn\'t open the router.db file: $rtrdb: $!\n");
- exit(1);
- }
- }
-
- return;
-}
-
-# the functions remaining are particular to lg.cgi.
-
-# return true if $router is a member of @rtrlist
-sub arraymember {
- my($rtrlist) = shift;
- my($router) = shift;
- my($r);
-
- foreach $r (@$rtrlist) {
- $r = (split(':', $r))[0];
- return(1) if ($r eq $router);
- }
-
- return(0);
-}
-# check reachability and lock file before attempting to connect to device
-# return non-zero on error.
-sub DoRsh
-{
- my ($router, $mfg, $cmd, $arg) = @_;
- my($ctime) = time();
- my($val);
-
- my($lckobj) = LockFile::Simple->make(-delay => $lock_int,
- -max => $max_lock_wait, -hold => $max_lock_hold);
-
- if ($pingcmd =~ /\d$/) {
- `$pingcmd $router`;
- } else {
- `$pingcmd $router 56 1`;
- }
- if ($?) {
- push(@results, "$router is unreachable. Try again later.\n");
- print @results;
- return(-1);
- }
- if (! $lckobj->lock("$cache_dir/$router")) {
- push(@results, "$router is busy. Try again later.\n");
- print @results;
- return(-1);
- }
- $val = &DoCmd($router, $mfg, $cmd, $arg);
- $lckobj->unlock("$cache_dir/$router");
- return ($val);
-}
-# run commands on the router. return non-zero on error.
-sub DoCmd
-{
- my($rtr, $mfg, $cmd, $arg) = @_;
- local(*CMD);
-
- if ($mfg =~ /foundry/i) {
- $cmd = $foundryCmd{$type};
- open(CMD, "sh -c \"flogin -f $cloginrc -c \'$cmd $arg\' $rtr\" 2>&1 |");
- } elsif ($mfg =~ /juniper/i) {
- $cmd = $juniperCmd{$type};
- open(CMD, "sh -c \"jlogin -f $cloginrc -c \'$cmd $arg\' $rtr\" 2>&1 |");
- } else {
- $cmd = $ciscoCmd{$type};
- open(CMD, "sh -c \"clogin -noenable -f $cloginrc -c \'$cmd $arg\' $rtr\" 2>&1 |");
- }
- while (<CMD>) {
- tr/\015//d;
- if (/^error:/i) {
- dolog(LOG_ERR, $_);
- if ($LG_STRIP) { undef(@results); }
- push(@results, $_);
- print @results;
- return(-1);
- }
- push(@results, $_);
- if (/$cmd/) {
- ($prompt) = /^(\S*)[\#>]/;
- if ($LG_STRIP) {
- undef(@results);
- } else {
- print @results;
- }
- last;
- }
- }
-
- while (<CMD>) {
- last if /^$prompt[\#>]/;
- tr/\015//d;
- print $_;
- push(@results, $_);
- }
- while (<CMD>) {}
- close(CMD);
-
- return(0);
-}
-# Subroutine: Error
-# Usage: &Error("msg"));
-# Description: displays an error and exits.
-##
-sub Error {
- my($msg) = @_;
-
- my($q) = new CGI();
- print $q->header;
- print $q->start_html("Looking Glass Error");
-
- print "<BODY>";
-
- # add the company image, LG_IMAGE
- print $LG_IMAGE;
-
-
- print <<EOF ;
-<br>
-<B><FONT SIZE=+2>Looking Glass Error:</FONT></B>
-<p>
-$msg
-<br>
-</body>
-EOF
-
- print $q->end_html;
- exit(0);
-}
-# convert a ipv4 address mask to prefix length
-sub mask2len {
- my($mask) = shift;
- my($a, $b, $c, $d) = split('\.', $mask);
- my($p, $len);
-
- $p = ~ (($a << 24) + ($b << 16) + ($c << 8) + $d);
- for ($len = 32; $p > 0; $len --) {
- $p = $p >> 1;
- }
-
- return($len);
-}
-# end the page and exit.
-sub end_page {
-
- print <<END ;
- </pre>
- <!--- end page content --->
- </body>
-END
-
- print $query->end_html;
- exit(0);
-}
-# start the page and log the transaction...
-sub start_page {
- my($mfg) = @_;
- my($cmd);
-
- my($timestr) = strftime("%a %b %e %H:%M:%S %Y", gmtime);
- dolog(LOG_INFO, sprintf("%s %s %s %s\n",
- $ENV{REMOTE_HOST}, $ENV{REMOTE_ADDR}, $ENV{REMOTE_USER},
- "- - [$timestr] $type $router $arg"));
- print $query->header;
- print $query->start_html("Looking Glass Results - $router");
-
- $timestr = strftime("%a %b %e %H:%M:%S %Y %Z", gmtime);
-
- # add the company image, LG_IMAGE
- print $LG_IMAGE;
-
- if ($mfg =~ /foundry/i) {
- $cmd = $foundryCmd{$type};
- } elsif ($mfg =~ /juniper/i) {
- $cmd = $juniperCmd{$type};
- } else {
- $cmd = $ciscoCmd{$type};
- }
-
- print <<HEAD ;
- </b></font>
- <font size=+3><b><h1>Looking Glass Results - $router
- </b></h1></font>
- <hr>
-
- <center>
- <b>Date:</b> $timestr
- <p>
- <b>Query:</b> $cmd
- <br>
-HEAD
-
- if ($arg) { print "<b>Argument(s):</b> $arg\n"; }
- print "</center>\n";
-
- print <<END ;
- <!--$cached-->
- </center>
- <p>
- <pre>
-END
-
- return;
-} #end sub start_page
-
-
-# Main()
-# read the configuration file if it exists.
-readconf();
-
-## The script will now cache the results as simple files in the $cache_dir,
-## named after the type of query (queries must, of course, be one word no
-## spaces). Modify $max_time_diff to set the lifetime for each cache.
-## Currently, cache lifetime is the same for all queries.
-# for most web servers, cache_dir must be writable by uid nobody
-if (defined($LG_CACHE_DIR)) {
- $cache_dir = $LG_CACHE_DIR;
-} else {
- $cache_dir = "./tmp";
-}
-
-# read routers table to get @rtrlist
-readrouters();
-
-# when to display cache? max time difference (in seconds)
-if (defined($LG_CACHE_TIME)) {
- $max_time_diff = $LG_CACHE_TIME;
-} else {
- $max_time_diff = "600" ;
-}
-
-# max seconds to wait for a 'router' lock to free up
-$max_lock_wait = 30;
-$lock_int = 5;
-$max_lock_hold = 300;
-
-# clogin setup
-if (defined($LG_CLOGINRC)) {
- $cloginrc = $LG_CLOGINRC;
-} else {
- $cloginrc = "$BASEDIR/.cloginrc";
-}
-
-$query = new CGI;
-
-# get form data and validate
-$type = ($query->param('query'))[0];
-$router_param = ($query->param('router'))[0];
-$remote_user = $ENV{REMOTE_USER};
-$arg = ($query->param('args'))[0];
-# handle multiple args
-$arg =~ s/["'`]//g; # these are BS in any arg for any query
-@arg = split(' ', $arg);
-
-# verify router, commands, arguments, etc.
-($router, $mfg) = split(':', $router_param);
-if (!defined($type) || !defined($router)) {
- $results[0] = "You must at least choose a Query and a router. Try buying a clue.\n";
- &Error("You must at least choose a Query and a router. Try buying a clue.\n");
-}
-
-if (! arraymember(\@rtrlist, $router)) {
- my($timestr) = strftime("%a %b %e %H:%M:%S %Y", gmtime);
- dolog(LOG_WARNING, sprintf("%s %s %s %s\n",
- $ENV{REMOTE_HOST}, $ENV{REMOTE_ADDR}, $ENV{REMOTE_USER},
- "- - [$timestr] lg.cgi: attempt to access $router\n"));
- Error("access to $router not permitted");
-}
-
-# conversion of command "type" passed from lgform.cgi to the vendor's syntax.
-%ciscoCmd = (
- #acl => "show access-list",
- #aspath => "show ip as-path-access-list",
- #communitylist => "show ip community-list",
- damp => "show ip bgp dampened-paths",
- framerelay => "show frame-relay pvc",
- interface => "show interface",
- intbrief => "show ip interface", # switch in {interface}
- log => "show logging",
- mbgp => "show ip mbgp",
- mbgpsum => "show ip mbgp summary",
- mneighbor => "show ip bgp neighbor",
- neighbor => "show ip bgp neighbor",
- regex => "show ip bgp regex",
- route => "show ip route",
- routemap => "show route-map",
- ping => "ping",
- prefix => "show ip bgp",
- prefixlist => "show ip prefix-list",
- summary => "show ip bgp summary",
- trace => "traceroute"
- );
-%foundryCmd = (
- #acl => "show access-list",
- #aspath => "show ip as-path-access-list",
- #communitylist => "show ip community-list",
- damp => "show ip bgp dampened-paths",
- #framerelay => "show frame-relay pvc", # no frame relay
- interface => "show interface",
- log => "show log",
- #mbgp => "show ip mbgp",
- #mbgpsum => "show bgp summary",
- #mneighbor => "show ip bgp neighbor",
- neighbor => "show ip bgp neighbor",
- #regex => "show ip bgp aspath-regex",
- route => "show ip route",
- routemap => "show route-map",
- ping => "ping",
- prefix => "show ip bgp",
- prefixlist => "show ip prefix-list",
- summary => "show ip bgp summary",
- trace => "traceroute"
- );
-%juniperCmd = (
- #acl => "show access-list",
- #aspath => "show ip as-path-access-list",
- #communitylist => "show ip community-list",
- damp => "show route damping suppressed terse table inet.0",
- framerelay => "show frame-relay pvc",
- interface => "show interface",
- log => "show log messages",
- mbgp => "show route table inet.2 terse",
- mbgpsum => "show bgp summary",
- mneighbor => "show bgp neighbor",
- neighbor => "show bgp neighbor",
- regex => "show route table inet.0 aspath-regex",
- route => "show route table inet.0 terse",
- routemap => "show policy",
- ping => "ping rapid count 5",
- prefix => "show route table inet.0",
- prefixlist => "show policy",
- summary => "show bgp summary",
- trace => "traceroute"
- );
-%cmdDisp = (
- #acl => "show access-list",
- #aspath => "show ip as-path-access-list",
- #communitylist => "show ip community-list",
- damp => "show ip bgp dampened-paths",
- framerelay => "show frame-relay pvc",
- interface => "show interface",
- log => "show logging",
- mbgp => "show ip mbgp",
- mbgpsum => "show ip mbgp summary",
- mneighbor => "show ip mbgp neighbor",
- neighbor => "show ip bgp neighbor",
- regex => "show ip bgp regex",
- route => "show ip route",
- routemap => "show route-map",
- ping => "ping",
- prefix => "show ip bgp",
- prefixlist => "show ip prefix-list",
- summary => "show ip bgp summary",
- trace => "traceroute"
- );
-
-# not all cmds/queries are implemented for junipers
-if ($mfg =~ /juniper/) {
- if (! defined($juniperCmd{$type})) {
- Error("$cmdDisp{$type} not implemented for junipers. sorry.\n");
- }
- $cmd = $juniperCmd{$type};
-} elsif ($mfg =~ /foundry/) {
- if(! defined($foundryCmd{$type})) {
- Error("$cmdDisp{$type} not implemented for foundrys. sorry.\n");
- }
- $cmd = $foundryCmd{$type};
-} else {
- if(! defined($ciscoCmd{$type})) {
- Error("$cmdDisp{$type} not implemented for cisco. sorry.\n");
- }
- $cmd = $ciscoCmd{$type};
-}
-
-if ($type eq "prefix" || $type eq "mbgp" || $type eq "route" ) {
- if ($arg[0] !~ /^\d+\.\d+\.\d+\.\d+$/) {
- &Error("The IP address \"$arg[0]\" is not valid and lacking an address would over-burden our router.\n");
- } elsif (defined($arg[1]) && $arg[1] !~ /^\d+\.\d+\.\d+\.\d+$/) {
- &Error("The IP netmask \"$arg[1]\" is not valid.\n");
- }
- if ($mfg =~ /juniper/i && defined($arg[1])) {
- $arg = $arg[0] . "/" . mask2len($arg[1]);
- }
-} elsif ($type eq "framerelay") {
- if ($mfg =~ /juniper/) {
- &Error("Juniper does not have a show frame-relay pvc command. " .
- "Use show interface.\n");
- }
- if ($arg[0] > 15 && $arg[0] < 1024) {
- $arg = $arg[0];
- } else {
- undef($arg);
- }
-} elsif ($type eq "interface") {
- if ($mfg =~ /(cisco|foundry)/) {
- if ($arg[0] !~ /^b[^ ]+[0-9]/i && $arg[0] =~ /^b/i) {
- $type = "intbrief";
- $arg = "brief";
- } else {
- $arg = $arg[0];
- }
- } elsif ($mfg =~ /juniper/) {
- my($optind) = 0;
- # arg 0 may be an intf name or a display option, but there can
- # only be 2 args
- $arg = "";
- while ($optind <= $#arg && $optind < 2) {
- $arg[$optind] =~ s/brief/terse/;
- if ($arg[$optind] =~ /^([a-z0-9]{2}\-\d+\/\d+\/\d+(:\d+)?)/i) {
- $arg .= " $1";
- } elsif ($arg[$optind] =~ /^det/i) {
- $arg .= " detail";
- } elsif ($arg[$optind] =~ /^ter/i) {
- $arg .= " terse";
- } elsif ($arg[$optind] =~ /^ext/i) {
- $arg .= " extensive";
- }
- $optind += 1;
- }
- }
-} elsif ($type eq "log") {
- if ($arg[0] =~ /^\s*\|?$/) {
- shift(@arg);
- }
- $arg[0] =~ s/^\s*\|?//;
- if ($arg[0] !~ /^\s*$/) {
- if ($mfg =~ /cisco/i) {
- $arg = " | include " . join(' ', @arg);
- } elsif ($mfg =~ /juniper/i) {
- $arg = " | match \"" . join(' ', @arg) . "\"";
- } else {
- undef($arg);
- }
- } else {
- undef($arg);
- }
-} elsif ($type eq "ping" || $type eq "trace") {
- if ($arg[0] !~ /^\d+\.\d+\.\d+\.\d+$/) {
- if ($arg[0] !~ /^[A-Za-z0-9._-]+$/) {
- &Error("That argument ($arg[0]) is not valid.\n");
- }
- }
- $arg = $arg[0];
-} elsif ($type eq "aspath" || $type eq "communitylist") {
- if ($arg[0] !~ /^\d+$/ || ($arg[0] < 1 && $arg[0] > 199)) {
- &Error("That argument ($arg[0]) is not valid.\n");
- }
- $arg = $arg[0];
-} elsif ($type eq "acl") {
- if ($arg[0] !~ /^\d+$/ || ($arg[0] < 100 && $arg[0] > 199) ||
- ($arg[0] < 1300 && $arg[0] > 2699)) {
- &Error("That argument ($arg[0]) is not valid.\n");
- }
- $arg = $arg[0];
- # don't show the jewels
- # XXX: this error msg is useless, but show acl is un-implemented.
- &Error($mfg) if ($arg == 98 || $arg == 99);
-} elsif ($type eq "prefixlist" || $type eq "routemap") {
- if ($arg[0] !~ /^[0-9A-Za-z][^\s\"]*$/) {
- &Error("That argument ($arg[0]) is not valid.\n");
- }
- $arg = $arg[0];
-} elsif ($type eq "regex") {
- $arg = $arg[0];
- if ($#arg >= 1) {
- for ($n = 1; $n <= $#arg; $n++) { $arg .= " " . $arg[$n]; }
- }
- # remove leading/trailing whitespace
- $arg =~ s/^\s*//; $arg =~ s/\s*$//;
- if ($arg !~ /^[0-9_ ^.*+?[\])\(-]*\$?$/ || $arg =~ /^\s*$/) {
- &Error("That argument ($arg[0]) is not valid.\n");
- }
- # pathetic excuses for lookups
- if ($arg =~ /^[_.* ^]*(\*|1|701|1239|1280|1740|3561|5462|10303)+[_\$]*$/ ||
- $arg =~ /^[_.* ^]*(1|701|1239|1280|1740|3561|5462|10303)+[_ .]*[\[*.]/) {
- &Error("Get real. Such a query has potential to over-burden our " .
- "router.\nLook that up on your own router.\n");
- }
- if ($mfg =~ /juniper/) {
- $arg =~ s/_/ /g;
- # pre-junos 4.4 do not allow anchors
- if ($arg =~ /\^\$/) {
- $arg =~ "()";
- } else {
- $arg =~ s/[\$^]/ /g;
- }
- $arg = "\"$arg\"";
- }
- # escape any ()s
- $arg =~ s/([\(\)])/\\$1/g;
-} elsif ($type eq "neighbor") {
- if ($arg[0] !~ /^\d+\.\d+\.\d+\.\d+$/) {
- if ($arg[0] !~ /([A-Za-z0-9-]*.)*[A-Za-z0-9-]*.(com|edu|net|org)/) {
- &Error("That argument ($arg[0]) is not valid.\n");
- }
- }
- $arg = $arg[0];
- if (defined($arg[1]) && $arg[1] =~ /^(a|ro|f|re)/) {
- if ($mfg =~ /juniper/) {
- if ($arg[1] =~ /^a/) {
- if (defined($LG_BGP_RT)) {
- $cmd = "show route table inet.0 all advertising-protocol ".
- "bgp";
- }
- } elsif ($arg[1] =~ /^f/) {
- if (defined($LG_BGP_RT)) {
- $cmd = "show route damping table inet.0 all ".
- "receive-protocol bgp";
- }
- } elsif ($arg[1] =~ /^r/) {
- if (defined($LG_BGP_RT)) {
- $cmd = "show route table inet.0 all receive-protocol bgp";
- }
- }
- } else {
- if ($arg[1] =~ /^a/) {
- if (defined($LG_BGP_RT)) { $arg .= " advertised-routes"; }
- } elsif ($arg[1] =~ /^f/) {
- $arg .= " flap-statistics";
- } elsif ($arg[1] =~ /^ro/) {
- if (defined($LG_BGP_RT)) { $arg .= " routes"; }
- } elsif ($arg[1] =~ /^re/) {
- if (defined($LG_BGP_RT)) { $arg .= " received-routes"; }
- }
- }
- }
-} elsif ($type eq "mneighbor") {
- if ($arg[0] !~ /^\d+\.\d+\.\d+\.\d+$/) {
- if ($arg[0] !~ /([A-Za-z0-9-]*.)*[A-Za-z0-9-]*.(com|edu|net|org)/) {
- &Error("That argument ($arg[0]) is not valid.\n");
- }
- }
- $arg = $arg[0];
- if (defined($arg[1]) && $arg[1] =~ /^(a|ro|f|re)/) {
- if ($mfg =~ /juniper/) {
- if ($arg[1] =~ /^a/) {
- $cmd .= " advertised-routes";
- } elsif ($arg[1] =~ /^f/) {
- $cmd .= " flap-statistics";
- } elsif ($arg[1] =~ /^ro/) {
- $cmd .= " routes";
- } elsif ($arg[1] =~ /^re/) {
- $cmd .= " received-routes";
- }
- } else {
- if ($arg[1] =~ /^a/) {
- $arg .= " advertised-routes";
- } elsif ($arg[1] =~ /^f/) {
- $arg .= " flap-statistics";
- } elsif ($arg[1] =~ /^ro/) {
- $arg .= " routes";
- } elsif ($arg[1] =~ /^re/) {
- $arg .= " received-routes";
- }
- }
- }
-} elsif ($type eq "damp" || $type eq "summary" || $type eq "mbgpsum") {
- undef($arg);
-}
-
-# make stdout unbuffered, so result page streams.
-$| = 1;
-start_page();
-
-# cache the following
-if ($type eq "summary" || $type eq "mbgpsu" || $type eq "damp"
- || $type eq "log") {
- if (!$arg) {
- # cache requests with no addr/argument
- local(*CACHE);
-
- my($file) = "$cache_dir/$type" ;
- $file =~ s/\s+/_/g;
- $file .= "_$router";
-
- if (-e $file) {
- # see if cache exists
- @stat = stat($file);
- $ftime = $stat[9];
- $dtime = time() - $stat[9];
-
- # see if we are within cache time
- if ($dtime <= $max_time_diff) {
- if (open(CACHE, "<$file") == 0) {
- dolog(LOG_ERR, "couldnt open cache file $file: $!\n");
- } else {
- print "<b>From cache (number of seconds old (max " .
- "$max_time_diff)):</b> $dtime\n\n";
- while (<CACHE>) { print $_; }
- close(CACHE);
- &end_page();
- }
- }
- }
-
- # else, execute command and save to a new cache file
- if (! &DoRsh($router, $mfg, $cmd, $arg)) {
- if (open(CACHE, ">$file") == 0) {
- dolog(LOG_ERR, "couldnt create cache file $file: $!\n");
- exit(1);
- } else {
- printf(CACHE "@results");
- close(CACHE);
- }
- }
- } else {
- &DoRsh($router, $mfg, $cmd, $arg);
- }
- &end_page();
-} else {
- &DoRsh($router, $mfg, $cmd, $arg);
- &end_page();
-}
-
-exit(0);
diff --git a/util/lg/lg.conf.in b/util/lg/lg.conf.in
deleted file mode 100644
index d13d9fd..0000000
--- a/util/lg/lg.conf.in
+++ /dev/null
@@ -1,105 +0,0 @@
-# configuration file for the looking glass
-#
-# note: these are perl statements! mind the syntax
-#
-# adjust the path to find [cfj]login, telnet, ssh, rsh, etc.
-#
-$ENV{PATH}="@prefix@/bin:@ENV_PATH@";
-#
-#
-# LG_CACHE_DIR is the location of the cache directory. the LG uses this
-# to hold lock files, the default log file (lg.log), and o/p from
-# commands that can be very verbose. it defaults to "tmp",
-# ie: relative to the directory where lg.cgi runs in your
-# server's (httpd) DocumentRoot (eg: /usr/local/www/data/lg/tmp).
-#
-#$LG_CACHE_DIR="./tmp";
-#
-#
-# LG_CLOGINRC is the .cloginrc that the LG should use. it defaults to
-# <prefix>/.cloginrc. note that the .cloginrc must be readable
-# by the user or group (UID / GID) that will be running the CGI
-# and the clogin (and friends) will not allow a world readable
-# .cloginrc. this is normally the user the server (httpd) runs
-# under.
-#
-#$LG_CLOGINRC="@prefix@/.cloginrc";
-#
-#
-# LG_IMAGE is the filename of an image you wish to appear at the top
-# of the LG pages. it can also be other html goo, like
-# the first example. this is just handed to print, so \n and
-# the like will work.
-#
-#$LG_IMAGE="<img src=/icons/rancid.gif hspace=0>\n <font size=+2>FOO</font>";
-#$LG_IMAGE="<img src=rancid.gif hspace=0>\n";
-#
-#
-# LG_INFO is info in html format to output at the bottom of main form.
-# it might be local contact information, disclaimer, etc. this
-# is just handed to print, so \n and the like will work.
-#
-#$LG_INFO="For support, contact <a href=\"mailto:webmaster\@localhost\">webmaster</a>";
-#
-#
-# LG_LOG is either a FQPN (fully qualified path name) or the syslog
-# facility to use for logging. if not defined, the LG
-# will log to LG_CACHE_DIR/lg.log. possible syslog facility
-# values are from the facility codes in /usr/include/syslog.h
-# minus the 'LOG_' and lower case.
-#
-#$LG_LOG="$LG_CACHE_DIR/lg.log";
-#$LG_LOG="/tmp/lg.log";
-#$LG_LOG="local0";
-#
-#
-# LG_ROUTERDB is the router.db in rancid's router.db format, listing
-# the routers and their platform that should be available to
-# the looking glass. if defined, the LG will use this variable
-# to find the router.db. if not defined, it will look for it
-# at <prefix>/util/lg/router.db. if it does not exist, it will
-# build the list from <prefix>/*/router.db (ie: the router.db's
-# from all your groups). note that if you choose this last
-# option; the group directories and router.db files' modes may
-# have to be changed, depending upon the UID/GID of the user
-# your server (httpd) runs under, since rancid's default mask
-# is 007 (see bin/env). routers not marked 'up' are skipped.
-#
-#$LG_ROUTERDB="@prefix@/util/lg/router.db";
-#
-#
-# Options:
-#
-# LG_AS_REG *** not implemented.
-#
-#@LG_AS_REG=();
-#
-#
-# LG_BGP_RT allows a few bgp commands which can produce long output (heavy
-# router load), such as sh ip bgp neighbor <ip> advertised-routes
-# for a transit customer, sh ip b neigh <ip> received-routes for
-# a transit provider.
-#
-#$LG_BGP_RT=1
-#
-#
-# LG_CACHE_TIME is the number of seconds the LG should cache o/p from certain
-# commands; those that tend to produce a lot of o/p, such as
-# 'show ip bgp dampened-paths'. it defaults to 600 seconds
-# (10 minutes).
-#
-#$LG_CACHE_TIME=600;
-#
-#
-# LG_SINGLE serializes and limits queries per-router to one at a time via
-# per-router lock files.
-#
-#$LG_SINGLE=0;
-#
-# $LG_STRIP strips login o/p from the looking glass results. Expect
-# occassionally screws up disabling echo when passwords are
-# entered (NOTE SECURITY CONCERN). However, this o/p can be
-# very useful for debugging clogin problems.
-#
-$LG_STRIP=1;
-#
diff --git a/util/lg/lgform.cgi.in b/util/lg/lgform.cgi.in
deleted file mode 100755
index 97a0c71..0000000
--- a/util/lg/lgform.cgi.in
+++ /dev/null
@@ -1,245 +0,0 @@
-#!@PERLV_PATH@
-## Copyright (C) 1997-2001 by Henry Kilmer.
-## All rights reserved.
-##
-## This software may be freely copied, modified and redistributed without
-## fee for non-commerical purposes provided that this copyright notice is
-## preserved intact on all copies and modified copies.
-##
-## There is no warranty or other guarantee of fitness of this software.
-## It is provided solely "as is". The author(s) disclaim(s) all
-## responsibility and liability with respect to this software's usage
-## or its effect upon hardware, computer systems, other software, or
-## anything else.
-#
-# lgform.cgi - Looking glass front-end
-# produces html form for calling lg.cgi
-
-use CGI qw/:standard/;
-
-my(@rtrlist, %rtrlabels);
-my($BASEDIR) = "@prefix@";
-
-# note: the following functions are duplicated between lgform.cgi and lg.cgi
-# to avoid the need for module inclusion headaches from within a httpd context.
-# it is just easier to be self-contained.
-# SO, ANY CHANGES HERE SHOULD BE REFLECTED IN THE OTHER .cgi.
-
-# logging
-sub dolog
-{
- my($level, $msg) = @_;
-
- if (defined($LG_LOG) && $LG_LOG !~ /\//) {
- openlog($me, "pid", $LG_LOG);
- syslog($level, "%s", $msg);
- closelog;
- } else {
- local(*LOG);
- my($file);
- if (defined($LG_LOG)) {
- $file = $LG_LOG;
- } else {
- $file = "$cache_dir/lg.log";
- }
- # log date, hostname, query, addr
- if (open(LOG, ">>$file") == 0) {
- # stderr, if all else fails
- printf(STDERR "[" . strftime("%a %b %e %H:%M:%S %Y", gmtime) .
- "] could not open log file $file: $!\n");
- printf(STDERR $msg);
- } else {
- printf(LOG $msg);
- close(LOG);
- }
- }
- return;
-}
-# read LG configuration file
-sub readconf
-{
- my($conffile, $cmds);
- local(*CONF);
- if (defined($env{LG_CONF})) {
- $conffile = $env{LG_CONF};
- } elsif (-e "lg.conf") {
- $conffile = "lg.conf";
- } else {
- $conffile = "$BASEDIR/util/lg/lg.conf";
- }
-
- if (! -f $conffile) {
- return;
- }
-
- if (open(CONF, "< $conffile")) {
- while (<CONF>) {
- next if (/^\s*(#|$)/);
- $cmds .= $_;
- }
- close(CONF);
- eval $cmds;
- } else {
- printf(STDERR "ERROR: couldn\'t open the configuration file: $conffile: $!\n");
- exit(1);
- }
-
- return;
-}
-# read router.db file
-sub readrouters
-{
- my($rtrdb);
- local(*RTR);
-
- if (defined($LG_ROUTERDB)) {
- $rtrdb = $LG_ROUTERDB;
- } else {
- $rtrdb = "$BASEDIR/util/lg/router.db";
- }
-
- if (! -f $rtrdb) {
- my(@dirs, $dir);
- # if the router.db file does not exist, try to compile the list from
- # the rancid group router.db files.
- local(*DIR);
- if (! opendir(DIR, $BASEDIR)) {
- dolog(LOG_ERR, "ERROR: couldn\'t read $BASEDIR: $!\n");
- } else {
- while ($dir = readdir(DIR)) {
- next if ($dir =~ /^(\.|\.\.|CVS|bin|logs|util)$/);
- push(@dirs, $dir) if (-d "$BASEDIR/$dir");
- }
- closedir(DIR);
-
- foreach $dir (@dirs) {
- if (! opendir(DIR, "$BASEDIR/$dir")) {
- dolog(LOG_ERR, "ERROR: couldn\'t read $BASEDIR/$dir: $!\n");
- next;
- }
- closedir(DIR);
- next if (! -f "$BASEDIR/$dir/router.db");
- if (open(RTR, "< $BASEDIR/$dir/router.db")) {
- while (<RTR>) {
- next if (/^\s*(#|$)/);
- # fqdn:mfg:state
- @record = split('\:', $_);
- next if ($record[2] !~ /up/i || $record[1] !~ /(cisco|foundry|juniper)/);
- push(@rtrlist, join(':', ($record[0], $record[1])));
- $rtrlabels{join(':', ($record[0], $record[1]))} = $record[0];
- }
- close(RTR);
- } else {
- dolog(LOG_ERR, "ERROR: couldn\'t open the router.db file: $BASEDIR/$dir/router.db: $!\n");
- }
- }
- }
- } else {
- if (open(RTR, "< $rtrdb")) {
- while (<RTR>) {
- next if (/^\s*(#|$)/);
- # fqdn:mfg:state
- @record = split('\:', $_);
- next if ($record[2] !~ /up/i || $record[1] !~ /(cisco|foundry|juniper)/);
- push(@rtrlist, join(':', ($record[0], $record[1])));
- $rtrlabels{join(':', ($record[0], $record[1]))} = $record[0];
- }
- close(RTR);
- } else {
- dolog(LOG_ERR, "ERROR: couldn\'t open the router.db file: $rtrdb: $!\n");
- exit(1);
- }
- }
-
- return;
-}
-
-# Main()
-# read the configuration file if it exists.
-readconf();
-
-$query = new CGI;
-
-print $query->header;
-print $query->start_html("LookingGlass form");
-
-print "<BODY>";
-
-# add the company image, LG_IMAGE
-print $LG_IMAGE;
-
-print <<HEAD ;
-<br>
-<B><FONT SIZE=+2>Looking Glass</FONT></B>
-<br>
-<hr>
-HEAD
-
-# start table, etc here
-print <<DOTABLE ;
-<form action=lg.cgi method=GET>
-<center>
-<table border cellspacing=0 width=575 align=center>
-
-DOTABLE
-
-# available query types here
-print <<QTYPES ;
-<tr valign=top>
- <TD><B>Query:</B>
-<dd><input type=radio name="query" value="framerelay">show frame-relay pvc [DLCI]</DD>
-<dd><input type=radio name="query" value="interface">show interface &lt;interface&gt;</DD>
-<dd><input type=radio name="query" value="prefix">show ip bgp &lt;prefix&gt; [netmask]</DD>
-<dd><input type=radio name="query" value="neighbor">show ip bgp neighbor &lt;IP_addr&gt;</DD>
-<dd><input type=radio name="query" value="regex">show ip bgp regex &lt;reg_exp&gt;</DD>
-<dd><input type=radio name="query" value="summary">show ip bgp summary</DD>
-<dd><input type=radio name="query" value="damp">show ip bgp dampened-paths</DD>
-<dd><input type=radio name="query" value="prefixlist">show ip prefix-list &lt;list_name&gt;</DD>
-<dd><input type=radio name="query" value="route">show ip route &lt;prefix&gt; [netmask]</DD>
-<dd><input type=radio name="query" value="routemap">show route-map &lt;map_name&gt;</DD>
-<dd><input type=radio name="query" value="mbgp">show ip mbgp &lt;prefix&gt; [netmask]</dd>
-<dd><input type=radio name="query" value="mbgpsum">show ip mbgp summary</dd>
-<dd><input type=radio name="query" value="log">show logging [ | &lt;match_string&gt;]</DD>
-<dd><input type=radio name="query" value="ping">ping &lt;IP_addr | FQDN&gt;</dd>
-<dd><input type=radio name="query" value="trace">traceroute &lt;IP_addr | FQDN&gt;</DD>
-
-<P><B>Argument(s):</B> <INPUT name="args" size=30></P>
- </TD>
- <td ALIGH=left VALIGN=top>
- <b>Router:</B>
-
-<dd>
-QTYPES
-
-# <dd><input type=radio name="query" value="aspath">sh ip as-path-access-list &lt;list_number&gt;</DD>
-# <dd><input type="radio" name="query" value="acl">sh access-list &lt;list_number&gt;</dd>
-# <dd><input type=radio name="query" value="communitylist">sh ip community-list &lt;list_number&gt;<DD>
-# <dd><input type=radio name="query" value="routemap">sh ip route-map &lt;map_name&gt;</DD>
-
-# read routers table and create the scrolling list
-readrouters();
-print $query->scrolling_list(-name => 'router',
- -values => \@rtrlist,
- -size => 20,
- -labels => \%rtrlabels);
-
-# end
-print <<TAIL ;
-</dd>
-</td>
-</TABLE>
-<p><input type=submit value=Submit> <INPUT type=reset value=Reset></FORM>
-</center>
-<br>
-<a href=lgnotes.html>Looking Glass notes</a>
-TAIL
-
-print <<TAIL ;
-<p>
-$LG_INFO
-</body>
-TAIL
-
-print $query->end_html;
-
-exit(0);
diff --git a/util/lg/lgnotes.html b/util/lg/lgnotes.html
deleted file mode 100644
index 9f28ec3..0000000
--- a/util/lg/lgnotes.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-
-<head>
-<meta http-equiv="Content-Type"
-content="text/html; charset=iso-8859-1">
-<title>Looking Glass Notes</title>
-</head>
-
-</strong></font><font face="Arial"> </font><font
-size=+3><strong>&nbsp;&nbsp;&nbsp;Looking Glass Notes
-</strong></font></p>
-<br>
-<p>
-<ul>
-Just a few straight forward notes on our implementation of
-Ed Kern's looking glass. See the original at
-<a href=http://nitrous.digex.net>http://nitrous.digex.net</a>.
-</ul>
-</p>
-<p>
-<UL>
-<li>Some items are not implemented for the junipers/foundrys yet (so, as i get
- to it) or no equivalent command exists.
-<li>If there is something which you feel is missing, feel free to ask
- and/or send comments to <a href=mailto:rancid@shrubbery.net>
- rancid@shrubbery.net</a>. No guarantees.</li>
-<li>Only one query per router allowed at any given time. This is to avoid
- resource deprivation on the looking glass host or the router. The
- looking glass will attempt to serialize queries.</li>
-<li>The looking glass will ping a router prior to querying it to avoid
- trying to query routers which are down or otherwise inaccessible.</li>
-<li>Login failures can be intermittent or permanent, either due to the
- router being inaccessible from the looking glass machine,
- or authorization failure(s). Contact your local network engineering
- folks to resolve login failures.</li>
-<li>Queries followed by &lt;something&gt; require an argument(s) in the text
- window below the query list. Some queries take optional arguments
- denoted by [something]. Multiple arguments should be separated by a
- space.</li>
-<li>Note that output from certain queries is cached by the server and may
- be slightly out of date. These queries will be noted as such in the
- output. This is limited to queries which could produce lots of output,
- such as 'sh ip bgp dampened-paths'.</li>
-<li>Note that some queries have potential to produce great load on the router
- and produce lots of output, such as 'sh ip bgp' or 'sh ip bgp reg '^3561'.
- The looking glass attempts to deny such commands.</li>
-</ul>
-<p>
-Some useful hints:
-<UL>
-<li>Show interfaces can take arguments other than an interface name, assuming
- the router is running an O/S version with the capability. For example; a
- cisco can take 'descriptions' or 'brief' and 'terse' for the juniper. </li>
-<li>Show ip bgp neighbor can take additional arguments (if configured to allow
- it), such as 'advertised routes', 'flap-statistics', 'received-routes',
- and 'routes'. The argument will be converted for the platform.</li>
-</ul>
-
-</body>
-</html>