htp_hook_t *htp_hook_copy(const htp_hook_t *hook) { if (hook == NULL) return NULL; htp_hook_t *copy = htp_hook_create(); if (copy == NULL) return NULL; for (size_t i = 0, n = htp_list_size(hook->callbacks); i < n; i++) { htp_callback_t *callback = htp_list_get(hook->callbacks, i); if (htp_hook_register(©, callback->fn) != HTP_OK) { htp_hook_destroy(copy); return NULL; } } return copy; }
void htp_config_register_transaction_complete(htp_cfg_t *cfg, int (*callback_fn)(htp_tx_t *)) { if (cfg == NULL) return; htp_hook_register(&cfg->hook_transaction_complete, (htp_callback_fn_t) callback_fn); }
void htp_config_register_response_start(htp_cfg_t *cfg, int (*callback_fn)(htp_tx_t *)) { if (cfg == NULL) return; htp_hook_register(&cfg->hook_response_start, (htp_callback_fn_t) callback_fn); }
void htp_config_register_response_trailer_data(htp_cfg_t *cfg, int (*callback_fn)(htp_tx_data_t *d)) { if (cfg == NULL) return; htp_hook_register(&cfg->hook_response_trailer_data, (htp_callback_fn_t) callback_fn); }
void htp_config_register_request_trailer(htp_cfg_t *cfg, int (*callback_fn)(htp_tx_t *)) { if (cfg == NULL) return; htp_hook_register(&cfg->hook_request_trailer, (htp_callback_fn_t) callback_fn); }
void htp_config_register_request_header_data(htp_cfg_t *cfg, int (*callback_fn)(htp_tx_data_t *)) { if (cfg == NULL) return; htp_hook_register(&cfg->hook_request_header_data, (htp_callback_fn_t) callback_fn); }
void htp_config_register_log(htp_cfg_t *cfg, int (*callback_fn)(htp_log_t *)) { if (cfg == NULL) return; htp_hook_register(&cfg->hook_log, (htp_callback_fn_t) callback_fn); }
/** * Register callback for the transaction-specific RESPONSE_BODY_DATA hook. * * @param[in] tx * @param[in] callback_fn */ void htp_tx_register_response_body_data(htp_tx_t *tx, int (*callback_fn)(htp_tx_data_t *)) { if ((tx == NULL) || (callback_fn == NULL)) return; htp_hook_register(&tx->hook_response_body_data, (htp_callback_fn_t) callback_fn); }
/** * Register callback for the transaction-specific RESPONSE_BODY_DATA hook. * * @param[in] tx * @pram callback_fn */ void htp_tx_register_response_body_data(htp_tx_t *tx, int (*callback_fn)(htp_tx_data_t *)) { htp_hook_register(&tx->hook_response_body_data, (htp_callback_fn_t) callback_fn); }