diff options
| author | rburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-11-14 20:57:20 +0000 |
|---|---|---|
| committer | rburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-11-14 20:57:20 +0000 |
| commit | 6c55e0a529c7f1216ff6f63a4fc77ea06a2a3a38 (patch) | |
| tree | 91b0841faf23087ebe0c74dd4269d181a383f1e7 /src/tools/anopesmtp.c | |
| parent | 069409cd99cf78ab8bf87a1fe69a833576414fd3 (diff) | |
Insane commit of doom: s/ \t/g
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1681 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/tools/anopesmtp.c')
| -rw-r--r-- | src/tools/anopesmtp.c | 680 |
1 files changed, 340 insertions, 340 deletions
diff --git a/src/tools/anopesmtp.c b/src/tools/anopesmtp.c index f5981a851..d00bcdc18 100644 --- a/src/tools/anopesmtp.c +++ b/src/tools/anopesmtp.c @@ -23,37 +23,37 @@ static int curday = 0; #ifdef _WIN32 int strcasecmp(const char *s1, const char *s2) { - register int c; - - while ((c = tolower(*s1)) == tolower(*s2)) { - if (c == 0) - return 0; - s1++; - s2++; - } - if (c < tolower(*s2)) - return -1; - return 1; + register int c; + + while ((c = tolower(*s1)) == tolower(*s2)) { + if (c == 0) + return 0; + s1++; + s2++; + } + if (c < tolower(*s2)) + return -1; + return 1; } #endif static int get_logname(char *name, int count, struct tm *tm) { - char timestamp[32]; + char timestamp[32]; - if (!tm) { - time_t t; + if (!tm) { + time_t t; - time(&t); - tm = localtime(&t); - } + time(&t); + tm = localtime(&t); + } - strftime(timestamp, count, "%Y%m%d", tm); - snprintf(name, count, "logs/%s.%s", "anopesmtp", timestamp); - curday = tm->tm_yday; + strftime(timestamp, count, "%Y%m%d", tm); + snprintf(name, count, "logs/%s.%s", "anopesmtp", timestamp); + curday = tm->tm_yday; - return 1; + return 1; } /*************************************************************************/ @@ -62,28 +62,28 @@ static int get_logname(char *name, int count, struct tm *tm) void close_log(void) { - if (!logfile) - return; - fclose(logfile); - logfile = NULL; + if (!logfile) + return; + fclose(logfile); + logfile = NULL; } /*************************************************************************/ static void remove_log(void) { - time_t t; - struct tm tm; + time_t t; + struct tm tm; - char name[PATH_MAX]; + char name[PATH_MAX]; - time(&t); - t -= (60 * 60 * 24 * 30); - tm = *localtime(&t); + time(&t); + t -= (60 * 60 * 24 * 30); + tm = *localtime(&t); - if (!get_logname(name, sizeof(name), &tm)) - return; - unlink(name); + if (!get_logname(name, sizeof(name), &tm)) + return; + unlink(name); } /*************************************************************************/ @@ -93,35 +93,35 @@ static void remove_log(void) int open_log(void) { - char name[PATH_MAX]; + char name[PATH_MAX]; - if (logfile) - return 0; + if (logfile) + return 0; - if (!get_logname(name, sizeof(name), NULL)) - return 0; - logfile = fopen(name, "a"); + if (!get_logname(name, sizeof(name), NULL)) + return 0; + logfile = fopen(name, "a"); - if (logfile) - setbuf(logfile, NULL); - return logfile != NULL ? 0 : -1; + if (logfile) + setbuf(logfile, NULL); + return logfile != NULL ? 0 : -1; } /*************************************************************************/ static void checkday(void) { - time_t t; - struct tm tm; + time_t t; + struct tm tm; - time(&t); - tm = *localtime(&t); + time(&t); + tm = *localtime(&t); - if (curday != tm.tm_yday) { - close_log(); - remove_log(); - open_log(); - } + if (curday != tm.tm_yday) { + close_log(); + remove_log(); + open_log(); + } } /*************************************************************************/ @@ -132,33 +132,33 @@ static void checkday(void) void alog(const char *fmt, ...) { - va_list args; - time_t t; - struct tm tm; - char buf[256]; - int errno_save = errno; - - if (!smtp_debug) { - return; - } - - checkday(); - - if (!fmt) { - return; - } - - va_start(args, fmt); - time(&t); - tm = *localtime(&t); - strftime(buf, sizeof(buf) - 1, "[%b %d %H:%M:%S %Y] ", &tm); - if (logfile && args) { - fputs(buf, logfile); - vfprintf(logfile, fmt, args); - fputc('\n', logfile); - } - va_end(args); - errno = errno_save; + va_list args; + time_t t; + struct tm tm; + char buf[256]; + int errno_save = errno; + + if (!smtp_debug) { + return; + } + + checkday(); + + if (!fmt) { + return; + } + + va_start(args, fmt); + time(&t); + tm = *localtime(&t); + strftime(buf, sizeof(buf) - 1, "[%b %d %H:%M:%S %Y] ", &tm); + if (logfile && args) { + fputs(buf, logfile); + vfprintf(logfile, fmt, args); + fputc('\n', logfile); + } + va_end(args); + errno = errno_save; } /*************************************************************************/ @@ -166,12 +166,12 @@ void alog(const char *fmt, ...) /* Remove a trailing \r\n */ char *strip(char *buf) { - char *c; - if ((c = strchr(buf, '\n'))) - *c = 0; - if ((c = strchr(buf, '\r'))) - *c = 0; - return buf; + char *c; + if ((c = strchr(buf, '\n'))) + *c = 0; + if ((c = strchr(buf, '\r'))) + *c = 0; + return buf; } /*************************************************************************/ @@ -181,11 +181,11 @@ char *strip(char *buf) */ char *lftocrlf(char *buf) { - char *result = (char *)malloc(strlen(buf) + 2); - strip(buf); - strcpy(result, buf); - strcat(result, "\r\n"); - return result; + char *result = (char *)malloc(strlen(buf) + 2); + strip(buf); + strcpy(result, buf); + strcat(result, "\r\n"); + return result; } /*************************************************************************/ @@ -193,18 +193,18 @@ char *lftocrlf(char *buf) /* Add a header to the list */ void smtp_add_header(char *header) { - struct smtp_header *head = (struct smtp_header *)malloc(sizeof(struct smtp_header)); - - head->header = lftocrlf(header); - head->next = NULL; - - if (!mail.smtp_headers) { - mail.smtp_headers = head; - } - if (mail.smtp_headers_tail) { - mail.smtp_headers_tail->next = head; - } - mail.smtp_headers_tail = head; + struct smtp_header *head = (struct smtp_header *)malloc(sizeof(struct smtp_header)); + + head->header = lftocrlf(header); + head->next = NULL; + + if (!mail.smtp_headers) { + mail.smtp_headers = head; + } + if (mail.smtp_headers_tail) { + mail.smtp_headers_tail->next = head; + } + mail.smtp_headers_tail = head; } /*************************************************************************/ @@ -212,14 +212,14 @@ void smtp_add_header(char *header) /* Is the buffer a header? */ int smtp_is_header(char *buf) { - char *tmp = strchr(buf, ' '); + char *tmp = strchr(buf, ' '); - if (!tmp) - return 0; + if (!tmp) + return 0; - if (*(tmp - 1) == ':') - return 1; - return 0; + if (*(tmp - 1) == ':') + return 1; + return 0; } /*************************************************************************/ @@ -227,12 +227,12 @@ int smtp_is_header(char *buf) /* Parse a header into a name and value */ void smtp_parse_header(char *buf, char **header, char **value) { - strip(buf); + strip(buf); - *header = strtok(buf, " "); - *value = strtok(NULL, ""); - if (*header) - (*header)[strlen(*header) - 1] = 0; + *header = strtok(buf, " "); + *value = strtok(NULL, ""); + if (*header) + (*header)[strlen(*header) - 1] = 0; } /*************************************************************************/ @@ -240,11 +240,11 @@ void smtp_parse_header(char *buf, char **header, char **value) /* Have we reached the end of input? */ int smtp_is_end(char *buf) { - if (*buf == '.') - if (*(buf + 1) == '\r' || *(buf + 1) == '\n') - return 1; + if (*buf == '.') + if (*(buf + 1) == '\r' || *(buf + 1) == '\n') + return 1; - return 0; + return 0; } /*************************************************************************/ @@ -252,7 +252,7 @@ int smtp_is_end(char *buf) /* Set who the email is from */ void smtp_set_from(char *from) { - mail.from = strdup(from); + mail.from = strdup(from); } /*************************************************************************/ @@ -260,13 +260,13 @@ void smtp_set_from(char *from) /* Set who the email is to */ void smtp_set_to(char *to) { - char *c; + char *c; - if ((c = strrchr(to, '<')) && *(c + 1)) { - to = c + 1; - to[strlen(to) - 1] = 0; - } - mail.to = strdup(to); + if ((c = strrchr(to, '<')) && *(c + 1)) { + to = c + 1; + to[strlen(to) - 1] = 0; + } + mail.to = strdup(to); } /*************************************************************************/ @@ -274,18 +274,18 @@ void smtp_set_to(char *to) /* Add a line of body text */ void smtp_add_body_line(char *line) { - struct smtp_body_line *body; + struct smtp_body_line *body; - body = (struct smtp_body_line *)malloc(sizeof(struct smtp_body_line)); + body = (struct smtp_body_line *)malloc(sizeof(struct smtp_body_line)); - body->line = lftocrlf(line); - body->next = NULL; + body->line = lftocrlf(line); + body->next = NULL; - if (!mail.smtp_body) - mail.smtp_body = body; - if (mail.smtp_body_tail) - mail.smtp_body_tail->next = body; - mail.smtp_body_tail = body; + if (!mail.smtp_body) + mail.smtp_body = body; + if (mail.smtp_body_tail) + mail.smtp_body_tail->next = body; + mail.smtp_body_tail = body; } @@ -294,25 +294,25 @@ void smtp_add_body_line(char *line) /* Establish a connection to the SMTP server */ int smtp_connect(char *host, unsigned short port) { - struct sockaddr_in addr; - - if ((mail.sock = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR) - return 0; - - if ((addr.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE) { - struct hostent *hent; - if (!(hent = gethostbyname(host))) - return 0; - memcpy(&addr.sin_addr, hent->h_addr, hent->h_length); - } - addr.sin_family = AF_INET; - addr.sin_port = htons(port ? port : 25); - if (connect(mail.sock, (struct sockaddr *) &addr, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { - ano_sockclose(mail.sock); - return 0; - } - - return 1; + struct sockaddr_in addr; + + if ((mail.sock = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR) + return 0; + + if ((addr.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE) { + struct hostent *hent; + if (!(hent = gethostbyname(host))) + return 0; + memcpy(&addr.sin_addr, hent->h_addr, hent->h_length); + } + addr.sin_family = AF_INET; + addr.sin_port = htons(port ? port : 25); + if (connect(mail.sock, (struct sockaddr *) &addr, sizeof(struct sockaddr_in)) == SOCKET_ERROR) { + ano_sockclose(mail.sock); + return 0; + } + + return 1; } /*************************************************************************/ @@ -320,14 +320,14 @@ int smtp_connect(char *host, unsigned short port) /* Send a line of text */ int smtp_send(char *text) { - int result = ano_sockwrite(mail.sock, text, strlen(text)); + int result = ano_sockwrite(mail.sock, text, strlen(text)); - alog("SMTP: sent %s",text); + alog("SMTP: sent %s",text); - if (result == SOCKET_ERROR) - ano_sockclose(mail.sock); + if (result == SOCKET_ERROR) + ano_sockclose(mail.sock); - return result; + return result; } /*************************************************************************/ @@ -335,15 +335,15 @@ int smtp_send(char *text) /* Read a line of text */ int smtp_read(char *buf, int len) { - int result; + int result; - memset(buf, 0, len); - result = ano_sockread(mail.sock, buf, len); + memset(buf, 0, len); + result = ano_sockread(mail.sock, buf, len); - if (result == SOCKET_ERROR) - ano_sockclose(mail.sock); + if (result == SOCKET_ERROR) + ano_sockclose(mail.sock); - return result; + return result; } /*************************************************************************/ @@ -351,12 +351,12 @@ int smtp_read(char *buf, int len) /* Retrieve a response code */ int smtp_get_code(char *text) { - char *tmp = strtok(text, " "); + char *tmp = strtok(text, " "); - if (!tmp) - return 0; + if (!tmp) + return 0; - return atol(tmp); + return atol(tmp); } /*************************************************************************/ @@ -364,130 +364,130 @@ int smtp_get_code(char *text) /* Send the email */ int smtp_send_email() { - char buf[1024]; - struct smtp_header *head; - struct smtp_body_line *body; - int code; - int skip_done = 0; - - if (!smtp_read(buf, 1024)) { - alog("SMTP: error reading buffer"); - return 0; - } - - code = smtp_get_code(buf); - if (code != 220) { - alog("SMTP: error expected code 220 got %d",code); - return 0; - } - - if (!smtp_send("HELO anope\r\n")) { - alog("SMTP: error writting to socket"); - return 0; - } - - if (!smtp_read(buf, 1024)) { + char buf[1024]; + struct smtp_header *head; + struct smtp_body_line *body; + int code; + int skip_done = 0; + + if (!smtp_read(buf, 1024)) { + alog("SMTP: error reading buffer"); + return 0; + } + + code = smtp_get_code(buf); + if (code != 220) { + alog("SMTP: error expected code 220 got %d",code); + return 0; + } + + if (!smtp_send("HELO anope\r\n")) { + alog("SMTP: error writting to socket"); + return 0; + } + + if (!smtp_read(buf, 1024)) { alog("SMTP: error reading buffer"); - return 0; - } - - code = smtp_get_code(buf); - if (code != 250) { - alog("SMTP: error expected code 250 got %d",code); - return 0; - } - - strcpy(buf, "MAIL FROM: <"); - strcat(buf, mail.from); - strcat(buf, ">\r\n"); - - if (!smtp_send(buf)) { - alog("SMTP: error writting to socket"); - return 0; - } - - if (!smtp_read(buf, 1024)) { - alog("SMTP: error reading buffer"); - return 0; - } - - code = smtp_get_code(buf); - if (code != 250) - return 0; - - strcpy(buf, "RCPT TO: <"); - strcat(buf, mail.to); - strcat(buf, ">\r\n"); - - if (!smtp_send(buf)) { - alog("SMTP: error writting to socket"); - return 0; - } - - if (!smtp_read(buf, 1024)) { - alog("SMTP: error reading buffer"); - return 0; - } - - code = smtp_get_code(buf); - if (smtp_get_code(buf) != 250) { - alog("SMTP: error expected code 250 got %d",code); - return 0; - } - - if (!smtp_send("DATA\r\n")) { - alog("SMTP: error writting to socket"); - return 0; - } - - if (!smtp_read(buf, 1024)) { - alog("SMTP: error reading buffer"); - return 0; - } - - code = smtp_get_code(buf); - if (code != 354) { - alog("SMTP: error expected code 354 got %d",code); - return 0; - } - - for (head = mail.smtp_headers; head; head = head->next) { - if (!smtp_send(head->header)) { - alog("SMTP: error writting to socket"); - return 0; - } - } - - if (!smtp_send("\r\n")) { - alog("SMTP: error writting to socket"); - return 0; - } - - for (body = mail.smtp_body; body; body = body->next) { - if (skip_done) { - if (!smtp_send(body->line)) { - alog("SMTP: error writting to socket"); - return 0; - } - } else { - skip_done = 1; - } - } - - if (!smtp_send("\r\n.\r\n")) { - alog("SMTP: error writting to socket"); - return 0; - } - - return 1; + return 0; + } + + code = smtp_get_code(buf); + if (code != 250) { + alog("SMTP: error expected code 250 got %d",code); + return 0; + } + + strcpy(buf, "MAIL FROM: <"); + strcat(buf, mail.from); + strcat(buf, ">\r\n"); + + if (!smtp_send(buf)) { + alog("SMTP: error writting to socket"); + return 0; + } + + if (!smtp_read(buf, 1024)) { + alog("SMTP: error reading buffer"); + return 0; + } + + code = smtp_get_code(buf); + if (code != 250) + return 0; + + strcpy(buf, "RCPT TO: <"); + strcat(buf, mail.to); + strcat(buf, ">\r\n"); + + if (!smtp_send(buf)) { + alog("SMTP: error writting to socket"); + return 0; + } + + if (!smtp_read(buf, 1024)) { + alog("SMTP: error reading buffer"); + return 0; + } + + code = smtp_get_code(buf); + if (smtp_get_code(buf) != 250) { + alog("SMTP: error expected code 250 got %d",code); + return 0; + } + + if (!smtp_send("DATA\r\n")) { + alog("SMTP: error writting to socket"); + return 0; + } + + if (!smtp_read(buf, 1024)) { + alog("SMTP: error reading buffer"); + return 0; + } + + code = smtp_get_code(buf); + if (code != 354) { + alog("SMTP: error expected code 354 got %d",code); + return 0; + } + + for (head = mail.smtp_headers; head; head = head->next) { + if (!smtp_send(head->header)) { + alog("SMTP: error writting to socket"); + return 0; + } + } + + if (!smtp_send("\r\n")) { + alog("SMTP: error writting to socket"); + return 0; + } + + for (body = mail.smtp_body; body; body = body->next) { + if (skip_done) { + if (!smtp_send(body->line)) { + alog("SMTP: error writting to socket"); + return 0; + } + } else { + skip_done = 1; + } + } + + if (!smtp_send("\r\n.\r\n")) { + alog("SMTP: error writting to socket"); + return 0; + } + + return 1; } /*************************************************************************/ void smtp_disconnect() { - smtp_send("QUIT\r\n"); - ano_sockclose(mail.sock); + smtp_send("QUIT\r\n"); + ano_sockclose(mail.sock); } /*************************************************************************/ @@ -523,82 +523,82 @@ void mail_cleanup() int main(int argc, char *argv[]) { - char buf[8192]; + char buf[8192]; /* These are somehow unused - why are they here? -GD - struct smtp_body_line *b; - struct smtp_header *h; + struct smtp_body_line *b; + struct smtp_header *h; */ - int headers_done = 0; + int headers_done = 0; /* Win32 stuff */ #ifdef _WIN32 - WSADATA wsa; + WSADATA wsa; #endif - char *server, *aport; - short port; + char *server, *aport; + short port; - if (argc == 1) - return 0; + if (argc == 1) + return 0; - server = strtok(argv[1], ":"); - if ((aport = strtok(NULL, ""))) { - port = atoi(aport); - } else { - port = 25; - } + server = strtok(argv[1], ":"); + if ((aport = strtok(NULL, ""))) { + port = atoi(aport); + } else { + port = 25; + } if (!server) { - alog("No Server"); + alog("No Server"); /* Bad, bad, bad. This was a eturn from main with no value! -GD */ - return 0; - } else { - alog("SMTP: server %s port %d",server,port); - } + return 0; + } else { + alog("SMTP: server %s port %d",server,port); + } - memset(&mail, 0, sizeof(mail)); + memset(&mail, 0, sizeof(mail)); /* The WSAStartup function initiates use of WS2_32.DLL by a process. */ /* guessing we can skip it under *nix */ #ifdef _WIN32 - if (WSAStartup(MAKEWORD(1, 1), &wsa) != 0) - return 0; + if (WSAStartup(MAKEWORD(1, 1), &wsa) != 0) + return 0; #endif - /* Read the message and parse it */ - while (fgets(buf, 8192, stdin)) { - if (smtp_is_header(buf) && !headers_done) { - char *header, *value; - smtp_add_header(buf); - smtp_parse_header(buf, &header, &value); - if (!strcasecmp(header, "from")) { - alog("SMTP: from: %s",value); - smtp_set_from(value); - } else if (!strcasecmp(header, "to")) { - alog("SMTP: to: %s",value); - smtp_set_to(value); - } else if (smtp_is_end(buf)) { - break; - } else { - headers_done = 1; - smtp_add_body_line(buf); - } - } else { - smtp_add_body_line(buf); - } - } - - if (!smtp_connect(server, port)) { - alog("SMTP: failed to connect to %s:%d",server, port); + /* Read the message and parse it */ + while (fgets(buf, 8192, stdin)) { + if (smtp_is_header(buf) && !headers_done) { + char *header, *value; + smtp_add_header(buf); + smtp_parse_header(buf, &header, &value); + if (!strcasecmp(header, "from")) { + alog("SMTP: from: %s",value); + smtp_set_from(value); + } else if (!strcasecmp(header, "to")) { + alog("SMTP: to: %s",value); + smtp_set_to(value); + } else if (smtp_is_end(buf)) { + break; + } else { + headers_done = 1; + smtp_add_body_line(buf); + } + } else { + smtp_add_body_line(buf); + } + } + + if (!smtp_connect(server, port)) { + alog("SMTP: failed to connect to %s:%d",server, port); mail_cleanup(); - return 0; - } - if (!smtp_send_email()) { - alog("SMTP: error during sending of mail"); + return 0; + } + if (!smtp_send_email()) { + alog("SMTP: error during sending of mail"); mail_cleanup(); - return 0; - } - smtp_disconnect(); + return 0; + } + smtp_disconnect(); mail_cleanup(); - return 1; + return 1; } |
