Patch for 'cfg_dir' to follow symlinks in 2.0
Ethan Galstad
nagios at nagios.org
Wed Apr 14 01:51:22 CEST 2004
Thanks for the patch. I don't think excluding symlinked directories
was intentional, so this is a nice addition. I'll get it committed
to CVS tonight.
On 12 Apr 2004 at 17:20, Mueller, Karl wrote:
> I sent an email earlier about whether symlink following would be a
> good idea or not. Since then, I thought about it and couldn't find a
> reason it would be bad in most cases. The only problem that I could
> come up with is if somebody had a "cfg_dir" entry pointing to a
> directory with non-Nagios symlinks. This seems counter to the point
> of cfg_dir, which implies everything in it are nagios configs objects,
> so I was not really worried about that too much.
>
> In looking at a new template architecture here at my company, sharing
> configuration directories via symlinks seemed to make a lot of sense.
> You could probably produce something similar in effect with a lot of
> cfg_file/cfg_dir entries, but it seems simpler to be able to link
> them in at the configuration tree level as opposed to creating entries
> for disparate trees to be loaded. It also allows for a lot more
> granularity as symlinks are simpler than main config line entries.
> (At least, this has been my experience)
>
> For my planned setup, it was looking like I might need 20-30 or more
> cfg_dir/cfg_file lines, whereas I can do the same thing with 5 cfg_dir
> lines and a handful of symlinked directories & files. If you have a
> shared configuration tree for all Nagios servers like I do, then you
> realize the value of editing the config in the tree and not in the
> nagios.cfg file.
>
> At the least, this would give me an option for which is better for my
> local environment.
>
>
> I just sat down and wrote the patch to make this work. The patch does
> the following:
>
> 1) When recursing through cfg_dir directories (in
> xodtemplate_process_config_dir() ), it will also look at symlinks,
> both for directories and files. (readdir() entries for d_type DT_LNK
> are now not always ignored)
>
> 2) In the case of a '.cfg' file that is a symlink (d_type = DT_LNK),
> Nagios will just try to read it outright. An error (such as a symlink
> pointing to an invalid location) will produce a standard "cannot read
> file" error. Otherwise, it is invisible.
>
> 3) In the case of a directory, things are a bit more complicated. If
> a symlink exists, since we're not longer limited to '.cfg' files, it
> could be a directory or anything else. We only want to recurse into
> directories that are symlinked. I added checking to make sure the
> target of the symlink is a directory.
>
> 4) When trying to open a file, it will print the error string now if
> it fails. (Often it's just that it can't read it, but it's more
> clear)
>
>
> The patch is located at
>
> http://www.xney.com/nagios/nagios-2.0-symlink.patch
>
> It's a diff against the xodtemplate.c file in xdata/
>
> If others are interested in the functionality, I'd appreciate some
> testing feedback. I ran a bunch of test cases (positive and negative)
> and it seemed to work well, but I haven't run it through a huge number
> of them.
>
> I thought about making it a configure option in the 'configure'
> script, but it didn't seem obvious as to how to make all that work.
>
> I'd appreciate any feedback, including the "you're a total moron" type
> (if it's true)
>
> -Karl
>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by: IBM Linux Tutorials
> Free Linux tutorial presented by Daniel Robbins, President and CEO of
> GenToo technologies. Learn everything from fundamentals to system
> administration.http://ads.osdn.com/?ad_id 70&alloc_id638&opÀick
> _______________________________________________ Nagios-devel mailing
> list Nagios-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nagios-devel
Ethan Galstad,
Nagios Developer
---
Email: nagios at nagios.org
Website: http://www.nagios.org
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id70&alloc_id638&op=click
More information about the Developers
mailing list