23 #include "mrmailbox_internal.h" 24 #include "mrloginparam.h" 32 mrloginparam_t* mrloginparam_new()
34 mrloginparam_t* ths = NULL;
36 if( (ths=calloc(1,
sizeof(mrloginparam_t)))==NULL ) {
44 void mrloginparam_unref(mrloginparam_t* ths)
50 mrloginparam_empty(ths);
55 void mrloginparam_empty(mrloginparam_t* ths)
61 free(ths->m_addr); ths->m_addr = NULL;
62 free(ths->m_mail_server); ths->m_mail_server = NULL;
64 free(ths->m_mail_user); ths->m_mail_user = NULL;
65 free(ths->m_mail_pw); ths->m_mail_pw = NULL;
66 free(ths->m_send_server); ths->m_send_server = NULL;
68 free(ths->m_send_user); ths->m_send_user = NULL;
69 free(ths->m_send_pw); ths->m_send_pw = NULL;
70 ths->m_server_flags= 0;
74 void mrloginparam_read__(mrloginparam_t* ths, mrsqlite3_t* sql,
const char* prefix)
77 #define MR_PREFIX(a) sqlite3_free(key); key=sqlite3_mprintf("%s%s", prefix, (a)); 79 mrloginparam_empty(ths);
81 MR_PREFIX(
"addr"); ths->m_addr = mrsqlite3_get_config__ (sql, key, NULL);
83 MR_PREFIX(
"mail_server"); ths->m_mail_server = mrsqlite3_get_config__ (sql, key, NULL);
84 MR_PREFIX(
"mail_port"); ths->m_mail_port = mrsqlite3_get_config_int__(sql, key, 0);
85 MR_PREFIX(
"mail_user"); ths->m_mail_user = mrsqlite3_get_config__ (sql, key, NULL);
86 MR_PREFIX(
"mail_pw"); ths->m_mail_pw = mrsqlite3_get_config__ (sql, key, NULL);
88 MR_PREFIX(
"send_server"); ths->m_send_server = mrsqlite3_get_config__ (sql, key, NULL);
89 MR_PREFIX(
"send_port"); ths->m_send_port = mrsqlite3_get_config_int__(sql, key, 0);
90 MR_PREFIX(
"send_user"); ths->m_send_user = mrsqlite3_get_config__ (sql, key, NULL);
91 MR_PREFIX(
"send_pw"); ths->m_send_pw = mrsqlite3_get_config__ (sql, key, NULL);
93 MR_PREFIX(
"server_flags");ths->m_server_flags= mrsqlite3_get_config_int__(sql, key, 0);
99 void mrloginparam_write__(
const mrloginparam_t* ths, mrsqlite3_t* sql,
const char* prefix)
103 MR_PREFIX(
"addr"); mrsqlite3_set_config__ (sql, key, ths->m_addr);
105 MR_PREFIX(
"mail_server"); mrsqlite3_set_config__ (sql, key, ths->m_mail_server);
106 MR_PREFIX(
"mail_port"); mrsqlite3_set_config_int__(sql, key, ths->m_mail_port);
107 MR_PREFIX(
"mail_user"); mrsqlite3_set_config__ (sql, key, ths->m_mail_user);
108 MR_PREFIX(
"mail_pw"); mrsqlite3_set_config__ (sql, key, ths->m_mail_pw);
110 MR_PREFIX(
"send_server"); mrsqlite3_set_config__ (sql, key, ths->m_send_server);
111 MR_PREFIX(
"send_port"); mrsqlite3_set_config_int__(sql, key, ths->m_send_port);
112 MR_PREFIX(
"send_user"); mrsqlite3_set_config__ (sql, key, ths->m_send_user);
113 MR_PREFIX(
"send_pw"); mrsqlite3_set_config__ (sql, key, ths->m_send_pw);
115 MR_PREFIX(
"server_flags"); mrsqlite3_set_config_int__(sql, key, ths->m_server_flags);
121 static char* get_readable_flags(
int flags)
123 mrstrbuilder_t strbuilder;
124 mrstrbuilder_init(&strbuilder);
125 #define CAT_FLAG(f, s) if( (1<<bit)==(f) ) { mrstrbuilder_cat(&strbuilder, (s)); flag_added = 1; } 127 for(
int bit = 0; bit <= 30; bit++ )
133 CAT_FLAG(MR_AUTH_XOAUTH2,
"XOAUTH2 ");
134 CAT_FLAG(MR_AUTH_NORMAL,
"AUTH_NORMAL ");
136 CAT_FLAG(MR_IMAP_SOCKET_STARTTLS,
"IMAP_STARTTLS ");
137 CAT_FLAG(MR_IMAP_SOCKET_SSL,
"IMAP_SSL ");
138 CAT_FLAG(MR_IMAP_SOCKET_PLAIN,
"IMAP_PLAIN ");
140 CAT_FLAG(MR_SMTP_SOCKET_STARTTLS,
"SMTP_STARTTLS ");
141 CAT_FLAG(MR_SMTP_SOCKET_SSL,
"SMTP_SSL ");
142 CAT_FLAG(MR_SMTP_SOCKET_PLAIN,
"SMTP_PLAIN ");
144 CAT_FLAG(MR_NO_EXTRA_IMAP_UPLOAD,
"NO_EXTRA_IMAP_UPLOAD ");
145 CAT_FLAG(MR_NO_MOVE_TO_CHATS,
"NO_MOVE_TO_CHATS ");
148 char* temp = mr_mprintf(
"0x%x ", 1<<bit); mrstrbuilder_cat(&strbuilder, temp); free(temp);
153 if( strbuilder.m_buf[0]==0 ) { mrstrbuilder_cat(&strbuilder,
"0"); }
154 mr_trim(strbuilder.m_buf);
155 return strbuilder.m_buf;
159 char* mrloginparam_get_readable(
const mrloginparam_t* ths)
161 const char* unset =
"0";
162 const char* pw =
"***";
165 return safe_strdup(NULL);
168 char* flags_readable = get_readable_flags(ths->m_server_flags);
170 char* ret = mr_mprintf(
"%s %s:%s:%s:%i %s:%s:%s:%i %s",
171 ths->m_addr? ths->m_addr : unset,
173 ths->m_mail_user? ths->m_mail_user : unset,
174 ths->m_mail_pw? pw : unset,
175 ths->m_mail_server? ths->m_mail_server : unset,
178 ths->m_send_user? ths->m_send_user : unset,
179 ths->m_send_pw? pw : unset,
180 ths->m_send_server? ths->m_send_server : unset,
185 free(flags_readable);