Ignore:
Timestamp:
Jan 27, 2010, 10:52:20 PM (15 years ago)
Author:
katerina
Message:

Fixes tickets #190, #191, #192, #193, and #194.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_log_evalrule.c

    r265 r272  
    151151  char **      splits = split_array(new, &nfields, ':', lengths);
    152152
     153  /* group is label:regex
     154   */
     155
    153156  if (group_open)
    154157    group_open = NULL;
     
    313316  struct sh_qeval * nq;
    314317  int     severity;
    315   unsigned int nfields = 4; /* label:interval:(report|sum):severity */
    316   size_t  lengths[4];
     318  unsigned int nfields = 5; /* label:interval:(report|sum):severity[:alias] */
     319  size_t  lengths[5];
    317320  char *  new = sh_util_strdup(str);
    318321  char ** splits = split_array(new, &nfields, ':', lengths);
    319322
    320   if (nfields != 4)
     323  if (nfields < 4)
    321324    {
    322325      SH_FREE(splits);
     
    356359  nq = SH_ALLOC(sizeof(struct sh_qeval));
    357360  nq->label = sh_string_new_from_lchar(splits[0], lengths[0]);
     361  nq->alias = NULL;
    358362
    359363  DEBUG("debug: splits[2] = %s, policy = %d\n",splits[2],nq->policy);
     
    368372
    369373  nq->severity = severity;
     374
     375  if (nfields == 5)
     376    {
     377      nq->alias = sh_string_new_from_lchar(splits[4], lengths[4]);
     378    }
     379
    370380  nq->next     = queuelist;
    371381  queuelist    = nq;
     
    408418  return SH_ERR_SEVERE;
    409419}
     420
     421sh_string * sh_log_lookup_alias(const char * str)
     422{
     423  struct sh_qeval * queue;
     424
     425  if (str)
     426    {
     427      if (0 != strcmp(str, _("trash")))
     428        {
     429          queue = sh_log_find_queue(str);
     430         
     431          if (queue)
     432            return queue->alias;
     433        }
     434    }
     435  return NULL;
     436}
     437
    410438
    411439static char * get_label_and_time(const char * inprefix, char * str,
     
    9931021}
    9941022
    995 static void msg_report(int severity, struct sh_geval * rule, struct sh_logrecord * record)
     1023static void msg_report(int severity, const sh_string * alias,
     1024                       struct sh_geval * rule, struct sh_logrecord * record)
    9961025{
    9971026  char      * tmp;
     
    10171046                   sh_string_str(record->host),
    10181047                   tmp);
     1048  if (alias)
     1049    {
     1050      sh_error_mail (sh_string_str(alias),
     1051                     severity, FIL__, __LINE__, 0, MSG_LOGMON_REP,
     1052                     msg,
     1053                     ttt,
     1054                     sh_string_str(record->host),
     1055                     tmp);
     1056    }
    10191057  SH_FREE(ttt);
    10201058  SH_FREE(msg);
     
    10251063}
    10261064
    1027 static void sum_report(int severity, sh_string * host, sh_string * message, sh_string * path)
     1065static void sum_report(int severity, const sh_string * alias,
     1066                       sh_string * host, sh_string * message, sh_string * path)
    10281067{
    10291068  char * tmp;
     
    10371076                   sh_string_str(host),
    10381077                   tmp);
     1078  if (alias)
     1079    {
     1080      sh_error_mail (sh_string_str(alias),
     1081                     severity, FIL__, __LINE__, 0, MSG_LOGMON_SUM,
     1082                     msg,
     1083                     sh_string_str(host),
     1084                     tmp);
     1085    }
    10391086  SH_FREE(msg);
    10401087  SH_FREE(tmp);
     
    11081155    {
    11091156      DEBUG("debug: report count\n");
    1110       sum_report(rule->queue->severity, counter->hostname,
    1111                  counter->counted_str, counter->filename);
     1157      sum_report(rule->queue->severity, rule->queue->alias,
     1158                 counter->hostname, counter->counted_str, counter->filename);
    11121159      counter->start = time(NULL);
    11131160      counter->count = 0;
     
    11311178                 sh_string_str(record->host),
    11321179                 sh_string_str(record->message));
    1133           msg_report(queue->severity, rule, record);
     1180          msg_report(queue->severity, queue->alias, rule, record);
    11341181          retval = 0;
    11351182        }
     
    11771224        {
    11781225          DEBUG("debug: (%lu) no rule found\n", i); ++i;
    1179           msg_report(DEFAULT_SEVERITY, NULL, record);
     1226          msg_report(DEFAULT_SEVERITY, NULL, NULL, record);
    11801227        }
    11811228
Note: See TracChangeset for help on using the changeset viewer.