Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int prepare_sockets(socket_controls* sockets, letter_info* info, int letter_count){
- int n = 0;
- for(size_t i = 0; i < letter_count; i++)
- {
- if(find_socket_by_name(sockets, n, info[i].to.host) < 0)
- {
- printf("Letters to send:\n");
- for(size_t i = 0; i < 1; i++)
- {
- printf("TO: %s@%s\n", info[i].to.user, info[i].to.host);
- printf("FROM: %s@%s\n", info[i].from.user, info[i].from.host);
- printf("PATH: %s\n\n", info[i].file_path);
- }
- sockets[n].name = strdup(info[i].to.host);
- printf("Letters to send2:\n");
- for(size_t i = 0; i < 1; i++)
- {
- printf("TO: %s@%s\n", info[i].to.user, info[i].to.host);
- printf("FROM: %s@%s\n", info[i].from.user, info[i].from.host);
- printf("PATH: %s\n\n", info[i].file_path);
- }
- char* ans = get_mxserver_name(info[i].to.host);
- printf("Letters to send3:\n");
- for(size_t i = 0; i < 1; i++)
- {
- printf("TO: %s@%s\n", info[i].to.user, info[i].to.host);
- printf("FROM: %s@%s\n", info[i].from.user, info[i].from.host);
- printf("PATH: %s\n\n", info[i].file_path);
- }
- struct addrinfo rrr = get_first_addrinfo(ans, "25");
- int sd = socket(rrr.ai_family, rrr.ai_socktype, rrr.ai_protocol);
- if (sd < 0)
- {
- perror("socket() failed");
- break;
- }
- int on = 1;
- int rc = setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on));
- if (rc < 0)
- {
- perror("setsockopt() failed");
- close(sd);
- exit(-1);
- }
- rc = ioctl(sd, FIONBIO, (char *)&on);
- if (rc < 0)
- {
- perror("ioctl() failed");
- close(sd);
- exit(-1);
- }
- rc = connect(sd, rrr.ai_addr, rrr.ai_addrlen);
- sockets[n].soket_dscr = sd;
- sockets[n].state = DEAD;
- sockets[i].next_event = 0;
- n++;
- }
- }
- printf("Letters to send AAAA:\n");
- for(size_t i = 0; i < letter_count; i++)
- {
- printf("TO: %s@%s\n", info[i].to.user, info[i].to.host);
- printf("FROM: %s@%s\n", info[i].from.user, info[i].from.host);
- printf("PATH: %s\n\n", info[i].file_path);
- }
- return 0;
- }
- --
- int find_socket_by_name(socket_controls* sockets, int sockets_count, char* name){
- for(size_t i = 0; i < sockets_count; i++)
- {
- if(strcmp(name, sockets[i].name) == 0)
- return i;
- }
- return -1;
- }
- char * get_mxserver_name(const char *name){
- char *mxs[10];
- int a;
- a=resolvmx(name, mxs, 10);
- return mxs[a-1];
- }
- --
- output:
- Letters to send:
- TO: das00@inbox.ru
- FROM: ochko2@bmstu.ru
- PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
- Letters to send2:
- TO: das00@inbox.ru
- FROM: ochko2@bmstu.ru
- PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
- Letters to send3:
- TO: das00@inbox.ru
- FROM: ochko2@bmstu.ru
- PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
- Letters to send:
- TO: das00@inbox.ru
- FROM: ochko2@bmstu.ru
- PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
- Letters to send2:
- TO: das00@inbox.ru
- FROM: ochko2@bmstu.ru
- PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
- Letters to send3:
- TO: das00@inbox.ru
- FROM: ochko2@bmstu.ru
- PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
- Letters to send AAAA:
- TO: das00@inbox.ru
- FROM: ochko2@
- PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
- TO: das00@inbox.ru
- FROM: ochko@bmstu.ru
- PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter01
- TO: awervolf@yandex.ru
- FROM: ochko@bmstu.ru
- PATH: /home/a1/Documents/mail/yandex.ru/awervolf/new/letter01
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement