applayer template (rust): convert to JsonBuilder

pull/5146/head
Jason Ish 5 years ago committed by Victor Julien
parent d71fc50212
commit 43b9bfaed4

@ -16,25 +16,21 @@
*/
use std;
use crate::json::*;
use crate::jsonbuilder::{JsonBuilder, JsonError};
use super::template::TemplateTransaction;
fn log_template(tx: &TemplateTransaction) -> Option<Json> {
let js = Json::object();
fn log_template(tx: &TemplateTransaction, js: &mut JsonBuilder) -> Result<(), JsonError> {
if let Some(ref request) = tx.request {
js.set_string("request", request);
js.set_string("request", request)?;
}
if let Some(ref response) = tx.response {
js.set_string("response", response);
js.set_string("response", response)?;
}
return Some(js);
Ok(())
}
#[no_mangle]
pub extern "C" fn rs_template_logger_log(tx: *mut std::os::raw::c_void) -> *mut JsonT {
pub extern "C" fn rs_template_logger_log(tx: *mut std::os::raw::c_void, js: &mut JsonBuilder) -> bool {
let tx = cast_pointer!(tx, TemplateTransaction);
match log_template(tx) {
Some(js) => js.unwrap(),
None => std::ptr::null_mut(),
}
log_template(tx, js).is_ok()
}

@ -71,25 +71,25 @@ static int JsonTemplateLogger(ThreadVars *tv, void *thread_data,
SCLogNotice("JsonTemplateLogger");
LogTemplateLogThread *thread = thread_data;
json_t *js = CreateJSONHeader(p, LOG_DIR_PACKET, "template-rust", NULL);
JsonBuilder *js = CreateEveHeader(p, LOG_DIR_PACKET, "template-rust", NULL);
if (unlikely(js == NULL)) {
return TM_ECODE_FAILED;
}
json_t *template_js = rs_template_logger_log(tx);
if (unlikely(template_js == NULL)) {
jb_open_object(js, "template");
if (!rs_template_logger_log(tx, js)) {
goto error;
}
json_object_set_new(js, "template", template_js);
jb_close(js);
MemBufferReset(thread->buffer);
OutputJSONBuffer(js, thread->templatelog_ctx->file_ctx, &thread->buffer);
json_decref(js);
OutputJsonBuilderBuffer(js, thread->templatelog_ctx->file_ctx, &thread->buffer);
jb_free(js);
return TM_ECODE_OK;
error:
json_decref(js);
jb_free(js);
return TM_ECODE_FAILED;
}

Loading…
Cancel
Save