Xymon Mailing List Archive search

Xymon and Lighttpd 500 Internal Error

list Brian Scott
Thu, 5 Sep 2019 12:23:39 +1000
Message-Id: <user-2902703e88a3@xymon.invalid>

On 4/9/19 9:15 pm, Guy wrote:
On Thu, Aug 29, 2019 at 2:15 PM Guy <user-6f21ad656c65@xymon.invalid> wrote:
Hello,

The Xymon index page is loading; however, when I attempt to drill down
into an individual service check (invoking svcstatus.sh), lighttpd
returns a 500 internal server error.
Someone from the Lighttpd support forums responded with the following:
"It appears that the CGI is not returning any output, which is an
invalid CGI/1.1 response. lighttpd is receiving POLLHUP on the pipe
and cleaning up the CGI. Perhaps you forgot to flush output in the
script?"

Here's the thread:
https://redmine.lighttpd.net/boards/2/topics/8703?r=8705#message-8705

If I create /var/www/html/hello-world.sh and run it, it works as expected.
OS: Devuan Ascii 2.0
Kernel: Linux pihole 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u5
(2019-08-11) x86_64 GNU/Linux
Lighttpd: Version: 1.4.45-1
Xymon: Version: 4.3.28-2

Xymon and lighttpd were both installed from the official Devuan repos
using apt-get.

Here's my lighttpd config: https://clbin.com/F2LzF
Here's an strace: https://clbin.com/EuesM

Thanks,

Guy
Hi,

The .sh files aren't actually shell scripts any more, they are compiled
programs. Try getting rid of the cgi.assign clause for .sh completely.

I've just had a look at an old lighttpd config that I used for xymon and
found this in my vhosts.d directory:
server.modules? += ( "mod_cgi",
??????? "mod_auth",
??????? "mod_alias"
)

alias.url += (
??????? "/xymon-cgi/" => "/usr/local/xymon/cgi-bin/",
??????? "/xymon-seccgi/" => "/usr/local/xymon/cgi-secure/",
??????? "/xymon/" => "/usr/local/xymon/server/www/",
??????? "/xymon" => "/usr/local/xymon/server/www/"
)

$HTTP["url"] =~ "^/xymon-cgi/|^/xymon-seccgi/" {
??????? dir-listing.activate = "disable"
??????? cgi.assign = ( "" => "" )
}

auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/usr/local/xymon/server/etc/xymonpasswd"

auth.require = ( "/xymon-seccgi/" => (
??????? "method"? => "basic",
??????? "realm"?? => "Xymon Administration",
??????? "require" => "user=admin"
??????? )
)
There is no mention of '.sh' mapping anywhere. While I'm a little hazy
about all of this, I suspect that the line 'cgi.assign = ( "" => "" )'
for the cgi directories is where the magic happens.


Cheers,


Brian Scott