4 * mail_fetch/options.php
6 * Setup of the mailfetch plugin.
8 * @copyright 1999-2013 The SquirrelMail Project Team
9 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
12 * @subpackage mail_fetch
16 * Include the SquirrelMail initialization file.
18 require('../../include/init.php');
19 include_once(SM_PATH
. 'plugins/mail_fetch/functions.php' );
20 include_once(SM_PATH
. 'functions/imap_general.php');
21 include_once(SM_PATH
. 'functions/forms.php');
23 // don't load this page if this plugin is not enabled
26 if (!in_array('mail_fetch', $plugins)) exit;
29 sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION
);
31 if(!sqgetGlobalVar('mf_cypher', $mf_cypher, SQ_POST
)) {
34 if(! sqgetGlobalVar('mf_action', $mf_action, SQ_POST
) ) {
35 if (sqgetGlobalVar('mf_action_mod', $mf_action_mod, SQ_POST
)) {
36 $mf_action = 'Modify';
38 elseif (sqgetGlobalVar('mf_action_del', $mf_action_del, SQ_POST
)) {
39 $mf_action = 'Delete';
42 $mf_action = 'config';
46 sqgetGlobalVar('mf_sn', $mf_sn, SQ_POST
);
47 sqgetGlobalVar('mf_server', $mf_server, SQ_POST
);
48 sqgetGlobalVar('mf_port', $mf_port, SQ_POST
);
49 sqgetGlobalVar('mf_alias', $mf_alias, SQ_POST
);
50 sqgetGlobalVar('mf_user', $mf_user, SQ_POST
);
51 sqgetGlobalVar('mf_pass', $mf_pass, SQ_POST
);
52 sqgetGlobalVar('mf_subfolder', $mf_subfolder, SQ_POST
);
53 sqgetGlobalVar('mf_login', $mf_login, SQ_POST
);
54 sqgetGlobalVar('mf_fref', $mf_fref, SQ_POST
);
55 sqgetGlobalVar('mf_lmos', $mf_lmos, SQ_POST
);
56 sqgetGlobalVar('mf_auth', $mf_auth, SQ_POST
);
57 sqgetGlobalVar('mf_type', $mf_type, SQ_POST
);
58 sqgetGlobalVar('submit_mailfetch', $submit_mailfetch, SQ_POST
);
59 $mf_port = trim($mf_port);
60 $mf_server = trim($mf_server);
65 displayPageHeader( $color );
67 switch( $mf_action ) {
70 $mf_action = 'config';
72 // restrict port number if necessary
74 $message = validate_mail_fetch_port_number($mf_port);
75 if (!empty($message)) break;
77 // restrict server address if necessary
79 $message = validate_mail_fetch_server_address($mf_server);
80 if (!empty($message)) break;
82 if ($mf_sn<1) $mf_sn=0;
83 if (!isset($mf_server)) return;
84 setPref($data_dir,$username,"mailfetch_server_$mf_sn", (isset($mf_server)?
$mf_server:""));
85 setPref($data_dir,$username,"mailfetch_port_$mf_sn", (isset($mf_port)?
$mf_port:110));
86 setPref($data_dir,$username,"mailfetch_alias_$mf_sn", (isset($mf_alias)?
$mf_alias:""));
87 setPref($data_dir,$username,"mailfetch_user_$mf_sn",(isset($mf_user)?
$mf_user:""));
89 if ( isset($mf_pass) ) {
90 if ( isset($mf_cypher) && $mf_cypher == 'on' ) {
91 setPref($data_dir,$username,"mailfetch_cypher", ($mf_cypher == 'on' ?
'on' : ''));
92 $pass = encrypt($mf_pass);
97 setPref($data_dir,$username,"mailfetch_pass_$mf_sn",$pass);
98 setPref($data_dir,$username,"mailfetch_lmos_$mf_sn",(isset($mf_lmos)?
$mf_lmos:""));
99 setPref($data_dir,$username,"mailfetch_login_$mf_sn",(isset($mf_login)?
$mf_login:""));
100 setPref($data_dir,$username,"mailfetch_fref_$mf_sn",(isset($mf_fref)?
$mf_fref:""));
101 setPref($data_dir,$username,"mailfetch_subfolder_$mf_sn",(isset($mf_subfolder)?
$mf_subfolder:""));
102 setPref($data_dir,$username,"mailfetch_auth_$mf_sn",(isset($mf_auth)?
$mf_auth:MAIL_FETCH_AUTH_USER
));
103 setPref($data_dir,$username,"mailfetch_type_$mf_sn",(isset($mf_type)?
$mf_type:MAIL_FETCH_USE_PLAIN
));
105 setPref($data_dir,$username,'mailfetch_server_number', $mf_sn);
110 case 'confirm_modify':
112 // restrict port number if necessary
114 $message = validate_mail_fetch_port_number($mf_port);
115 if (!empty($message)) {
116 $mf_action = 'Modify';
120 // restrict server address if necessary
122 $message = validate_mail_fetch_server_address($mf_server);
123 if (!empty($message)) {
124 $mf_action = 'Modify';
128 if (!isset($mf_server)) return;
129 setPref($data_dir,$username,"mailfetch_server_$mf_sn", (isset($mf_server)?
$mf_server:""));
130 setPref($data_dir,$username,"mailfetch_port_$mf_sn", (isset($mf_port)?
$mf_port:110));
131 setPref($data_dir,$username,"mailfetch_alias_$mf_sn", (isset($mf_alias)?
$mf_alias:""));
132 setPref($data_dir,$username,"mailfetch_user_$mf_sn",(isset($mf_user)?
$mf_user:""));
134 if ( isset($mf_pass) ) {
135 if ( isset($mf_cypher) && $mf_cypher == 'on' ) {
136 setPref($data_dir,$username,"mailfetch_cypher", 'on');
137 $pass = encrypt($mf_pass);
139 setPref($data_dir,$username,"mailfetch_cypher", '');
143 setPref($data_dir,$username,"mailfetch_pass_$mf_sn",$pass);
144 setPref($data_dir,$username,"mailfetch_lmos_$mf_sn",(isset($mf_lmos)?
$mf_lmos:""));
145 setPref($data_dir,$username,"mailfetch_login_$mf_sn",(isset($mf_login)?
$mf_login:""));
146 setPref($data_dir,$username,"mailfetch_fref_$mf_sn",(isset($mf_fref)?
$mf_fref:""));
147 setPref($data_dir,$username,"mailfetch_subfolder_$mf_sn",(isset($mf_subfolder)?
$mf_subfolder:""));
148 setPref($data_dir,$username,"mailfetch_auth_$mf_sn",(isset($mf_auth)?
$mf_auth:MAIL_FETCH_AUTH_USER
));
149 setPref($data_dir,$username,"mailfetch_type_$mf_sn",(isset($mf_type)?
$mf_type:MAIL_FETCH_USE_PLAIN
));
150 $mf_action = 'config';
152 case 'confirm_delete':
154 $mailfetch_server_number = getPref($data_dir, $username, "mailfetch_server_number");
155 if ($mf_sn+
1==$mailfetch_server_number) {
156 //is the last server, whe can only decrase $mailfetch_server_number
157 $mailfetch_server_number--;
158 setPref($data_dir,$username,"mailfetch_server_number", $mailfetch_server_number);
160 //if not the last, all the sequel server come up one step
161 //then whe decrase $mailfetch_server_number
162 $mailfetch_server_number--;
163 for ($i=$mf_sn;$i<$mailfetch_server_number;$i++
) {
165 setPref($data_dir,$username,'mailfetch_server_'.$i,
166 getPref($data_dir,$username, 'mailfetch_server_'.$tmp));
167 setPref($data_dir,$username,'mailfetch_port_'.$i,
168 getPref($data_dir,$username, 'mailfetch_port_'.$tmp));
169 setPref($data_dir,$username,'mailfetch_alias_'.$i,
170 getPref($data_dir,$username, 'mailfetch_alias_'.$tmp));
171 setPref($data_dir,$username,'mailfetch_user_'.$i,
172 getPref($data_dir,$username, 'mailfetch_user_'.$tmp));
173 setPref($data_dir,$username,'mailfetch_pass_'.$i,
174 getPref($data_dir,$username, 'mailfetch_pass_'.$tmp));
175 setPref($data_dir,$username,'mailfetch_lmos_'.$i,
176 getPref($data_dir,$username, 'mailfetch_lmos_'.$tmp));
177 setPref($data_dir,$username,'mailfetch_login_'.$i,
178 getPref($data_dir,$username, 'mailfetch_login_'.$tmp));
179 setPref($data_dir,$username,'mailfetch_fref_'.$i,
180 getPref($data_dir,$username, 'mailfetch_fref_'.$tmp));
181 setPref($data_dir,$username,'mailfetch_subfolder_'.$i,
182 getPref($data_dir,$username, 'mailfetch_subfolder_'.$tmp));
183 setPref($data_dir,$username,'mailfetch_auth_'.$i,
184 getPref($data_dir,$username, 'mailfetch_auth_'.$tmp,MAIL_FETCH_AUTH_USER
));
185 setPref($data_dir,$username,'mailfetch_type_'.$i,
186 getPref($data_dir,$username, 'mailfetch_type_'.$tmp,MAIL_FETCH_USE_PLAIN
));
187 setPref($data_dir,$username,'mailfetch_uidl_'.$i,
188 getPref($data_dir,$username, 'mailfetch_uidl_'.$tmp));
190 setPref($data_dir,$username,"mailfetch_server_number", $mailfetch_server_number);
192 $mf_action = 'config';
196 $mailfetch_server_number = getPref($data_dir, $username, 'mailfetch_server_number', 0);
197 $mailfetch_cypher = getPref( $data_dir, $username, 'mailfetch_cypher' );
198 if ($mailfetch_server_number<1) {
199 $mailfetch_server_number=0;
201 for ($i=0;$i<$mailfetch_server_number;$i++
) {
202 $mailfetch_server_[$i] = getPref($data_dir, $username, "mailfetch_server_$i");
203 $mailfetch_port_[$i] = getPref($data_dir, $username, "mailfetch_port_$i");
204 $mailfetch_alias_[$i] = getPref($data_dir, $username, "mailfetch_alias_$i");
205 $mailfetch_user_[$i] = getPref($data_dir, $username, "mailfetch_user_$i");
206 $mailfetch_pass_[$i] = getPref($data_dir, $username, "mailfetch_pass_$i");
207 $mailfetch_lmos_[$i] = getPref($data_dir, $username, "mailfetch_lmos_$i");
208 $mailfetch_login_[$i] = getPref($data_dir, $username, "mailfetch_login_$i");
209 $mailfetch_fref_[$i] = getPref($data_dir, $username, "mailfetch_fref_$i");
210 $mailfetch_uidl_[$i] = getPref($data_dir, $username, "mailfetch_uidl_$i");
211 $mailfetch_subfolder_[$i] = getPref($data_dir, $username, "mailfetch_subfolder_$i");
212 $mailfetch_auth_[$i] = getPref($data_dir, $username, "mailfetch_auth_$i",MAIL_FETCH_AUTH_USER
);
213 $mailfetch_type_[$i] = getPref($data_dir, $username, "mailfetch_type_$i",MAIL_FETCH_USE_PLAIN
);
214 if( $mailfetch_cypher == 'on' ) $mailfetch_pass_[$i] = decrypt( $mailfetch_pass_[$i] );
217 echo '<br /><form method="post" action="'.$PHP_SELF.'">' .
221 '<b>' . _("Remote POP server settings") . '</b>',
222 'center', $color[0] )
224 'center', '', 'width="95%"' ) .
228 _("You should be aware that the encryption used to store your password is not perfectly secure. However, if you are using pop, there is inherently no encryption anyway. Additionally, the encryption that we do to save it on the server can be undone by a hacker reading the source to this file.") ,
233 _("If you leave password empty, it will be asked when you fetch mail.") ,
238 '<input type="checkbox" name="mf_cypher" ' .
239 (($mailfetch_cypher=='on')?
'checked="checked" />':' />') .
240 _("Encrypt passwords (informative only)") ,
243 'center', '', 'width="95%"' );
245 // display error or other messages if necessary
247 if (!empty($message)) {
248 echo html_tag( 'table', '', 'center', '', 'width="70%" cellpadding="5" cellspacing="1"' ) .
250 html_tag( 'td', '<b>' . $message . '</b>', 'center', $color[2] ));
253 switch( $mf_action ) {
255 echo html_tag( 'table', '', 'center', '', 'width="70%" cellpadding="5" cellspacing="1"' ) .
257 html_tag( 'td', '<b>' . _("Add Server") . '</b>', 'center', $color[9] )
260 html_tag( 'td', '', 'center', $color[0] ) .
262 "<input type=\"hidden\" name=\"mf_sn\" value=\"$mailfetch_server_number\" />" .
263 '<input type="hidden" name="mf_action" value="add" />' .
264 html_tag( 'table' ) .
266 html_tag( 'th', _("Server:"), 'right' ) .
267 html_tag( 'td', '<input type="text" name="mf_server" value="" size="40" />', 'left' )
270 html_tag( 'th', _("Port:"), 'right') .
271 html_tag( 'td', '<input type="text" name="mf_port" value="110" size="20" />', 'left')
274 html_tag( 'th', _("Alias:"), 'right' ) .
275 html_tag( 'td', '<input type="text" name="mf_alias" value="" size="20" />', 'left' )
278 html_tag( 'th', _("Username:"), 'right' ) .
279 html_tag( 'td', '<input type="text" name="mf_user" value="" size="20" />', 'left' )
282 html_tag( 'th', _("Password:"), 'right' ) .
283 html_tag( 'td', '<input type="password" name="mf_pass" value="" size="20" />', 'left' )
286 html_tag( 'th', _("Authentication type:"), 'right' ) .
287 html_tag( 'td', addSelect('mf_auth',
288 array(MAIL_FETCH_AUTH_USER
=> _("USER"),
289 MAIL_FETCH_AUTH_APOP
=> _("APOP"),
290 MAIL_FETCH_AUTH_RFC1939
=> _("APOP or USER")),
291 MAIL_FETCH_AUTH_USER
,true), 'left' )
294 html_tag( 'th', _("Connection type:"), 'right' ) .
295 html_tag( 'td', addSelect('mf_type',
296 array(MAIL_FETCH_USE_PLAIN
=> _("Plain text"),
297 MAIL_FETCH_USE_TLS
=> _("Use TLS"),
298 MAIL_FETCH_USE_STLS
=> _("Use StartTLS")),
299 MAIL_FETCH_USE_PLAIN
,true), 'left' )
302 html_tag( 'th', _("Store in Folder:"), 'right' ) .
303 html_tag( 'td', '', 'left' );
304 $imapConnection = sqimap_login ($username, false, $imapServerAddress, $imapPort, 0);
305 $boxes = sqimap_mailbox_list($imapConnection);
306 echo '<select name="mf_subfolder">';
309 if ( isset($mf_subfolder) )
310 $selected = array(strtolower($mf_subfolder));
311 echo sqimap_mailbox_option_list($imapConnection, $selected);
312 echo '</select></td></tr>' .
314 html_tag( 'th', ' ', 'right' ) .
315 html_tag( 'td', '<input type="checkbox" name="mf_lmos" checked="checked" />' . _("Leave Mail on Server"), 'left' )
318 html_tag( 'th', ' ', 'right' ) .
319 html_tag( 'td', '<input type="checkbox" name="mf_login" />' . _("Check mail at login"), 'left' )
322 html_tag( 'th', ' ', 'right' ) .
323 html_tag( 'td', '<input type="checkbox" name="mf_fref" />' . _("Check mail at folder refresh"), 'left' )
327 '<input type="submit" name="submit_mailfetch" value="' . _("Add Server") . '" />',
328 'center', '', 'colspan="2"' )
330 '</table></td></tr></table></form>';
333 echo '<font size="-5"><br /></font>' .
334 html_tag( 'table', '', 'center', '', 'width="70%" cellpadding="5" cellspacing="1"' ) .
336 html_tag( 'td', '<b>' . _("Modify Server") . '</b>', 'center', $color[9] )
339 html_tag( 'td', '', 'center', $color[0] );
340 if ($mailfetch_server_number>0) {
341 echo "<form action=\"$PHP_SELF\" method=\"post\" target=\"_self\">";
342 echo '<b>' . _("Server Name:") . '</b> <select name="mf_sn">';
343 for ($i=0;$i<$mailfetch_server_number;$i++
) {
344 echo "<option value=\"$i\">" .
345 sm_encode_html_special_chars( (($mailfetch_alias_[$i]=='')?
$mailfetch_server_[$i]:$mailfetch_alias_[$i])) . "</option>";
348 ' <input type="submit" name="mf_action_mod" value="' . _("Modify") . '" />'.
349 ' <input type="submit" name="mf_action_del" value="' . _("Delete") . '" />'.
352 echo _("No servers known.");
354 echo '</td></tr></table>';
356 case 'Delete': //erase confirmation about a server
357 echo html_tag( 'table',
359 html_tag( 'td', '<b>' . _("Fetching Servers") . '</b>', 'center', $color[0] )
361 'center', '', 'width="95%" cellpadding="5" cellspacing="1"' ) .
365 html_tag( 'td', '<b>' . _("Confirm Deletion of a Server") . '</b>', 'center', $color[9] )
369 "<input type=\"hidden\" name=\"mf_sn\" value=\"$mf_sn\" />" .
370 '<input type="hidden" name="mf_action" value="confirm_delete" />' .
371 '<br />' . _("Selected Server:") . " <b>" . sm_encode_html_special_chars($mailfetch_server_[$mf_sn]) . "</b><br />" .
372 _("Confirm delete of selected server?") . '<br /><br />' .
373 '<input type="submit" name="submit_mailfetch" value="' . _("Confirm Delete") . '" />' .
375 'center', $color[9] )
377 'center', '', 'width="70%" cellpadding="5" cellspacing="1"' );
378 break; //modify a server
380 echo html_tag( 'table',
382 html_tag( 'td', '<b>' . _("Fetching Servers") . '</b>', 'center', $color[0] )
384 'center', '', 'width="95%" cellpadding="5" cellspacing="1"' ) .
386 html_tag( 'table', '', 'center', '', 'width="70%" cellpadding="5" cellspacing="1"' ) .
388 html_tag( 'td', '<b>' . _("Modify Server") . '</b>', 'center', $color[9] )
391 html_tag( 'td', '', 'center', $color[0] ) .
393 "<input type=\"hidden\" name=\"mf_sn\" value=\"$mf_sn\" />" .
394 '<input type="hidden" name="mf_action" value="confirm_modify" />' .
395 html_tag( 'table' ) .
397 html_tag( 'th', _("Server:"), 'right' ) .
398 html_tag( 'td', '<input type="text" name="mf_server" value="' .
399 sm_encode_html_special_chars($mailfetch_server_[$mf_sn]) . '" size="40" />', 'left' )
402 html_tag( 'th', _("Port:"), 'right' ) .
403 html_tag( 'td', '<input type="text" name="mf_port" value="' .
404 sm_encode_html_special_chars($mailfetch_port_[$mf_sn]) . '" size="40" />', 'left' )
407 html_tag( 'th', _("Alias:"), 'right' ) .
408 html_tag( 'td', '<input type="text" name="mf_alias" value="' .
409 sm_encode_html_special_chars($mailfetch_alias_[$mf_sn]) . '" size="40" />', 'left' )
412 html_tag( 'th', _("Username:"), 'right' ) .
413 html_tag( 'td', '<input type="text" name="mf_user" value="' .
414 sm_encode_html_special_chars($mailfetch_user_[$mf_sn]) . '" size="20" />', 'left' )
417 html_tag( 'th', _("Password:"), 'right' ) .
418 html_tag( 'td', '<input type="password" name="mf_pass" value="' .
419 sm_encode_html_special_chars($mailfetch_pass_[$mf_sn]) . '" size="20" />', 'left' )
422 html_tag( 'th', _("Authentication type:"), 'right' ) .
423 html_tag( 'td', addSelect('mf_auth',array(MAIL_FETCH_AUTH_USER
=> _("USER"),
424 MAIL_FETCH_AUTH_APOP
=> _("APOP"),
425 MAIL_FETCH_AUTH_RFC1939
=> _("APOP or USER")),
426 $mailfetch_auth_[$mf_sn],true), 'left' )
429 html_tag( 'th', _("Connection type:"), 'right' ) .
430 html_tag( 'td', addSelect('mf_type',array(MAIL_FETCH_USE_PLAIN
=> _("Plain text"),
431 MAIL_FETCH_USE_TLS
=> _("Use TLS"),
432 MAIL_FETCH_USE_STLS
=> _("Use StartTLS")),
433 $mailfetch_type_[$mf_sn],true), 'left' )
436 html_tag( 'th', _("Store in Folder:"), 'right' ) .
437 html_tag( 'td', '', 'left' );
439 $imapConnection = sqimap_login ($username, false, $imapServerAddress, $imapPort, 0);
440 $boxes = sqimap_mailbox_list($imapConnection);
441 echo '<select name="mf_subfolder">';
443 if ( isset($mailfetch_subfolder_[$mf_sn]) ) {
444 $selected = array(strtolower($mailfetch_subfolder_[$mf_sn]));
446 echo sqimap_mailbox_option_list($imapConnection, $selected) .
447 '</select></td></tr>' .
449 html_tag( 'th', ' ', 'right' ) .
451 '<input type="checkbox" name="mf_lmos" ' . (($mailfetch_lmos_[$mf_sn] == 'on')?
'checked="checked"':'') .
452 ' />' . _("Leave Mail on Server") ,
456 html_tag( 'th', ' ', 'right' ) .
458 '<input type="checkbox" name="mf_login" ' . ( ($mailfetch_login_[$mf_sn] == 'on')?
'checked="checked"':'') .
459 ' />' . _("Check mail at login"),
463 html_tag( 'th', ' ', 'right' ) .
465 '<input type="checkbox" name="mf_fref" ' . ( ($mailfetch_fref_[$mf_sn] == 'on')?
'checked="checked"':'') .
466 ' />' . _("Check mail at folder refresh") ,
471 '<input type="submit" name="submit_mailfetch" value="' . _("Modify Server") . '" />',
472 'center', '', 'colspan="2"' )
474 '</table></form></td></tr></table>';
476 default: //unsupported action
480 html_tag( 'td', '<b>' . _("Fetching Servers") . '</b>', 'center', $color[0] )
482 'center', '', 'width="95%"' ) .
486 html_tag( 'td', '<b>' . _("Undefined Function") . '</b>', 'center', $color[9] ) .
487 html_tag( 'td', '<b>' . _("The function you requested is unknown.") . '</b>', 'center', $color[0] )
489 'center', '', 'width="70%"' );
492 $oTemplate->display('footer.tpl');