[hobbit] mailack question

Allan Spencer allan at zandahar.net
Thu Jul 10 02:21:29 CEST 2008



Ralph Mitchell wrote:
> On Wed, Jun 25, 2008 at 7:44 PM, Allan Spencer <allan at zandahar.net 
> <mailto:allan at zandahar.net>> wrote:
>
>     HI all
>
>     A LONG time ago I asked about ack'ing an alert via email (or via
>     sms-to-email) and to be able to do so without a subject. A patch
>     was written at the time and it was included into the main codebase
>     but unfortunately I did not get a chance to imeplement what I
>     wanted to and never ended up testing it. Thats has just changed
>     recently and now I am having issues acking an alert via text in
>     the body.
>
>     If i reply to an email and maintain the subject it works fine, if
>     I try cut the subject and paste it as the body nothing happens. I
>     havent gone as far as testing it via the sms-to-email app yet as I
>     cant get it working from a normal email.
>
>
>
> The hobbit-mailack.c program loops through the incoming email, looking 
> for interesting stuff.  Here's where it finds the subject line:
>
>      else if (strncasecmp(STRBUF(inbuf), "subject:", 8) == 0)
>          subjectline = strdup(skipwhitespace(STRBUF(inbuf)+8));
>  
> Once the headers are done with, it goes on to look for some things in 
> the email body, such as "delay=" and "ack=":
>
>      else if ((strncasecmp(STRBUF(inbuf), "ack=", 4) == 0) ||
>                 (strncasecmp(STRBUF(inbuf), "ack ", 4) == 0)) {
>                                 /* Some systems cannot generate a 
> subject. Allow them to ack
>                                  * via text in the message body. */
>                                 subjectline = (char *)malloc(1024);
>                                 snprintf(subjectline, 1023, "Subject: 
> Hobbit [%s]", STRBUF(inbuf)+4);
>                         }
>
> So, does the email body contain a line that starts with "ack=NNNNNN" 
> or "ack NNNNN"??  If not, it won't match the above code fragment.  It 
> looks like it should be *just* the number, as that gets filled in 
> between the square brackets in the faked subject line.
>
> I noticed something else interesting in the code.  The last thing it 
> does is call sendmessage, handing it a buffer loaded like this:
>
>      p += sprintf(p, "hobbitdack %s %d %s", cookie, duration, 
> firsttxtline);
>         if (fromline) {
>            p += sprintf(p, "\nAcked by: %s", fromline);
>         }
>
> I figured it wouldn't hurt to try doing this:
>
>      server/bin/bb localhost "hobbitdack NNNNNN 60 this thing is broken
>      Acked by: me at this.domain.com <mailto:me at this.domain.com>"
>
> where NNNNNN came from a real, current warning message.  Note the 
> placement of the double-quotes - there needs to be a newline between 
> the message and "Acked by".  And now, just below the "Status unchanged 
> in...." message at the bottom of the page I find this:
>
>           Current acknowledgment: this thing is broken
>                Acked by: me at this.domain.com <mailto:me at this.domain.com>
>                Next update at: 12:54 2008-07-09
>
> and there's a nice yellow check mark on the all-non-green page.  So it 
> looks like an ACK *can* be sent via the command line...
>
> Ralph
>
Cheers Ralph you identified my missing link. I was under the impression 
that the body needed to be in the same format as the subject but as you 
have identified thats not the case. I have just test a plain email with 
ack=xxxx in the body and it worked a charm so hopefully a little later 
on I can try it end to end via SMS.

I knew Henrik coded it in there when I asked a while ago but 
unfortunately I never got the chance or the capability to test it back then.

Thanks
Allan




More information about the Xymon mailing list