Advertisement
Guest User

Untitled

a guest
Jan 8th, 2019
496
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.05 KB | None | 0 0
  1. int prepare_sockets(socket_controls* sockets, letter_info* info, int letter_count){
  2.    
  3.     int n = 0;
  4.     for(size_t i = 0; i < letter_count; i++)
  5.     {
  6.         if(find_socket_by_name(sockets, n, info[i].to.host) < 0)
  7.         {
  8.             printf("Letters to send:\n");
  9.             for(size_t i = 0; i < 1; i++)
  10.             {
  11.                 printf("TO: %s@%s\n", info[i].to.user, info[i].to.host);
  12.                 printf("FROM: %s@%s\n", info[i].from.user, info[i].from.host);
  13.                 printf("PATH: %s\n\n", info[i].file_path);
  14.             }
  15.             sockets[n].name = strdup(info[i].to.host);
  16.  
  17.             printf("Letters to send2:\n");
  18.             for(size_t i = 0; i < 1; i++)
  19.             {
  20.                 printf("TO: %s@%s\n", info[i].to.user, info[i].to.host);
  21.                 printf("FROM: %s@%s\n", info[i].from.user, info[i].from.host);
  22.                 printf("PATH: %s\n\n", info[i].file_path);
  23.             }
  24.             char* ans = get_mxserver_name(info[i].to.host);
  25.             printf("Letters to send3:\n");
  26.             for(size_t i = 0; i < 1; i++)
  27.             {
  28.                 printf("TO: %s@%s\n", info[i].to.user, info[i].to.host);
  29.                 printf("FROM: %s@%s\n", info[i].from.user, info[i].from.host);
  30.                 printf("PATH: %s\n\n", info[i].file_path);
  31.             }
  32.             struct addrinfo rrr =  get_first_addrinfo(ans, "25");            
  33.             int sd = socket(rrr.ai_family, rrr.ai_socktype, rrr.ai_protocol);
  34.             if (sd < 0)
  35.             {
  36.                 perror("socket() failed");
  37.                 break;
  38.             }
  39.             int on = 1;
  40.             int rc = setsockopt(sd, SOL_SOCKET,  SO_REUSEADDR, (char *)&on, sizeof(on));
  41.             if (rc < 0)
  42.             {
  43.                 perror("setsockopt() failed");
  44.                 close(sd);
  45.                 exit(-1);
  46.             }
  47.  
  48.             rc = ioctl(sd, FIONBIO, (char *)&on);
  49.             if (rc < 0)
  50.             {
  51.                 perror("ioctl() failed");
  52.                 close(sd);
  53.                 exit(-1);
  54.             }
  55.  
  56.             rc = connect(sd, rrr.ai_addr, rrr.ai_addrlen);
  57.             sockets[n].soket_dscr = sd;
  58.             sockets[n].state = DEAD;
  59.             sockets[i].next_event = 0;
  60.             n++;
  61.         }
  62.     }
  63.     printf("Letters to send AAAA:\n");
  64.             for(size_t i = 0; i < letter_count; i++)
  65.             {
  66.                 printf("TO: %s@%s\n", info[i].to.user, info[i].to.host);
  67.                 printf("FROM: %s@%s\n", info[i].from.user, info[i].from.host);
  68.                 printf("PATH: %s\n\n", info[i].file_path);
  69.             }
  70.    return 0;
  71. }
  72. --
  73. int find_socket_by_name(socket_controls* sockets, int sockets_count, char* name){
  74.    
  75.     for(size_t i = 0; i < sockets_count; i++)
  76.     {
  77.         if(strcmp(name, sockets[i].name) == 0)
  78.             return i;
  79.     }
  80.     return -1;
  81. }
  82.  
  83.  
  84. char * get_mxserver_name(const char *name){
  85.     char *mxs[10];
  86.     int a;
  87.     a=resolvmx(name, mxs, 10);
  88.     return mxs[a-1];
  89. }
  90. --
  91. output:
  92. Letters to send:
  93. TO: das00@inbox.ru
  94. FROM: ochko2@bmstu.ru
  95. PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
  96.  
  97. Letters to send2:
  98. TO: das00@inbox.ru
  99. FROM: ochko2@bmstu.ru
  100. PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
  101.  
  102. Letters to send3:
  103. TO: das00@inbox.ru
  104. FROM: ochko2@bmstu.ru
  105. PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
  106.  
  107. Letters to send:
  108. TO: das00@inbox.ru
  109. FROM: ochko2@bmstu.ru
  110. PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
  111.  
  112. Letters to send2:
  113. TO: das00@inbox.ru
  114. FROM: ochko2@bmstu.ru
  115. PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
  116.  
  117. Letters to send3:
  118. TO: das00@inbox.ru
  119. FROM: ochko2@bmstu.ru
  120. PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
  121.  
  122. Letters to send AAAA:
  123. TO: das00@inbox.ru
  124. FROM: ochko2@
  125. PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter02
  126.  
  127. TO: das00@inbox.ru
  128. FROM: ochko@bmstu.ru
  129. PATH: /home/a1/Documents/mail/inbox.ru/das00/new/letter01
  130.  
  131. TO: awervolf@yandex.ru
  132. FROM: ochko@bmstu.ru
  133. PATH: /home/a1/Documents/mail/yandex.ru/awervolf/new/letter01
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement