Awesome, thanks!<div>I&#39;ll dig into the patterndb as this would have to be in production at some point :-)</div><div><br></div><div><br></div><div class="gmail_extra"><br clear="all">______________________________________________________________ <br>
<br>Clayton Dukes<br>______________________________________________________________<br>
<br><br><div class="gmail_quote">On Wed, Nov 14, 2012 at 8:50 AM, Gergely Nagy <span dir="ltr">&lt;<a href="mailto:algernon@balabit.hu" target="_blank">algernon@balabit.hu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">Clayton Dukes &lt;<a href="mailto:cdukes@gmail.com">cdukes@gmail.com</a>&gt; writes:<br>
<br>
&gt; Thanks Gergely,<br>
&gt; I was trying to replace myhostname with the IP (removing the &quot;Original<br>
&gt; Host=$IP&quot;<br>
&gt; part of the message would be optional).<br>
&gt; I thought it would have to be done using something like patterndb, but<br>
&gt; wasn&#39;t sure.<br>
<br>
</div>A quick &amp; dirty solution is to abuse the CSV parser, twice (do note that<br>
I haven&#39;t tested it):<br>
<br>
parser p_split_at_doublecolon {<br>
       csv-parser(columns(&quot;csv.orig_host&quot;, &quot;csv.message&quot;), flags(greedy));<br>
};<br>
<br>
parser p_split_at_equal {<br>
       csv-parser(columns(&quot;csv.dummy&quot;, &quot;csv.ip&quot;), template(&quot;${csv.orig_host}&quot;));<br>
};<br>
<br>
rewrite r_reassemble {<br>
        set(&quot;:${csv.message}&quot;, value(&quot;MESSAGE&quot;));<br>
        set(&quot;${cvs.ip}&quot;, value(&quot;HOST&quot;));<br>
};<br>
<br>
log {<br>
    source(s_yoursource);<br>
    parser(p_split_at_doublecolon);<br>
    parser(p_split_at_equal);<br>
    rewrite(r_reassemble);<br>
    destination(d_yourdestination);<br>
};<br>
<br>
What this does, is split the original message into two parts: one before<br>
the first &quot;:&quot;, and the rest after (we need the greedy flag for this, so<br>
that if the message contains more &quot;:&quot; chars, the parser won&#39;t split<br>
there, but attach that to csv.message). The first part will be stored in<br>
&quot;csv.orig_host&quot;, the other in &quot;csv.message&quot;, neither will contain the<br>
&quot;:&quot; itself.<br>
<br>
Then, we use a similar trick to break the orig_host part apart:<br>
everything in it after the equal sign is the IP.<br>
<br>
After this two, we have the following things set up:<br>
<br>
csv.orig_host = &quot;Original Host=192.168.6.3&quot;<br>
csv.message = &quot;LOW_THRESHOLD_EVENT - 0 AUTHORIZED sessions&quot;<br>
csv.dummy = &quot;Original Host&quot;<br>
csv.ip = &quot;192.168.6.3&quot;<br>
<br>