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

Annotation of /imapfilter/request.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.60 - (hide annotations)
Sat Feb 14 19:14:43 2004 UTC (20 years, 1 month ago) by lefcha
Branch: MAIN
Changes since 1.59: +3 -3 lines
File MIME type: text/plain
Indentation.

1 lefcha 1.1 #include "config.h"
2     #include "imapfilter.h"
3    
4    
5 lefcha 1.58 extern connection_t connpri, connaux;
6     extern options_t opts;
7 lefcha 1.1
8 lefcha 1.3
9 lefcha 1.1 /*
10     * Test/ping server.
11     */
12 lefcha 1.42 int
13 lefcha 1.58 test(connection_t * conn)
14 lefcha 1.1 {
15 lefcha 1.59
16 lefcha 1.58 return response_generic(conn, imap_noop(conn));
17 lefcha 1.1 }
18    
19 lefcha 1.10
20 lefcha 1.1 /*
21 lefcha 1.10 * Check server's capabilities.
22 lefcha 1.1 */
23 lefcha 1.42 int
24 lefcha 1.58 check_capabilities(connection_t * conn)
25 lefcha 1.1 {
26 lefcha 1.59
27 lefcha 1.58 conn->caps = CAPS_NONE;
28 lefcha 1.18
29 lefcha 1.58 return response_capability(conn, imap_capability(conn));
30 lefcha 1.1 }
31    
32    
33     /*
34 lefcha 1.18 * Get namespace of mail server's mailboxes.
35     */
36 lefcha 1.42 int
37 lefcha 1.58 check_namespace(connection_t * conn)
38 lefcha 1.18 {
39 lefcha 1.59
40 lefcha 1.58 conn->ns.prefix[0] = conn->ns.delim = '\0';
41 lefcha 1.18
42 lefcha 1.58 if (!opts.namespace || !(conn->caps & CAPS_NAMESPACE))
43 lefcha 1.42 return 0;
44     else
45 lefcha 1.58 return response_namespace(conn, imap_namespace(conn));
46 lefcha 1.18 }
47    
48    
49 lefcha 1.51 #ifdef SSL_TLS
50     /*
51     * Begin TLS negotiation (STARTTLS).
52     */
53     int
54 lefcha 1.58 negotiate_tls(connection_t * conn)
55 lefcha 1.51 {
56     int r;
57    
58 lefcha 1.58 r = response_generic(conn, imap_starttls(conn));
59 lefcha 1.54 init_secure_connection(conn, SSL_TLS_V1);
60 lefcha 1.51
61     return r;
62     }
63     #endif
64    
65    
66 lefcha 1.18 /*
67 lefcha 1.10 * Login to server.
68 lefcha 1.8 */
69 lefcha 1.42 int
70 lefcha 1.58 login(connection_t * conn, char *user, char *pass)
71 lefcha 1.8 {
72 lefcha 1.59
73 lefcha 1.58 return response_generic(conn, imap_login(conn, user, pass));
74 lefcha 1.21 }
75    
76    
77    
78     /*
79     * Check if a mailbox exists.
80     */
81 lefcha 1.42 int
82 lefcha 1.58 check_mailbox(connection_t * conn, char *mbox)
83 lefcha 1.21 {
84 lefcha 1.59
85 lefcha 1.58 return response_generic(conn, imap_status(conn, mbox, "MESSAGES"));
86 lefcha 1.8 }
87    
88 lefcha 1.18
89 lefcha 1.8 /*
90 lefcha 1.3 * Open mailbox in read-write mode.
91 lefcha 1.1 */
92 lefcha 1.42 int
93 lefcha 1.58 select_mailbox(connection_t * conn, char *mbox)
94 lefcha 1.1 {
95 lefcha 1.42 int r;
96 lefcha 1.5
97 lefcha 1.53 if (mailbox_status(conn, mbox) == -2)
98 lefcha 1.42 return -2; /* No messages exist. No filters need to be
99     * applied. */
100 lefcha 1.5
101 lefcha 1.58 r = response_select(conn, imap_select(conn,
102 lefcha 1.60 apply_namespace(mbox, conn->ns.prefix, conn->ns.delim)));
103 lefcha 1.5
104 lefcha 1.58 log_info(LOG_MBOX, mbox);
105 lefcha 1.5
106 lefcha 1.42 return r;
107 lefcha 1.1 }
108    
109    
110     /*
111 lefcha 1.3 * Get mailbox's status.
112 lefcha 1.1 */
113 lefcha 1.42 int
114 lefcha 1.58 mailbox_status(connection_t * conn, char *mbox)
115 lefcha 1.1 {
116 lefcha 1.59
117 lefcha 1.58 return response_status(conn, imap_status(conn,
118 lefcha 1.60 apply_namespace(mbox, conn->ns.prefix, conn->ns.delim),
119     "MESSAGES RECENT UNSEEN"), mbox);
120 lefcha 1.16 }
121 lefcha 1.5
122 lefcha 1.9
123 lefcha 1.1 /*
124     * Close examined/selected mailbox.
125     */
126 lefcha 1.42 int
127 lefcha 1.58 close_mailbox(connection_t * conn)
128 lefcha 1.1 {
129 lefcha 1.59
130 lefcha 1.58 return response_generic(conn, imap_close(conn));
131 lefcha 1.1 }
132    
133    
134     /*
135     * Logout from server.
136     */
137 lefcha 1.42 int
138 lefcha 1.58 logout(connection_t * conn)
139 lefcha 1.1 {
140 lefcha 1.59
141 lefcha 1.58 return response_logout(conn, imap_logout(conn));
142 lefcha 1.1 }

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26