http业务层与解析层集成。
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <tfe_stream.h>
|
||||
#include <tfe_utils.h>
|
||||
#include <tfe_http.h>
|
||||
#include <tfe_plugin.h>
|
||||
|
||||
#include <MESA/Maat_rule.h>
|
||||
#include <MESA/MESA_handle_logger.h>
|
||||
@@ -114,7 +115,7 @@ static Maat_feather_t create_maat_feather(const char* profile, const char* secti
|
||||
}
|
||||
return target;
|
||||
}
|
||||
void pangu_http_init(struct tfe_proxy * proxy)
|
||||
int pangu_http_init(struct tfe_proxy * proxy)
|
||||
{
|
||||
const char* profile="./pangu/pangu_pxy.conf";
|
||||
const char* logfile="./log/pangu_pxy.log";
|
||||
@@ -158,11 +159,11 @@ void pangu_http_init(struct tfe_proxy * proxy)
|
||||
g_pangu_rt->tpl_451 = ctemplate::Template::GetTemplate(page_path,ctemplate::DO_NOT_STRIP);
|
||||
|
||||
TFE_LOG_INFO(NULL, "Pangu HTTP init success.");
|
||||
return;
|
||||
return 0;
|
||||
|
||||
error_out:
|
||||
TFE_LOG_ERROR(NULL, "Pangu HTTP init failed.");
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
static void _wrap_std_field_write(struct tfe_http_half * half, enum tfe_http_std_field field_id, const char * value)
|
||||
{
|
||||
@@ -344,7 +345,7 @@ static void html_free(char** page_buff)
|
||||
FREE(page_buff);
|
||||
return;
|
||||
}
|
||||
static int is_http_request(uint64_t events)
|
||||
static int is_http_request(enum tfe_http_event events)
|
||||
{
|
||||
if((events&EV_HTTP_REQ_HDR)|(events&EV_HTTP_REQ_BODY_BEGIN)|(events&EV_HTTP_REQ_BODY_END)|(events&EV_HTTP_REQ_BODY_CONT))
|
||||
{
|
||||
@@ -365,7 +366,7 @@ enum replace_zone zone_name_to_id(const char* name)
|
||||
"http_resp_body",
|
||||
"http_resp_body"};
|
||||
size_t i=0;
|
||||
for(i=0;i< sizeof(std_name)/sizeof(const char*);i++)
|
||||
for(i=0; i<sizeof(std_name)/sizeof(const char*); i++)
|
||||
{
|
||||
if(0==strcasecmp(name,std_name[i]))
|
||||
{
|
||||
@@ -581,7 +582,7 @@ struct evbuffer* execute_replace_rule(const char* in, size_t in_sz,
|
||||
return out;
|
||||
}
|
||||
void http_replace(const struct tfe_stream * stream, const struct tfe_http_session * session,
|
||||
uint64_t events, const char* body_frag, size_t frag_size,struct pangu_http_ctx* ctx)
|
||||
enum tfe_http_event events, const unsigned char* body_frag, size_t frag_size,struct pangu_http_ctx* ctx)
|
||||
{
|
||||
void* interator=NULL;
|
||||
struct http_field_name tmp_name;
|
||||
@@ -688,7 +689,7 @@ void http_replace(const struct tfe_stream * stream, const struct tfe_http_sessio
|
||||
|
||||
|
||||
}
|
||||
static void http_reject(const struct tfe_http_session * session, uint64_t events, struct pangu_http_ctx* ctx)
|
||||
static void http_reject(const struct tfe_http_session * session, enum tfe_http_event events, struct pangu_http_ctx* ctx)
|
||||
{
|
||||
|
||||
int resp_code=0,ret=0;
|
||||
@@ -719,7 +720,7 @@ error_out:
|
||||
html_free(&page_buff);
|
||||
return;
|
||||
}
|
||||
static void http_redirect(const struct tfe_http_session * session, uint64_t events, struct pangu_http_ctx* ctx)
|
||||
static void http_redirect(const struct tfe_http_session * session, enum tfe_http_event events, struct pangu_http_ctx* ctx)
|
||||
{
|
||||
int resp_code=0,ret=0;
|
||||
char* url=NULL;
|
||||
@@ -745,8 +746,8 @@ error_out:
|
||||
return;
|
||||
}
|
||||
|
||||
enum pangu_action http_scan(const struct tfe_http_session * session, uint64_t events,
|
||||
const char* body_frag, size_t frag_size, struct pangu_http_ctx* ctx)
|
||||
enum pangu_action http_scan(const struct tfe_http_session * session, enum tfe_http_event events,
|
||||
const unsigned char* body_frag, size_t frag_size, struct pangu_http_ctx* ctx)
|
||||
{
|
||||
void * interator=NULL;
|
||||
const char* field_val=NULL;
|
||||
@@ -795,7 +796,7 @@ enum pangu_action http_scan(const struct tfe_http_session * session, uint64_t ev
|
||||
}
|
||||
if(body_frag!=NULL)
|
||||
{
|
||||
scan_ret=Maat_stream_scan_string(&(ctx->sp),CHARSET_UTF8, body_frag, (int)frag_size
|
||||
scan_ret=Maat_stream_scan_string(&(ctx->sp),CHARSET_UTF8, (const char*)body_frag, (int)frag_size
|
||||
,result+hit_cnt, NULL, MAX_SCAN_RESULT-hit_cnt, &(ctx->mid));
|
||||
if(scan_ret>0)
|
||||
{
|
||||
@@ -853,6 +854,7 @@ void pangu_on_http_begin(const struct tfe_stream * stream,
|
||||
{
|
||||
tfe_http_session_detach(session);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -871,8 +873,8 @@ void pangu_on_http_end(const struct tfe_stream * stream,
|
||||
return;
|
||||
}
|
||||
|
||||
void pangu_on_http_data(const struct tfe_stream * stream, const struct tfe_http_session * session,
|
||||
uint64_t events, const char* body_frag, size_t frag_size, unsigned int thread_id, void ** pme)
|
||||
void pangu_on_http_data(const struct tfe_stream * stream, const struct tfe_http_session * session,
|
||||
enum tfe_http_event events, const unsigned char * body_frag, size_t frag_size, unsigned int thread_id, void ** pme)
|
||||
{
|
||||
struct pangu_http_ctx* ctx=*(struct pangu_http_ctx**)pme;
|
||||
enum pangu_action hit_action=PG_ACTION_NONE;
|
||||
@@ -909,4 +911,17 @@ Re_Enter:
|
||||
|
||||
return;
|
||||
}
|
||||
struct tfe_plugin pangu_http_spec={
|
||||
.symbol=NULL,
|
||||
.type = TFE_PLUGIN_TYPE_BUSINESS,
|
||||
.on_init = pangu_http_init,
|
||||
.on_deinit = NULL,
|
||||
.on_open = NULL,
|
||||
.on_data = NULL,
|
||||
.on_close = NULL,
|
||||
.on_session_begin=pangu_on_http_begin,
|
||||
.on_session_data=pangu_on_http_data,
|
||||
.on_session_end=pangu_on_http_end
|
||||
};
|
||||
TFE_PLUGIN_REGISTER(pangu_http, pangu_http_spec)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user