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

Contents of /imapfilter/imapfilter.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.17 - (show annotations)
Thu Nov 1 16:35:06 2001 UTC (22 years, 5 months ago) by lefcha
Branch: MAIN
Changes since 1.16: +2 -0 lines
File MIME type: text/plain
Overwrite user passwords.

1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <string.h>
5 #include <limits.h>
6 #include <errno.h>
7
8 #include "config.h"
9 #include "imapfilter.h"
10 #include "data.h"
11
12
13 extern account_t *accounts;
14 extern filter_t *filters;
15
16 unsigned int options; /* Program options. */
17 char logfile[PATH_MAX]; /* Log file. */
18
19
20 /*
21 * In the beginning there was main()...
22 */
23 int main(int argc, char *argv[])
24 {
25 int c;
26 char *confile = NULL; /* Configuration file. */
27 account_t *ca; /* Current account. */
28 mbox_t *cm; /* Current mailbox. */
29
30 options = OPTION_DETAILS_NORMAL;
31 *logfile = 0;
32
33 while ((c = getopt(argc, argv, "c:hl:qv")) != -1) {
34 switch (c) {
35 case 'c':
36 confile = optarg;
37 break;
38 case 'h':
39 usage();
40 exit(ERROR_UNDEFINED);
41 break;
42 case 'l':
43 strncat(logfile, optarg, PATH_MAX - 1);
44 break;
45 case 'q':
46 options &= OPTION_DETAILS_CLEAR;
47 options |= OPTION_DETAILS_QUIET;
48 break;
49 case 'v':
50 options &= OPTION_DETAILS_CLEAR;
51 options |= OPTION_DETAILS_VERBOSE;
52 break;
53 default:
54 usage();
55 exit(ERROR_UNDEFINED);
56 break;
57 }
58 }
59
60 read_config(confile);
61 open_logfile();
62
63 for (ca = accounts; ca; ca = ca->next) {
64
65 #ifndef SSL_TLS
66 if (init_connection(ca->server, ca->port)) {
67 #else
68 if (init_connection(ca->server, ca->port, ca->ssl)) {
69 #endif
70 close_logfile();
71 exit(ERROR_NETWORK);
72 }
73 if (greeting_response() || check_capabilities())
74 continue;
75
76 #ifdef DEBUG
77 test();
78 #endif
79
80 if (login(ca->username, ca->password))
81 continue;
82
83 for (cm = ca->mboxes; cm; cm = cm->next)
84 if (!*cm->filters)
85 mailbox_status(cm->name);
86 else if (!select_mailbox(cm->name)) {
87 apply_filters(cm->filters);
88 close_mailbox();
89 }
90 logout();
91
92 close_connection();
93
94 overwrite_password(ca->password);
95 }
96
97 close_logfile();
98
99 exit(0);
100 }
101
102
103 /*
104 * Print a very brief usage message.
105 */
106 void usage(void)
107 {
108 fprintf(stderr,
109 "usage: imapfilter [-hqv] [-c configfile] [-l logfile]\n");
110 }

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26