[hobbit] veiwconf.sh

Henrik Stoerner henrik at hswn.dk
Fri Sep 1 07:45:06 CEST 2006


On Thu, Aug 31, 2006 at 09:41:50PM -0500, T.J. Yang wrote:

> I like to display hobbit configuration file also, where can I find this 
> script ?
> 
> http://www.hswn.dk/hobbit-cgi/viewconf.sh

It's my highly guarded secret intellectual property :-)

#!/bin/sh

echo "Content-type: text/plain"
echo ""

REQ="`/usr/local/bin/safequery`"

if [ "$REQ" = "alert" ]
then
   cat /etc/hobbit/hobbit-alerts.cfg
elif [ "$REQ" = "client" ]
then
   cat /etc/hobbit/hobbit-clients.cfg
elif [ "$REQ" = "clientlocal" ]
then
   cat /etc/hobbit/client-local.cfg
elif [ "$REQ" = "server" ]
then
   cat /etc/hobbit/hobbitserver.cfg
elif [ "$REQ" = "launch" ]
then
   cat /etc/hobbit/hobbitlaunch.cfg
elif [ "$REQ" = "graph" ]
then
   cat /etc/hobbit/hobbitgraph.cfg
else
   bbcmd bbhostshow
fi

exit 0


The "safequery" utility just scans the QUERY_STRING environment
and if it only contains characters that are "safe" in a shell script, it
prints out the QUERY_STRING value. This is something I wrote years ago
to make this kind of quick-and-dirty CGI scripts safer to use.

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *safechars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-_+?~=";

int main(int argc, char *argv[])
{
    unsigned char *querystring;
    unsigned char *p;

    querystring = getenv("QUERY_STRING");
    if (!querystring) {
       return 0;
    };


    for (p=querystring; (*p); p++) {
      if (!strchr(safechars, *p)) {
         return 1;
      }
    }

    printf("%s\n", querystring);
    return 0;
}



Regards,
Henrik




More information about the Xymon mailing list