This one time, at band camp, sean finney said:
> hey steve,
>
> On Thu, Jun 30, 2005 at 01:38:11AM -0400, Stephen Gran wrote:
> > These look fine. I'll let those who have an eye for grammar and the
> > like (bubulle strikes me as someone to talk to - he has a very good ear
> > for template language).
>
> believe it or not, bubulle helped me develop the original versions of
> these questions (again, in dbconfig-common). after things have settled
> with these templates, i'll send this to the translation lists for
> review too.
:) Glad to see you got to know him - he has been an extremely big help
in standardizing the 'look-n-feel' part of debconf questions.
> > > Template: webapps-common/httpd/select_httpd
> >
> > Fine, although the possibilities could be preselected - ISTR some apps
> > asking if I wanted to install for apache-perl when it's not installed.
> > that seems unnecessary. A simple test for /usr/share/doc/${pkg} before
> > filling the string should do.
>
> what i was planning on doing was having a list of supported httpds
> internal in the code somewhere, and populating the choices at run-time
> with that. additionally, the choices could be verified for their
> installation status and non-installed choices could be somehow
> differentiated in the list (like being preceded by a !), and/or the
> installed choices could be selected by default.
to preselect an htppd out of a list, the following should work:
HTTPDS="apache apache-ssl apache-perl apache2" # Give or take
INSTALLED_HTTPDS=''
for httpd in $HTTPDS; do
if [ -d "/usr/share/doc/${httpd}" ]; then
INSTALLED_HTTPDS="$httpd $INSTALLED_HTTPDS"
fi
done
db_set webapps-common/httpd/select_httpd "$INSTALLED_HTTPDS" || true
(totally untested, of course)
The idea is that the only thing that can be absolutely relied on as an
inidcator that a package is installed in debian is the doc/ directory.
a removed but not purged package may leave behind a directory in /etc,
trying to sort out where logs or document roots are is a mess, etc.
Since policy dictates a doc/ directory for each package (and it's uder
/usr, so it goes away when the package is removed), it's a quick and
easy test.
> > > Template: webapps-common/httpd/virtualhost_new
> > >
> > > Template: webapps-common/httpd/virtualhost
> > >
> > > Template: webapps-common/httpd/virtualhost_more
> > >
> > > Template: webapps-common/httpd/site_directory
> >
> > Can these possibly be autodetected? Something like checking for
> > directories that look like FQDN under /srv/www and parsing httpd.conf?
>
> it'd probably be a bit of a clunky shell script, but would certainly
> be possible. you'd need to read httpd.conf, as well as all files and
> directories Include'd, and then grab out all the <VirtualHost></VirtualHost>
> blocks, and then from those grab all the ServerName settings... i think...
>
> > I realize this is some work (I'm happy to hack on it in the next few
> > weeks, when I'm on enforced vacation, if you think it's a good idea).
>
> well, i'd be a hypocrite if i were to chastise you for working on debian
> during vacation as i'm frequently guilty of the same :) if you
> are interested in doing this, could you write a /bin/sh function
> that does what's described above (or whatever really needs to be done)?
> i could then include it with the other internal httpd functions in
> webapps common.
This is harder.
db_get webapps-common/httpd/select_httpd || true
HTTPDS_TO_BE_CONFIGURED="$RET"
split_line() {
line=$1
newline=`echo $line | awk '{print $2}'`
}
parse_file() {
file=$1
egrep -v '^[[:space:]]*(#|$)' $file | while read line; do
case line in
/VirtHost*)
in_vhost=0
;;
Include*)
extra_files="split_line($line) $extra_files"
;;
VirtHost*)
in_vhost=1
ServerName*)
if [ "$in_vhost" = '1' ]; then
virt_hosts="split_line($line $virt_hosts"
fi
;;
*)
;;
esac
done
}
for httpd in $HTTPDS_TO_BE_CONFIGURED; do
parse_file(/etc/${httpd}/httpd.conf)
done
if [ -n "extra_files" ]; then
for include in $extra_files; do
parse_config($include)
done
fi
db_set webapps-common/httpd/virtualhost "$virt_hosts" || true
This seriously needs error checking, but it may give you a rough
framework to start with. I'll see if I can do better later. It also
doesn't support recursion (no Includes from included files are checked),
but for that you would actually have to use bash arrays, and I have
always hated them syntactically and just ran to perl when the need for a
real array reared it's head :)
--
-----------------------------------------------------------------
| ,''`. Stephen Gran |
| : :' : sgran@debian.org |
| `. `' Debian user, admin, and developer |
| `- http://www.debian.org |
-----------------------------------------------------------------
Attachment:
signature.asc
Description: Digital signature