$ldap_writeable[$sub] = $writeable;
$ldap_search_tree[$sub] = $search_tree;
$ldap_starttls[$sub] = $starttls;
- } elsif ( $options[0] =~ /^(data_dir|attachment_dir|theme_css|org_logo|signout_page)$/ ) {
+ } elsif ( $options[0] =~ /^(data_dir|attachment_dir|theme_css|org_logo|signout_page|icon_theme_def)$/ ) {
${ $options[0] } = &change_to_rel_path($options[1]);
} else {
${ $options[0] } = $options[1];
$prefs_key_size = 64 if ( !$prefs_key_size );
$prefs_val_size = 65536 if ( !$prefs_val_size );
+# since 1.5.2
+$icon_theme_def = '' if ( !$icon_theme_def );
+
# add qmail-inject test here for backwards compatibility
if ( !$sendmail_args && $sendmail_path =~ /qmail-inject/ ) {
$sendmail_args = '';
# since 1.5.2
$abook_file_line_length = 2048 if ( !$abook_file_line_length );
$config_location_base = '' if ( !$config_location_base );
+$smtp_sitewide_user = '' if ( !$smtp_sitewide_user );
+$smtp_sitewide_pass = '' if ( !$smtp_sitewide_pass );
if ( $ARGV[0] eq '--install-plugin' ) {
print "Activating plugin " . $ARGV[1] . "\n";
print "4. SMTP Server : $WHT$smtpServerAddress$NRM\n";
print "5. SMTP Port : $WHT$smtpPort$NRM\n";
print "6. POP before SMTP : $WHT$pop_before_smtp$NRM\n";
- print "7. SMTP Authentication : $WHT$smtp_auth_mech$NRM\n";
+ print "7. SMTP Authentication : $WHT$smtp_auth_mech" . display_smtp_sitewide_userpass() ."$NRM\n";
print "8. Secure SMTP (TLS) : $WHT" . display_use_tls($use_smtp_tls) . "$NRM\n";
print "9. Header encryption key : $WHT$encode_header_key$NRM\n";
print "\n";
print $WHT. "Interface tweaks\n" . $NRM;
print "1. Display html mails in iframe : $WHT$use_iframe$NRM\n";
print "2. Use Icons : $WHT$use_icons$NRM\n";
+ print "3. Default Icon Set : $WHT$icon_theme_def$NRM\n";
print "\n";
print $WHT. "PHP tweaks\n" . $NRM;
- print "3. Use php recode functions : $WHT$use_php_recode$NRM\n";
- print "4. Use php iconv functions : $WHT$use_php_iconv$NRM\n";
+ print "4. Use php recode functions : $WHT$use_php_recode$NRM\n";
+ print "5. Use php iconv functions : $WHT$use_php_iconv$NRM\n";
print "\n";
print $WHT. "Configuration tweaks\n" . $NRM;
- print "5. Allow remote configtest : $WHT$allow_remote_configtest$NRM\n";
+ print "6. Allow remote configtest : $WHT$allow_remote_configtest$NRM\n";
print "\n";
print "R Return to Main Menu\n";
}
} elsif ( $menu == 11 ) {
if ( $command == 1 ) { $use_iframe = commandB2(); }
elsif ( $command == 2 ) { $use_icons = commandB3(); }
- elsif ( $command == 3 ) { $use_php_recode = commandB4(); }
- elsif ( $command == 4 ) { $use_php_iconv = commandB5(); }
- elsif ( $command == 5 ) { $allow_remote_configtest = commandB6(); }
+ elsif ( $command == 3 ) { $icon_theme_def = commandB7(); }
+ elsif ( $command == 4 ) { $use_php_recode = commandB4(); }
+ elsif ( $command == 5 ) { $use_php_iconv = commandB5(); }
+ elsif ( $command == 6 ) { $allow_remote_configtest = commandB6(); }
}
}
}
return $new_smtpPort;
}
-# authenticated server
-sub command18 {
- return;
- # This sub disabled by tassium - it has been replaced with smtp_auth_mech
- print "Do you wish to use an authenticated SMTP server? Your server must\n";
- print "support this in order for SquirrelMail to work with it. We implemented\n";
- print "it according to RFC 2554.\n";
-
- $YesNo = 'n';
- $YesNo = 'y' if ( lc($use_authenticated_smtp) eq 'true' );
-
- print "Use authenticated SMTP server (y/n) [$WHT$YesNo$NRM]: $WHT";
-
- $new_use_authenticated_smtp = <STDIN>;
- $new_use_authenticated_smtp =~ tr/yn//cd;
- return 'true' if ( $new_use_authenticated_smtp eq "y" );
- return 'false' if ( $new_use_authenticated_smtp eq "n" );
- return $use_authenticated_smtp;
-}
-
# pop before SMTP
sub command18a {
print "Do you wish to use POP3 before SMTP? Your server must\n";
$inval=<STDIN>;
chomp($inval);
if ($inval =~ /^none\b/i) {
- # SMTP doesn't necessarily require logins
- return "none";
+ # remove sitewide smtp authentication information
+ $smtp_sitewide_user = '';
+ $smtp_sitewide_pass = '';
+ # SMTP doesn't necessarily require logins
+ return "none";
+ } elsif ( ($inval =~ /^cram-md5\b/i) || ($inval =~ /^digest-md5\b/i) ||
+ ($inval =~ /^login\b/i) || ($inval =~/^plain\b/i)) {
+ command_smtp_sitewide_userpass($inval);
+ return lc($inval);
+ } elsif (trim($inval) eq '') {
+ # user selected default value
+ command_smtp_sitewide_userpass($smtp_auth_mech);
+ return $smtp_auth_mech;
+ } else {
+ # user entered garbage
+ return $smtp_auth_mech;
+ }
+}
+
+sub command_smtp_sitewide_userpass($) {
+ # get first function argument
+ my $auth_mech = shift(@_);
+ my $default, $tmp;
+ $auth_mech = lc(trim($auth_mech));
+ if ($auth_mech eq 'none') {
+ return;
}
- if ( ($inval =~ /^cram-md5\b/i) || ($inval =~ /^digest-md5\b/i) ||
- ($inval =~ /^login\b/i) || ($inval =~/^plain\b/i)) {
- return lc($inval);
+ print "SMTP authentication uses IMAP username and password by default.\n";
+ print "\n";
+ print "Would you like to use other login and password for all SquirrelMail \n";
+ print "SMTP connections?";
+ if ($smtp_sitewide_user ne '') {
+ $default = 'y';
+ print " [Yn]:";
} else {
- # user entered garbage, or default value so nothing needs to be set
- return $smtp_auth_mech;
+ $default = 'n';
+ print " [yN]:";
}
+ $tmp=<STDIN>;
+ $tmp = trim($tmp);
+
+ if ($tmp eq '') {
+ $tmp = $default;
+ } else {
+ $tmp = lc($tmp);
+ }
+
+ if ($tmp eq 'n') {
+ $smtp_sitewide_user = '';
+ $smtp_sitewide_pass = '';
+ } elsif ($tmp eq 'y') {
+ print "Enter username [$smtp_sitewide_user]:";
+ my $new_user = <STDIN>;
+ $new_user = trim($new_user);
+ if ($new_user ne '') {
+ $smtp_sitewide_user = $new_user;
+ }
+ if ($smtp_sitewide_user ne '') {
+ print "If you don't enter any password, current sitewide password will be used.\n";
+ print "If you enter space, password will be set to empty string.\n";
+ print "Enter password:";
+ my $new_pass = <STDIN>;
+ if ($new_pass ne "\n") {
+ $smtp_sitewide_pass = trim($new_pass);
+ }
+ } else {
+ print "Invalid input. You must set username used for SMTP authentication.\n";
+ print "Click any key to continue\n";
+ $tmp = <STDIN>;
+ }
+ } else {
+ print "Invalid input\n";
+ print "Click any key to continue\n";
+ $tmp = <STDIN>;
+ }
+}
+
+# Sub adds information about SMTP authentication type to menu
+sub display_smtp_sitewide_userpass() {
+ my $ret = '';
+ if ($smtp_auth_mech ne 'none') {
+ if ($smtp_sitewide_user ne '') {
+ $ret = ' (with custom username and password)';
+ } else {
+ $ret = ' (with IMAP username and password)';
+ }
+ }
+ return $ret;
}
# TLS
$sub = $#ldap_host + 1;
print "First, we need to have the hostname or the IP address where\n";
- print "this LDAP server resides. Example: ldap.bigfoot.com\n";
+ print "this LDAP server resides. Example: ldap.bigfoot.com\n";
+ print "\n";
+ print "You can use any URI compatible with your LDAP library. Please\n";
+ print "note that StartTLS option is not compatible with ldaps and\n";
+ print "ldapi URIs.\n";
print "hostname: ";
$name = <STDIN>;
$name =~ s/[\r\n]//g;
return $allow_remote_configtest;
}
-
+# Default Icon theme
+sub commandB7 {
+ print "You may change the path to the default icon theme to be used, if icons\n";
+ print "have been enabled. This theme will be used when an icon cannot be\n";
+ print "found in the current theme, or when no icon theme is specified. If\n";
+ print "left blank, and icons are enabled, the default theme will be used\n";
+ print "from images/themes/default/.\n";
+ print "\n";
+ print "To clear out an existing value, just type a space for the input.\n";
+ print "\n";
+ print "Please be aware of the following: \n";
+ print " - Relative URLs are relative to the config dir\n";
+ print " to use the icon themes directory, use ../images/themes/newtheme/\n";
+ print " - The icon theme may be outside the SquirrelMail directory, but\n";
+ print " it must be web accessible.\n";
+ print "[$WHT$icon_theme_def$NRM]: $WHT";
+ $new_icon_theme_def = <STDIN>;
+
+ if ( $new_icon_theme_def eq "\n" ) {
+ $new_icon_theme_def = $icon_theme_def;
+ } else {
+ $new_icon_theme_def =~ s/[\r\n]//g;
+ }
+ $new_icon_theme_def =~ s/^\s*//;
+ return $new_icon_theme_def;
+}
sub save_data {
$tab = " ";
# string
print CF "\$smtp_auth_mech = '$smtp_auth_mech';\n";
+ print CF "\$smtp_sitewide_user = '". quote_single($smtp_sitewide_user) ."';\n";
+ print CF "\$smtp_sitewide_pass = '". quote_single($smtp_sitewide_pass) ."';\n";
# string
print CF "\$imap_auth_mech = '$imap_auth_mech';\n";
# boolean
# boolean
print CF "\$use_icons = $use_icons;\n";
print CF "\n";
+ # string
+ print CF "\$icon_theme_def = " . &change_to_SM_path($icon_theme_def) . ";\n";
# boolean
print CF "\$use_php_recode = $use_php_recode;\n";
print CF "\n";
print CF "\$allow_remote_configtest = $allow_remote_configtest;\n";
print CF "\n";
- print CF "\@include SM_PATH . 'config/config_local.php';\n";
-
close CF;
print "Data saved in config.php\n";
# checks IMAP mailbox name. Refuses to accept 8bit folders
# returns 0 (folder name is not correct) or 1 (folder name is correct)
sub check_imap_folder($) {
- # Unicode support was added in Perl 5.6, use simple 8bit range in earlier versions
- if($] >= 5.6) {
- # Using iso-10646 range, because x80-xFF range does not match unicode chars
- my $reg = '[\x{80}-\x{FFFF}]';
- } else {
- my $reg = '[\x80-\xFF]';
- }
my $folder_name = shift(@_);
- if ($folder_name =~ /$reg/) {
+
+ if ($folder_name =~ /[\x80-\xFFFF]/) {
print "Folder name contains 8bit characters. Configuration utility requires\n";
print "UTF7-IMAP encoded folder names.\n";
print "Press any key to continue...";
return 1;
}
}
+
+# quotes string written in single quotes
+sub quote_single($) {
+ my $string = shift(@_);
+ $string =~ s/\'/\\'/g;
+ return $string;
+}