question about lgform.cgi

john heasley heas at shrubbery.net
Fri Dec 17 16:46:02 UTC 2004


Fri, Dec 17, 2004 at 10:53:20AM -0500, Hopper, Faron  W.:
> 
> Andrew,
>    You are right, I see the wisdom of it now.  It would help if I were to look at that file, instead of directly at the cgi script.  Thank you for pointing that out.
> 
> I have another question.  If I set the LG_ROUTERDB var to the following,
> 
>                  #$LG_ROUTERDB="/usr/local/etc/rancid//router.db";
>                  $LG_ROUTERDB="/usr/local/var/rancid//router.db";

/usr/local/etc/rancid is an odd directory as far as rancid's autoconf is
concerned.  Assuming a --prefix of /usr/local, I'd expect that path to be
/usr/local/etc/router.db.

lg.conf does not provide a way to reconfigure the LOCALSTATEDIR, which is
used as the directory which it searches for the list of routers.  Its
value is determined by autoconf.

If LG_ROUTERDB is specified, it's value is treated solely as a file, a
router.db file.  No reason that could not be treated as a directory when
it is one.

Try this patch.

Index: lg.cgi.in
===================================================================
RCS file: /home/rancid/.CVS/rancid/bin/lg.cgi.in,v
retrieving revision 1.51
diff -d -u -r1.51 lg.cgi.in
--- lg.cgi.in	19 May 2004 22:59:18 -0000	1.51
+++ lg.cgi.in	17 Dec 2004 16:42:08 -0000
@@ -125,7 +125,13 @@
     local(*RTR);
 
     if (defined($LG_ROUTERDB)) {
-	$rtrdb = $LG_ROUTERDB;
+	# if LG_ROUTERDB is a directory, replace LOCALSTATEDIR with its value
+	# and search it for router.dbs.
+	if (-d "$LG_ROUTERDB") {
+	    $LOCALSTATEDIR = $LG_ROUTERDB;
+	} else {
+	    $rtrdb = $LG_ROUTERDB;
+	}
     } else {
 	$rtrdb = "$SYSCONFDIR/router.db";
     }
Index: lgform.cgi.in
===================================================================
RCS file: /home/rancid/.CVS/rancid/bin/lgform.cgi.in,v
retrieving revision 1.29
diff -d -u -r1.29 lgform.cgi.in
--- lgform.cgi.in	3 Sep 2004 18:41:25 -0000	1.29
+++ lgform.cgi.in	17 Dec 2004 16:42:53 -0000
@@ -116,7 +116,13 @@
     local(*RTR);
 
     if (defined($LG_ROUTERDB)) {
-	$rtrdb = $LG_ROUTERDB;
+	# if LG_ROUTERDB is a directory, replace LOCALSTATEDIR with its value
+	# and search it for router.dbs.
+	if (-d "$LG_ROUTERDB") {
+	    $LOCALSTATEDIR = $LG_ROUTERDB;
+	} else {
+	    $rtrdb = $LG_ROUTERDB;
+	}
     } else {
 	$rtrdb = "$SYSCONFDIR/router.db";
     }


> I don't see any of my group configured routers.  If I change the // to a group name it works fine, but

And, you probably have error messages in your log about the file not existing.

> only for that group.  For example,
> 
>                  $LG_ROUTERDB="/usr/local/var/rancid/cg/router.db";
> 
> works fine.
> 
> The help for that variable states
> 
>       # 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>/<sysconfdir>/router.db.  if it does not exist, it
>       #               will build the list from <prefix>/*/router.db (i.e.: 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 etc/rancid.conf).  routers not marked 'up' are
>       #               skipped.
>       #
> 
> This varilable was not defined before started to mess lg.conf, so I don't think that it is looking in the
> /usr/local/var/rancid directory for this information.  How do I get it to use 1) a prefix that is /usr/local/var/rancid, or 2) configure the variable to use the group subdir's under /usr/local/var/rancid?
> 
> For example,
> 
> /usr/local/var/rancid/group1
> /usr/local/var/rancid/group2
> /usr/local/var/rancid/group3
> /usr/local/var/rancid/group4
>     .
>     .
>     .
> etc
> 
> Thank you in advance for helping a very slow learner.
> Faron Hopper
> Capgemini
> Network Engineering
> Kansas City, MO 64116
> 816.459.5139
> 
> 
> -----Original Message-----
> From: Andrew Partan [mailto:asp at partan.com]
> Sent: Thursday, December 16, 2004 5:12 PM
> To: Hopper, Faron W.
> Cc: rancid-discuss at shrubbery.net
> Subject: Re: question about lgform.cgi
> 
> 
> On Thu, Dec 16, 2004 at 04:32:14PM -0500, Hopper, Faron  W. wrote:
> > I have installed rancid on FreeBSD.  I also installed the looking
> > glass software.  When I bring up the webpage
> > http://server/cgi-bin/lgform.cgi, it loads the front end, but it is
> > not populating the routers on the page.  When I looked at the code, it
> > appeared to me that it is supposed to pull its info from the rancid
> > cvs file router.db.  Do I have to configure lgform.cgi to know where
> > these files are?  It wasn't very clear in the file what needs to be
> > done.
> 
> Yes, in lg.conf, set LG_ROUTERDB to the location of router.db. See the comments in etc/lg.conf.sample.
> 	--asp
> 



More information about the Rancid-discuss mailing list