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

Annotation of /imapfilter/request.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.62 - (hide annotations)
Sat Feb 14 23:08:31 2004 UTC (20 years, 1 month ago) by lefcha
Branch: MAIN
Changes since 1.61: +1 -1 lines
File MIME type: text/plain
Undocumented variable to force protocol version.

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

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26