summaryrefslogtreecommitdiff
path: root/decoders/mail/mail_decoder_smtp.c
diff options
context:
space:
mode:
authorzhuzhenjun <[email protected]>2024-11-27 08:59:59 +0000
committerzhuzhenjun <[email protected]>2024-11-27 08:59:59 +0000
commit021d5da694b9e73b01a87a3510c365193371cf52 (patch)
tree0ac15411256b78ed81cd6682ae73264c70608759 /decoders/mail/mail_decoder_smtp.c
parent3694c142d974ab35f55bde4a8519525b9afcbc84 (diff)
init mail decoderdev-mail-decoder
Diffstat (limited to 'decoders/mail/mail_decoder_smtp.c')
-rw-r--r--decoders/mail/mail_decoder_smtp.c21
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;
}