/[imapfilter]/imapfilter/request.c
ViewVC logotype

Diff of /imapfilter/request.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.32 by lefcha, Sat Jul 27 14:56:51 2002 UTC revision 1.32.2.8 by lefcha, Fri Mar 28 16:57:52 2003 UTC
# Line 58  int check_namespace(int *sock, namesp_t Line 58  int check_namespace(int *sock, namesp_t
58   */   */
59  int login(int *sock, char *user, char *pass)  int login(int *sock, char *user, char *pass)
60  {  {
     log_info(LOG_USERNAME, user);  
   
61      return server_response(sock, imap_login(sock, user, pass));      return server_response(sock, imap_login(sock, user, pass));
62  }  }
63    
# Line 124  int close_mailbox(int *sock) Line 122  int close_mailbox(int *sock)
122   */   */
123  int logout(int *sock)  int logout(int *sock)
124  {  {
125      return server_response(sock, imap_logout(sock));      return logout_response(sock, imap_logout(sock));
126  }  }
127    
128    
# Line 372  int apply_action(char *mesgs, unsigned i Line 370  int apply_action(char *mesgs, unsigned i
370          return 0;          return 0;
371    
372      log_info(LOG_ACTION, type);      log_info(LOG_ACTION, type);
373        log_info(LOG_DESTINATION_ACCOUNT, raccount->key);
374      log_info(LOG_DESTINATION_MAILBOX, destmbox);      log_info(LOG_DESTINATION_MAILBOX, destmbox);
375    
376      cnt = count_messages(mesgs);      cnt = count_messages(mesgs);
# Line 414  int apply_action(char *mesgs, unsigned i Line 413  int apply_action(char *mesgs, unsigned i
413          action_list(mesgs, args);          action_list(mesgs, args);
414          break;          break;
415      }      }
416        
417      if (!*args)      if (*args == '\0')
418          log_info(LOG_WRITE, NULL);          log_info(LOG_PREAMBLE, NULL);
419    
420      return 0;      return 0;
421  }  }
# Line 433  int action_delete(char *mesgs, char *arg Line 432  int action_delete(char *mesgs, char *arg
432    
433      m = mcp = convert_messages(mesgs);      m = mcp = convert_messages(mesgs);
434    
435      while ((tok = strsep(&m, " ")))      tok = strtok_r(m, " ", &m);
436        while (tok) {
437          server_response(&sockpri, imap_store(&sockpri, tok,          server_response(&sockpri, imap_store(&sockpri, tok,
438                                               STORE_FLAG_ADD, "\\Deleted"));                                               STORE_FLAG_ADD, "\\Deleted"));
439    
440            tok = strtok_r(NULL, " ", &m);
441        }
442    
443      if (options & OPTION_EXPUNGE)      if (options & OPTION_EXPUNGE)
444          server_response(&sockpri, imap_expunge(&sockpri));          server_response(&sockpri, imap_expunge(&sockpri));
445    
# Line 458  int action_copy(char *mesgs, char *destm Line 461  int action_copy(char *mesgs, char *destm
461    
462      m = mcp = convert_messages(mesgs);      m = mcp = convert_messages(mesgs);
463    
464      while ((tok = strsep(&m, " "))) {      tok = strtok_r(m, " ", &m);
465        while (tok) {
466          if ((r = copy_response(&sockpri,          if ((r = copy_response(&sockpri,
467                                 imap_copy(&sockpri, tok, destmbox))) ==                                 imap_copy(&sockpri, tok, destmbox))) ==
468              RESPONSE_TRYCREATE)              RESPONSE_TRYCREATE)
# Line 469  int action_copy(char *mesgs, char *destm Line 473  int action_copy(char *mesgs, char *destm
473                  r = copy_response(&sockpri,                  r = copy_response(&sockpri,
474                                    imap_copy(&sockpri, tok, destmbox));                                    imap_copy(&sockpri, tok, destmbox));
475              }              }
476            tok = strtok_r(NULL, " ", &m);
477      }      }
478    
479      xfree(mcp);      xfree(mcp);
# Line 494  int action_move(char *mesgs, char *destm Line 499  int action_move(char *mesgs, char *destm
499   */   */
500  int action_rcopy(char *mesgs, account_t * destacc, char *destmbox, char *args)  int action_rcopy(char *mesgs, account_t * destacc, char *destmbox, char *args)
501  {  {
502      int r, at, ft;      int r, ta, tf;
503      char *tok, *m, *mcp, *ndm;      char *tok, *m, *mcp, *ndm;
504      unsigned int n;      unsigned int n;
505      char buf[RESPONSE_BUF];      char buf[RESPONSE_BUF * 2 + 1];
506    
507      if (init_connection(&sockaux, destacc->server, destacc->port,      if (init_connection(&sockaux, destacc->server, destacc->port,
508                          destacc->ssl))                          destacc->ssl))
# Line 531  int action_rcopy(char *mesgs, account_t Line 536  int action_rcopy(char *mesgs, account_t
536      /* apply_namespace() returns a pointer to a static buffer. */      /* apply_namespace() returns a pointer to a static buffer. */
537      ndm = apply_namespace(destmbox, nspaux.prefix, nspaux.delim);      ndm = apply_namespace(destmbox, nspaux.prefix, nspaux.delim);
538    
539      r = check_mailbox(&sockaux, ndm, &nspaux);      r = check_mailbox(&sockaux, destmbox, &nspaux);
540    
541      if (r == RESPONSE_OK)      if (r == RESPONSE_OK)
542          close_mailbox(&sockaux);          close_mailbox(&sockaux);
# Line 542  int action_rcopy(char *mesgs, account_t Line 547  int action_rcopy(char *mesgs, account_t
547      }      }
548      m = mcp = xstrdup(mesgs);      m = mcp = xstrdup(mesgs);
549    
550      while ((tok = strsep(&m, " "))) {      tok = strtok_r(m, " ", &m);
551        while (tok) {
552          fetchsize_response(&sockpri, &n,          fetchsize_response(&sockpri, &n,
553                             imap_fetch(&sockpri, tok, "RFC822.SIZE"));                             imap_fetch(&sockpri, tok, "RFC822.SIZE"));
554    
555          at = imap_append(&sockaux, ndm, n);          ta = imap_append(&sockaux, ndm, n);
556    
557          fetch_response(&sockpri, 1, NULL, 0);          fetch_response(&sockpri, 0, 1, NULL);
558          ft = imap_fetch(&sockpri, tok, "RFC822.HEADER");          tf = imap_fetch(&sockpri, tok, "RFC822.HEADER");
559          do {          do {
560              r = fetch_response(&sockpri, 0, buf, ft);              r = fetch_response(&sockpri, tf, 0, buf);
561              socket_write(&sockaux, buf);              socket_write(&sockaux, buf);
562          } while (r == RESPONSE_NONE);          } while (r == RESPONSE_NONE);
563    
564          socket_write(&sockaux, "\r\n");          socket_write(&sockaux, "\r\n");
565    
566          fetch_response(&sockpri, 1, NULL, 0);          fetch_response(&sockpri, 0, 1, NULL);
567          ft = imap_fetch(&sockpri, tok, "BODY[TEXT]");          tf = imap_fetch(&sockpri, tok, "BODY[TEXT]");
568          do {          do {
569              r = fetch_response(&sockpri, 0, buf, ft);              r = fetch_response(&sockpri, tf, 0, buf);
570              socket_write(&sockaux, buf);              if (r != RESPONSE_NULLBODY)
571                    socket_write(&sockaux, buf);
572          } while (r == RESPONSE_NONE);          } while (r == RESPONSE_NONE);
573    
574          socket_write(&sockaux, "\r\n\r\n");          if (r != RESPONSE_NULLBODY)
575                socket_write(&sockaux, "\r\n\r\n");
576            else
577                socket_write(&sockaux, "\r\n");
578    
579          append_response(&sockaux, at);          append_response(&sockaux, ta);
580    
581            tok = strtok_r(NULL, " ", &m);
582      }      }
583    
584      logout(&sockaux);      logout(&sockaux);
# Line 632  int action_flag(char *mesgs, unsigned in Line 644  int action_flag(char *mesgs, unsigned in
644    
645      m = mcp = convert_messages(mesgs);      m = mcp = convert_messages(mesgs);
646    
647      while ((tok = strsep(&m, " ")))      tok = strtok_r(m, " ", &m);
648        while (tok) {
649          server_response(&sockpri, imap_store(&sockpri, tok, t, s));          server_response(&sockpri, imap_store(&sockpri, tok, t, s));
650    
651            tok = strtok_r(NULL, " ", &m);
652        }
653    
654      if (options & OPTION_EXPUNGE)      if (options & OPTION_EXPUNGE)
655          server_response(&sockpri, imap_expunge(&sockpri));          server_response(&sockpri, imap_expunge(&sockpri));
656    
# Line 651  int action_list(char *mesgs, char *args) Line 667  int action_list(char *mesgs, char *args)
667      int r, t;      int r, t;
668      char *tok, *mcp, *m;      char *tok, *mcp, *m;
669      char s[ARGS_LEN + 27];      char s[ARGS_LEN + 27];
670      char hdrs[RESPONSE_BUF];      char hdrs[RESPONSE_BUF * 2 + 1];
671    
672      if (!*args)      if (!*args)
673          return 0;          return 0;
# Line 660  int action_list(char *mesgs, char *args) Line 676  int action_list(char *mesgs, char *args)
676    
677      snprintf(s, ARGS_LEN + 27 - 1, "BODY.PEEK[HEADER.FIELDS (%s)]", args);      snprintf(s, ARGS_LEN + 27 - 1, "BODY.PEEK[HEADER.FIELDS (%s)]", args);
678    
679      while ((tok = strsep(&m, " "))) {      tok = strtok_r(m, " ", &m);
680        while (tok) {
681          /* Reset internal fetch counter. */          /* Reset internal fetch counter. */
682          fetch_response(&sockpri, 1, NULL, 0);          fetch_response(&sockpri, 0, 1, NULL);
683          t = imap_fetch(&sockpri, tok, s);          t = imap_fetch(&sockpri, tok, s);
684          do {          log_info(LOG_PREAMBLE, NULL);
             r = fetch_response(&sockpri, 0, hdrs, t);  
685    
686            do {
687                r = fetch_response(&sockpri, t, 0, hdrs);
688                
689              if (*hdrs) {              if (*hdrs) {
690                  if (options & OPTION_HEADERS)                  if (options & OPTION_HEADERS)
691                      info("%s\n", hdrs);                      info("%s\n", hdrs);
692                  log_info(LOG_WRITE, hdrs);                  log_info(LOG_HEADER, hdrs);
             } else {  
                 log_info(LOG_WRITE, NULL);  
693              }              }
694          } while (r == RESPONSE_NONE);          } while (r == RESPONSE_NONE);
695            tok = strtok_r(NULL, " ", &m);
696      }      }
697    
698      xfree(mcp);      xfree(mcp);
# Line 707  unsigned int count_messages(char *mesgs) Line 725  unsigned int count_messages(char *mesgs)
725   */   */
726  char *convert_messages(char *mesgs)  char *convert_messages(char *mesgs)
727  {  {
728      unsigned int maxlen;      int maxlen;
729      unsigned int start, end, tmp;      unsigned int start, end, tmp;
730      char *c, *cp, *tail;      char *c, *cp, *tail;
731    

Legend:
Removed from v.1.32  
changed lines
  Added in v.1.32.2.8

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26