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 std;
use crate::json::*; use crate::jsonbuilder::{JsonBuilder, JsonError};
use super::template::TemplateTransaction; use super::template::TemplateTransaction;
fn log_template(tx: &TemplateTransaction) -> Option<Json> { fn log_template(tx: &TemplateTransaction, js: &mut JsonBuilder) -> Result<(), JsonError> {
let js = Json::object();
if let Some(ref request) = tx.request { if let Some(ref request) = tx.request {
js.set_string("request", request); js.set_string("request", request)?;
} }
if let Some(ref response) = tx.response { if let Some(ref response) = tx.response {
js.set_string("response", response); js.set_string("response", response)?;
} }
return Some(js); Ok(())
} }
#[no_mangle] #[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); let tx = cast_pointer!(tx, TemplateTransaction);
match log_template(tx) { log_template(tx, js).is_ok()
Some(js) => js.unwrap(),
None => std::ptr::null_mut(),
}
} }

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

Loading…
Cancel
Save