2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2015 the Claws Mail team
4 * Copyright (C) 2014-2015 Charles Lehner
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #include "prefs_account.h"
28 #define SIEVE_SESSION(obj) ((SieveSession *)obj)
29 #define SIEVE_PORT 4190
31 typedef struct SieveSession SieveSession;
32 typedef struct SieveCommand SieveCommand;
33 typedef struct SieveScript SieveScript;
34 typedef struct SieveResult SieveResult;
40 SE_UNRECOVERABLE = 129,
54 SIEVEAUTH_PLAIN = 1 << 0,
55 SIEVEAUTH_LOGIN = 1 << 1,
56 SIEVEAUTH_CRAM_MD5 = 1 << 2,
69 SIEVE_AUTH_LOGIN_USER,
70 SIEVE_AUTH_LOGIN_PASS,
99 typedef void (*sieve_session_cb_fn) (SieveSession *session, gpointer data);
100 typedef void (*sieve_session_data_cb_fn) (SieveSession *session,
101 gpointer cb_data, gpointer user_data);
102 typedef void (*sieve_session_error_cb_fn) (SieveSession *session,
103 const gchar *msg, gpointer user_data);
104 typedef void (*sieve_session_connected_cb_fn) (SieveSession *session,
105 gboolean connected, gpointer user_data);
110 PrefsAccount *account;
111 struct SieveAccountConfig *config;
113 gboolean authenticated;
115 SieveErrorValue error;
116 SieveCommand *current_cmd;
119 SieveAuthType avail_auth_type;
120 SieveAuthType forced_auth_type;
121 SieveAuthType auth_type;
129 gboolean tls_init_done;
136 sieve_session_error_cb_fn on_error;
137 sieve_session_connected_cb_fn on_connected;
141 struct SieveCommand {
142 SieveState next_state;
144 sieve_session_data_cb_fn cb;
156 SieveResponseCode code;
162 void sieve_sessions_close();
164 void sieve_account_prefs_updated(PrefsAccount *account);
165 SieveSession *sieve_session_get_for_account(PrefsAccount *account);
166 void sieve_sessions_discard_callbacks(gpointer user_data);
167 void sieve_session_handle_status(SieveSession *session,
168 sieve_session_error_cb_fn on_error,
169 sieve_session_connected_cb_fn on_connected,
171 void sieve_session_list_scripts(SieveSession *session,
172 sieve_session_data_cb_fn got_script_name_cb, gpointer data);
173 void sieve_session_add_script(SieveSession *session, const gchar *filter_name,
174 sieve_session_data_cb_fn cb, gpointer data);
175 void sieve_session_set_active_script(SieveSession *session,
176 const gchar *filter_name,
177 sieve_session_data_cb_fn cb, gpointer data);
178 void sieve_session_rename_script(SieveSession *session,
179 const gchar *name_old, const char *name_new,
180 sieve_session_data_cb_fn cb, gpointer data);
181 void sieve_session_get_script(SieveSession *session, const gchar *filter_name,
182 sieve_session_data_cb_fn cb, gpointer data);
183 void sieve_session_put_script(SieveSession *session, const gchar *filter_name,
184 gint len, const gchar *script_contents,
185 sieve_session_data_cb_fn cb, gpointer data);
186 void sieve_session_check_script(SieveSession *session,
187 gint len, const gchar *script_contents,
188 sieve_session_data_cb_fn cb, gpointer data);
189 void sieve_session_delete_script(SieveSession *session,
190 const gchar *filter_name,
191 sieve_session_data_cb_fn cb, gpointer data);
193 #endif /* MANAGESIEVE_H */