On Fri, Jan 11, 2019 at 10:50:21AM -0600, Adam Thompson wrote:
> Running 6.4 (-stable, via openup/mtier).
> I have bgpd(8) talking to my border router, acting as a route collector.
> That part seems fine.
> I now have httpd(8) configured trivially to run bgplg(8) (per the bgplg(8)
> manpage) but it's not working, and I can't tell why.  **EDIT: yes, I can,
> see below**
> 
> httpd.conf:
> ===start===
> server "*" {
>         listen on * port 80
>         location "/cgi-bin/*" {
>                 fastcgi
>                 root ""
>         }
> }
> ===end===
> 
> On the client end, I get:
> 
>   bgpmirror# wget -v http://localhost/cgi-bin/bgplg
>   --2019-01-11 10:12:05--  http://localhost/cgi-bin/bgplg
>   Resolving localhost (localhost)... 127.0.0.1, ::1
>   Connecting to localhost (localhost)|127.0.0.1|:80... connected.
>   HTTP request sent, awaiting response... 200 No headers, assuming HTTP/0.9
>   Length: unspecified
>   Saving to: 'bgplg'
> (it never completes until I kill it)
> 
> Ktrace'ing slowcgi and httpd in -d mode reveals that bgplg execve's
> properly, loads, spits out "invalid character in input" and dies.  Slowcgi
> and/or httpd do not handle this... well, at all, really.  That error message
> also does not get logged anywhere nor is visible anywhere except ktrace
> logs.
> 
> Looking at the bgplg source code, this means there's something funky in its
> environment that it doesn't like.  Ah.  It looks like it's the "*" in
> server_name, as passed in by slowcgi:
>   slowcgi: env[18], SERVER_NAME=*
> 
> Yup.  That's the problem, all right: /usr/src/usr.bin/bgplg/bgplg.c:115
> excludes '*'.  But I want my looking glass to be accessible from at least
> two different hostnames, and I really would prefer to not have to define
> them all manually in httpd.conf(5).
> 
> The naive local fix is trivial (adding '*' to the strchr call in line 115),
> but what else might I be breaking or letting in?  Clearly this is supposed
> to ensure the environment is sanitized before continuing, but is "*"
> forbidden because it's unsafe, or simply because it never occurred to
> anyone?
> 
> Thoughts / suggestions ?
> 

You can use 'server match "."' to match any hostname.
The page title will be "." though.

Reply via email to