diff options
| author | zhuzhenjun <[email protected]> | 2024-11-27 08:59:59 +0000 |
|---|---|---|
| committer | zhuzhenjun <[email protected]> | 2024-11-27 08:59:59 +0000 |
| commit | 021d5da694b9e73b01a87a3510c365193371cf52 (patch) | |
| tree | 0ac15411256b78ed81cd6682ae73264c70608759 /decoders/mail/mail_decoder_smtp.c | |
| parent | 3694c142d974ab35f55bde4a8519525b9afcbc84 (diff) | |
init mail decoderdev-mail-decoder
Diffstat (limited to 'decoders/mail/mail_decoder_smtp.c')
| -rw-r--r-- | decoders/mail/mail_decoder_smtp.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/decoders/mail/mail_decoder_smtp.c b/decoders/mail/mail_decoder_smtp.c index e8a6fc1..5ad8370 100644 --- a/decoders/mail/mail_decoder_smtp.c +++ b/decoders/mail/mail_decoder_smtp.c @@ -268,7 +268,7 @@ static int process_user_pass(struct smtp_parser *parser, struct session *sess, c email->plug_mailinfo.pMailInfo->username->buf, email->plug_mailinfo.pMailInfo->username->buflen); mail_seq = email_parser_get_seq(parser->eml_parser); - mail_publish_command(parser->mail_env_ref, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); + mail_publish_command(parser->mq, parser->command_topic_id, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); } if((email->MailInfoState & MAIL_AFTER_PASS) && email->plug_mailinfo.pMailInfo->password->buf != NULL) { mail_command_update(parser->current_command, MAIL_CMD_PASSWORD, @@ -276,7 +276,7 @@ static int process_user_pass(struct smtp_parser *parser, struct session *sess, c email->plug_mailinfo.pMailInfo->password->buf, email->plug_mailinfo.pMailInfo->password->buflen); mail_seq = email_parser_get_seq(parser->eml_parser); - mail_publish_command(parser->mail_env_ref, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); + mail_publish_command(parser->mq, parser->command_topic_id, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); } return 0; @@ -312,7 +312,7 @@ int process_oauth2(struct smtp_parser *parser, struct session *sess, char *cmdda email->plug_mailinfo.pMailInfo->username->buf, email->plug_mailinfo.pMailInfo->username->buflen); mail_seq = email_parser_get_seq(parser->eml_parser); - mail_publish_command(parser->mail_env_ref, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); + mail_publish_command(parser->mq, parser->command_topic_id, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); return 0; } @@ -342,7 +342,7 @@ int process_ehlo(struct smtp_parser *parser, struct session *sess, const char *l mail_command_update(parser->current_command, MAIL_CMD_EHLO, arg_start, arg_len, line_start, line_len); mail_seq = email_parser_get_seq(parser->eml_parser); - mail_publish_command(parser->mail_env_ref, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); + mail_publish_command(parser->mq, parser->command_topic_id, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); return 0; } @@ -377,7 +377,7 @@ int process_mail_from(struct smtp_parser *parser, struct session *sess, char *li mail_command_update(parser->current_command, MAIL_CMD_MAIL_FROM, arg_start, arg_len, line_start, line_len); mail_seq = email_parser_get_seq(parser->eml_parser); - mail_publish_command(parser->mail_env_ref, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); + mail_publish_command(parser->mq, parser->command_topic_id, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); return 0; } @@ -414,7 +414,7 @@ int process_rcpt_to(struct smtp_parser *parser, struct session *sess, char *line mail_command_update(parser->current_command, MAIL_CMD_RCPT_TO, arg_start, arg_len, line_start, line_len); mail_seq = email_parser_get_seq(parser->eml_parser); - mail_publish_command(parser->mail_env_ref, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); + mail_publish_command(parser->mq, parser->command_topic_id, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); return 0; } @@ -433,7 +433,7 @@ int process_starttls(struct smtp_parser *parser, struct session *sess, char *lin mail_command_update(parser->current_command, MAIL_CMD_STARTTLS, NULL, 0, line_start, line_len); mail_seq = email_parser_get_seq(parser->eml_parser); - mail_publish_command(parser->mail_env_ref, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); + mail_publish_command(parser->mq, parser->command_topic_id, sess, MAIL_PROTOCOL_SMTP, mail_seq, parser->current_command); return 0; } @@ -561,12 +561,13 @@ void smtp_parser_free(struct smtp_parser *parser) free(parser); } -struct smtp_parser *smtp_parser_new(struct mail_decoder *env, int is_c2s) +struct smtp_parser *smtp_parser_new(struct mq_runtime *mq, struct mail_topics *topics, int is_c2s) { struct smtp_parser *parser = (struct smtp_parser *)calloc(1, sizeof(struct smtp_parser)); - parser->mail_env_ref = env; + parser->mq = mq; + parser->command_topic_id = topics->topic_ids[MAIL_TOPIC_COMMAND]; parser->current_command = mail_command_new(); - parser->eml_parser = email_parser_new(env, MAIL_PROTOCOL_SMTP, is_c2s); + parser->eml_parser = email_parser_new(mq, topics, MAIL_PROTOCOL_SMTP, is_c2s); return parser; } |
