void cd_mail_retrieve_feed_params (CDMailAccount *mailaccount, GKeyFile *pKeyFile, gchar *mailbox_name) { if( !mailaccount || !pKeyFile || !mailbox_name ) return; extern int mailstream_debug; mailstream_debug = 1; gboolean bFlushConfFileNeeded = FALSE; mailaccount->driver = FEED_STORAGE; mailaccount->storage = mailstorage_new(NULL); mailaccount->folder = NULL; mailaccount->server = NULL; mailaccount->port = 443; mailaccount->connection_type = CONNECTION_TYPE_PLAIN; mailaccount->user = NULL; mailaccount->password = NULL; mailaccount->auth_type = POP3_AUTH_TYPE_PLAIN; mailaccount->path = NULL; mailaccount->timeout = 0; if (g_key_file_has_key (pKeyFile, mailbox_name, "path", NULL)) { mailaccount->path = CD_CONFIG_GET_STRING (mailbox_name, "path"); } mailaccount->timeout = CD_CONFIG_GET_INTEGER_WITH_DEFAULT (mailbox_name, "timeout mn", 10); }
void cd_mail_retrieve_maildir_params (CDMailAccount *mailaccount, GKeyFile *pKeyFile, gchar *mailbox_name) { if( !mailaccount || !pKeyFile || !mailbox_name ) return; gboolean bFlushConfFileNeeded = FALSE; mailaccount->driver = MAILDIR_STORAGE; mailaccount->storage = mailstorage_new(NULL); mailaccount->folder = NULL; mailaccount->server = NULL; mailaccount->port = 0; mailaccount->connection_type = CONNECTION_TYPE_PLAIN; mailaccount->user = NULL; mailaccount->password = NULL; mailaccount->auth_type = POP3_AUTH_TYPE_PLAIN; mailaccount->path = g_strdup("/"); mailaccount->timeout = 0; if (g_key_file_has_key (pKeyFile, mailbox_name, "path", NULL)) { mailaccount->path = CD_CONFIG_GET_STRING (mailbox_name, "path"); } mailaccount->timeout = CD_CONFIG_GET_INTEGER_WITH_DEFAULT (mailbox_name, "timeout mn", 10); //{"path", "mtime", "interval", NULL, NULL, NULL, NULL} }
void cd_mail_retrieve_imap_params (CDMailAccount *mailaccount, GKeyFile *pKeyFile, gchar *mailbox_name) { if( !mailaccount || !pKeyFile || !mailbox_name ) return; gboolean bFlushConfFileNeeded = FALSE; mailaccount->driver = IMAP_STORAGE; mailaccount->storage = mailstorage_new(NULL); mailaccount->folder = NULL; mailaccount->server = NULL; mailaccount->port = 0; mailaccount->connection_type = CONNECTION_TYPE_PLAIN; mailaccount->user = NULL; mailaccount->password = NULL; mailaccount->auth_type = IMAP_AUTH_TYPE_PLAIN; mailaccount->path = g_strdup("/"); mailaccount->timeout = 0; if (g_key_file_has_key (pKeyFile, mailbox_name, "host", NULL)) { mailaccount->server = CD_CONFIG_GET_STRING (mailbox_name, "host"); } if (g_key_file_has_key (pKeyFile, mailbox_name, "username", NULL)) { mailaccount->user = CD_CONFIG_GET_STRING (mailbox_name, "username"); } if (g_key_file_has_key (pKeyFile, mailbox_name, "password", NULL)) { gchar *encryptedPassword = CD_CONFIG_GET_STRING (mailbox_name, "password"); cairo_dock_decrypt_string( encryptedPassword, &(mailaccount->password) ); if( encryptedPassword ) g_free(encryptedPassword); } mailaccount->timeout = CD_CONFIG_GET_INTEGER_WITH_DEFAULT (mailbox_name, "timeout mn", 10); mailaccount->port = CD_CONFIG_GET_INTEGER_WITH_DEFAULT (mailbox_name, "port", 0); mailaccount->connection_type = CD_CONFIG_GET_BOOLEAN_WITH_DEFAULT (mailbox_name, "use secure connection", FALSE)?CONNECTION_TYPE_TLS:CONNECTION_TYPE_PLAIN; /* CONNECTION_TYPE_TLS ? CONNECTION_TYPE_STARTTLS ? */ if (g_key_file_has_key (pKeyFile, mailbox_name, "server_directory", NULL)) { mailaccount->path = CD_CONFIG_GET_STRING (mailbox_name, "server_directory"); } }
void cd_mail_retrieve_mh_params (CDMailAccount *mailaccount, GKeyFile *pKeyFile, gchar *mailbox_name) { if( !mailaccount || !pKeyFile || !mailbox_name ) return; gboolean bFlushConfFileNeeded = FALSE; mailaccount->driver = MH_STORAGE; mailaccount->storage = mailstorage_new(NULL); mailaccount->folder = NULL; mailaccount->server = NULL; mailaccount->port = 0; mailaccount->connection_type = CONNECTION_TYPE_PLAIN; mailaccount->user = NULL; mailaccount->password = NULL; mailaccount->auth_type = POP3_AUTH_TYPE_PLAIN; mailaccount->path = g_strdup("/"); mailaccount->timeout = 0; mailaccount->timeout = CD_CONFIG_GET_INTEGER_WITH_DEFAULT (mailbox_name, "timeout mn", 10); }
int main(int argc, char ** argv) { int r; int driver; char * server; int port; int connection_type; char * user; char * password; int auth_type; char * path; char * cache_directory; char * flags_directory; struct mailstorage * storage; int cached; struct mailfolder * folder; /* get options */ r = parse_options(argc, argv, &driver, &server, &port, &connection_type, &user, &password, &auth_type, &path, &cache_directory, &flags_directory); cached = (cache_directory != NULL); /* build the storage structure */ storage = mailstorage_new(NULL); if (storage == NULL) { printf("error initializing storage\n"); goto free_opt; } r = init_storage(storage, driver, server, port, connection_type, user, password, auth_type, path, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing storage\n"); goto free_opt; } /* get the folder structure */ folder = mailfolder_new(storage, path, NULL); if (folder == NULL) { printf("error initializing folder\n"); goto free_storage; } r = mailfolder_connect(folder); if (r != MAIL_NO_ERROR) { printf("error initializing folder\n"); goto free_folder; } while (optind < argc) { mailmessage * msg; uint32_t msg_num; struct mailmime * mime; msg_num = strtoul(argv[optind], NULL, 10); r = mailsession_get_message(folder->fld_session, msg_num, &msg); if (r != MAIL_NO_ERROR) { printf("** message %i not found ** - %s\n", msg_num, maildriver_strerror(r)); optind ++; continue; } r = mailmessage_get_bodystructure(msg, &mime); if (r != MAIL_NO_ERROR) { printf("** message %i not found - %s **\n", msg_num, maildriver_strerror(r)); mailmessage_free(msg); optind ++; continue; } r = etpan_fetch_mime(stdout, msg, mime); mailmessage_free(msg); optind ++; } mailfolder_free(folder); mailstorage_free(storage); if (server != NULL) free(server); if (user != NULL) free(user); if (password != NULL) free(password); if (path != NULL) free(path); if (cache_directory != NULL) free(cache_directory); if (flags_directory != NULL) free(flags_directory); return 0; free_folder: mailfolder_free(folder); free_storage: mailstorage_free(storage); free_opt: if (server != NULL) free(server); if (user != NULL) free(user); if (password != NULL) free(password); if (path != NULL) free(path); if (cache_directory != NULL) free(cache_directory); if (flags_directory != NULL) free(flags_directory); return -1; }
int main(int argc, char ** argv) { int r; int driver; char * server; int port; int connection_type; char * user; char * password; int auth_type; bool xoauth2; char * path; char * cache_directory; char * flags_directory; struct mailstorage * storage; struct mailfolder * folder; /* get options */ r = parse_options(argc, argv, &driver, &server, &port, &connection_type, &user, &password, &auth_type, &xoauth2, &path, &cache_directory, &flags_directory); /* build the storage structure */ storage = mailstorage_new(NULL); if (storage == NULL) { printf("error initializing storage\n"); goto free_opt; } r = init_storage(storage, driver, server, port, connection_type, user, password, auth_type, xoauth2, path, cache_directory, flags_directory); if (r != MAIL_NO_ERROR) { printf("error initializing storage\n"); goto free_opt; } /* get the folder structure */ folder = mailfolder_new(storage, path, NULL); if (folder == NULL) { printf("error initializing folder\n"); goto free_storage; } r = mailfolder_connect(folder); if (r != MAIL_NO_ERROR) { printf("error initializing folder\n"); goto free_folder; } /* get and display the list of messages */ print_message_list(folder->fld_session); mailfolder_free(folder); mailstorage_free(storage); if (server != NULL) free(server); if (user != NULL) free(user); if (password != NULL) free(password); if (path != NULL) free(path); if (cache_directory != NULL) free(cache_directory); if (flags_directory != NULL) free(flags_directory); return 0; free_folder: mailfolder_free(folder); free_storage: mailstorage_free(storage); free_opt: if (server != NULL) free(server); if (user != NULL) free(user); if (password != NULL) free(password); if (path != NULL) free(path); if (cache_directory != NULL) free(cache_directory); if (flags_directory != NULL) free(flags_directory); return -1; }
void cd_mail_retrieve_gmail_params (CDMailAccount *mailaccount, GKeyFile *pKeyFile, gchar *mailbox_name) { if( !mailaccount || !pKeyFile || !mailbox_name ) return; gboolean bFlushConfFileNeeded = FALSE; #if ( __WORDSIZE == 64 ) /* in 64bit libetpan crashes with RSS, so use the IMAP feature of GMail * instead of RSS. */ mailaccount->driver = IMAP_STORAGE; mailaccount->storage = mailstorage_new(NULL); mailaccount->folder = NULL; mailaccount->server = g_strdup("imap.gmail.com"); mailaccount->port = 993; mailaccount->connection_type = CONNECTION_TYPE_TLS; mailaccount->user = NULL; mailaccount->password = NULL; mailaccount->auth_type = IMAP_AUTH_TYPE_PLAIN; mailaccount->path = g_strdup("Inbox"); mailaccount->timeout = 0; if (g_key_file_has_key (pKeyFile, mailbox_name, "username", NULL)) { mailaccount->user = CD_CONFIG_GET_STRING (mailbox_name, "username"); } if (g_key_file_has_key (pKeyFile, mailbox_name, "password", NULL)) { gchar *encryptedPassword = CD_CONFIG_GET_STRING (mailbox_name, "password"); cairo_dock_decrypt_string( encryptedPassword, &(mailaccount->password) ); if( encryptedPassword ) g_free(encryptedPassword); } mailaccount->timeout = CD_CONFIG_GET_INTEGER_WITH_DEFAULT (mailbox_name, "timeout mn", 10); #else mailaccount->driver = FEED_STORAGE; mailaccount->storage = mailstorage_new(NULL); mailaccount->folder = NULL; mailaccount->server = NULL; mailaccount->port = 443; mailaccount->connection_type = CONNECTION_TYPE_PLAIN; mailaccount->user = NULL; mailaccount->password = NULL; mailaccount->auth_type = POP3_AUTH_TYPE_PLAIN; mailaccount->path = NULL; mailaccount->timeout = 0; if (g_key_file_has_key (pKeyFile, mailbox_name, "username", NULL)) { mailaccount->user = CD_CONFIG_GET_STRING (mailbox_name, "username"); } if (g_key_file_has_key (pKeyFile, mailbox_name, "password", NULL)) { gchar *encryptedPassword = CD_CONFIG_GET_STRING (mailbox_name, "password"); cairo_dock_decrypt_string( encryptedPassword, &(mailaccount->password) ); if( encryptedPassword ) g_free(encryptedPassword); } gchar *user_without_column = NULL; gchar *password_without_column = NULL; if( mailaccount->user ) { gchar **splitString = g_strsplit(mailaccount->user, ":", 0); user_without_column = g_strjoinv("%3A", splitString); g_strfreev( splitString ); } if( mailaccount->password ) { gchar **splitString = g_strsplit(mailaccount->password, ":", 0); password_without_column = g_strjoinv("%3A", splitString); g_strfreev( splitString ); } if( user_without_column && password_without_column ) { mailaccount->path = g_strconcat("https://", user_without_column, ":", password_without_column, "@mail.google.com/mail/feed/atom", NULL); } else { mailaccount->path = g_strdup( "https://mail.google.com/mail/feed/atom" ); } mailaccount->timeout = CD_CONFIG_GET_INTEGER_WITH_DEFAULT (mailbox_name, "timeout mn", 10); g_free( user_without_column ); g_free( password_without_column ); #endif }