X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=config%2Fconf.pl;h=f6009dd9f727f23c1afeb96a066b8b202371cc5c;hp=cf9e66bebd4275ce1d6dcc8004aad639bdee06d5;hb=c4faef335b2362c81b8ebf026d4066c12d70536c;hpb=79ba18dc89b1b096ecdf0b77169d57e0caf661db diff --git a/config/conf.pl b/config/conf.pl index cf9e66be..f6009dd9 100755 --- a/config/conf.pl +++ b/config/conf.pl @@ -1,7 +1,7 @@ #!/usr/bin/env perl # conf.pl # -# Copyright (c) 1999-2013 The SquirrelMail Project Team +# Copyright (c) 1999-2020 The SquirrelMail Project Team # Licensed under the GNU GPL. For full terms see COPYING. # # A simple configure script to configure SquirrelMail @@ -43,7 +43,23 @@ $dir = cwd(); ############################################################ -# First, lets read in the data already in there... +# Try to determine what the version of SquirrelMail is +############################################################ +$sm_version = 'unknown'; +if ( -e "../include/constants.php" && -r "../include/constants.php") { + open( FILE, "../include/constants.php" ); + while ( $line = ) { + if ($line =~ m/^define\('SM_VERSION', ?'(\d+\.\d+\.\d+( ?\[\w+]|))'/) { + $sm_version = $1; + last; + } + } + close(FILE); +} + + +############################################################ +# First, let's read in the data already in there... ############################################################ if ( -e "config.php" ) { # Make sure that file is readable @@ -410,6 +426,8 @@ $hide_sm_attributions = 'false' if ( !$hide_sm_attributions ); # since 1.2.5 $edit_identity = 'true' if ( !$edit_identity ); $edit_name = 'true' if ( !$edit_name ); +# since 1.4.23/1.5.2 +$edit_reply_to = 'true' if ( !$edit_reply_to ); # since 1.4.0 $use_smtp_tls= 'false' if ( !$use_smtp_tls); @@ -417,6 +435,12 @@ $smtp_auth_mech = 'none' if ( !$smtp_auth_mech ); $use_imap_tls = 'false' if ( !$use_imap_tls ); $imap_auth_mech = 'login' if ( !$imap_auth_mech ); +# $use_imap_tls and $use_smtp_tls are switched to integer since 1.5.1 +$use_imap_tls = 0 if ( $use_imap_tls eq 'false'); +$use_imap_tls = 1 if ( $use_imap_tls eq 'true'); +$use_smtp_tls = 0 if ( $use_smtp_tls eq 'false'); +$use_smtp_tls = 1 if ( $use_smtp_tls eq 'true'); + # since 1.5.0 $show_alternative_names = 'false' if ( !$show_alternative_names ); # $available_languages option available only in 1.5.0. removed due to $languages @@ -473,11 +497,6 @@ if ( !%fontsets) { 'verasans', 'bitstream vera sans,verdana,sans-serif'); } -# $use_imap_tls and $use_smtp_tls are switched to integer since 1.5.1 -$use_imap_tls = 0 if ( $use_imap_tls eq 'false'); -$use_imap_tls = 1 if ( $use_imap_tls eq 'true'); -$use_smtp_tls = 0 if ( $use_smtp_tls eq 'false'); -$use_smtp_tls = 1 if ( $use_smtp_tls eq 'true'); # sorting options changed names and reversed values in 1.5.1 $disable_thread_sort = 'false' if ( !$disable_thread_sort ); $disable_server_sort = 'false' if ( !$disable_server_sort ); @@ -494,6 +513,11 @@ $only_secure_cookies = 'true' if ( !$only_secure_cookies ); $disable_security_tokens = 'false' if ( !$disable_security_tokens ); $check_referrer = '' if ( !$check_referrer ); $ask_user_info = 'true' if ( !$ask_user_info ); +$use_transparent_security_image = 'true' if ( !$use_transparent_security_image ); +$display_imap_login_error = 'false' if ( !$display_imap_login_error ); +$allow_svg_display = 'false' if ( !$allow_svg_display ); +$block_svg_download = 'false' if ( !$block_svg_download ); +$fix_broken_base64_encoded_messages = 'false' if ( !$fix_broken_base64_encoded_messages ); if ( $ARGV[0] eq '--install-plugin' ) { print "Activating plugin " . $ARGV[1] . "\n"; @@ -581,7 +605,7 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) { print $WHT. "SquirrelMail Configuration : " . $NRM; if ( $config == 1 ) { print "Read: config.php"; } elsif ( $config == 2 ) { print "Read: config_default.php"; } - print " ($print_config_version)\n"; + print "\nConfig version $print_config_version; SquirrelMail version $sm_version\n"; print "---------------------------------------------------------\n"; if ( $menu == 0 ) { @@ -714,6 +738,7 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) { print "8. Allow use of receipts : $WHT$default_use_mdn$NRM\n"; print "9. Allow editing of identity : $WHT$edit_identity$NRM\n"; print " Allow editing of name : $WHT$edit_name$NRM\n"; + print " Allow editing of reply-to : $WHT$edit_reply_to$NRM\n"; print " Remove username from header : $WHT$hide_auth_header$NRM\n"; print "10. Disable server thread sort : $WHT$disable_thread_sort$NRM\n"; print "11. Disable server-side sorting : $WHT$disable_server_sort$NRM\n"; @@ -725,6 +750,11 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) { print "17. Only secure cookies if poss. : $WHT$only_secure_cookies$NRM\n"; print "18. Disable secure forms : $WHT$disable_security_tokens$NRM\n"; print "19. Page referal requirement : $WHT$check_referrer$NRM\n"; + print "20. Security image : $WHT" . (lc($use_transparent_security_image) eq 'true' ? 'Transparent' : 'Textual') . "$NRM\n"; + print "21. Display login error from IMAP: $WHT$display_imap_login_error$NRM\n"; + print "22. Show inline SVG objects : $WHT$allow_svg_display$NRM\n"; + print "23. Block downloading SVG objects: $WHT$block_svg_download$NRM\n"; + print "24. Fix broken base64 messages : $WHT$fix_broken_base64_encoded_messages$NRM\n"; print "\n"; print "R Return to Main Menu\n"; } elsif ( $menu == 5 ) { @@ -1001,6 +1031,11 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) { elsif ( $command == 17 ) { $only_secure_cookies = command319(); } elsif ( $command == 18 ) { $disable_security_tokens = command320(); } elsif ( $command == 19 ) { $check_referrer = command321(); } + elsif ( $command == 20 ) { $use_transparent_security_image = command322(); } + elsif ( $command == 21 ) { $display_imap_login_error = command323(); } + elsif ( $command == 22 ) { $allow_svg_display = command324(); } + elsif ( $command == 23 ) { $block_svg_download = command325(); } + elsif ( $command == 24 ) { $fix_broken_base64_encoded_messages = command326(); } } elsif ( $menu == 5 ) { if ( $command == 1 ) { $use_icons = commandB3(); } # elsif ( $command == 3 ) { $icon_theme_def = command53(); } @@ -2555,11 +2590,13 @@ sub command310 { if ( ( $new_edit =~ /^y\n/i ) || ( ( $new_edit =~ /^\n/ ) && ( $default_value eq "y" ) ) ) { $edit_identity = 'true'; $edit_name = 'true'; - $hide_auth_header = command311b(); + $edit_reply_to = 'true'; + $hide_auth_header = command311c(); } else { $edit_identity = 'false'; $edit_name = command311(); - $hide_auth_header = command311b(); + $edit_reply_to = command311b(); + $hide_auth_header = command311c(); } return $edit_identity; } @@ -2587,6 +2624,28 @@ sub command311 { } sub command311b { + print "$NRM"; + print "\n Given that users are not allowed to modify their + email address, can they edit their reply-to address? + + "; + + if ( lc($edit_reply_to) eq 'true' ) { + $default_value = "y"; + } else { + $default_value = "n"; + } + print "Allow the user to edit their reply-to address? (y/n) [$WHT$default_value$NRM]: $WHT"; + $new_edit = ; + if ( ( $new_edit =~ /^y\n/i ) || ( ( $new_edit =~ /^\n/ ) && ( $default_value eq "y" ) ) ) { + $edit_reply_to = 'true'; + } else { + $edit_reply_to = 'false'; + } + return $edit_reply_to; +} + +sub command311c { print "$NRM"; print "\n SquirrelMail adds username information to every outgoing email in order to prevent possible sender forging by users that are allowed @@ -2817,7 +2876,7 @@ sub command320 { -# check_referrer (since 1.1.5.2) +# check_referrer (since 1.5.2) sub command321 { print "This option allows you to enable referal checks for all page requests\n"; print "made to SquirrelMail. This can help ensure that page requests came\n"; @@ -2848,6 +2907,148 @@ sub command321 { +# use_transparent_security_image (since 1.5.2) +sub command322 { + print "When HTML messages are being displayed, SquirrelMail's default behavior\n"; + print "is to remove all remote images and replace them with a local one.\n"; + print "\n"; + print "This option allows you to specify whether the local image should contain\n"; + print "text that indicates to the user that \"this image has been removed for\n"; + print "security reasons\" (translated into most languages), or if it should be\n"; + print "transparent.\n"; + print "\n"; + + if ( lc($use_transparent_security_image) eq 'true' ) { + $default_value = "y"; + } else { + $default_value = "n"; + } + print "Use transparent security image? (y/n) [$WHT$default_value$NRM]: $WHT"; + $use_transparent_security_image = ; + if ( ( $use_transparent_security_image =~ /^y\n/i ) || ( ( $use_transparent_security_image =~ /^\n/ ) && ( $default_value eq "y" ) ) ) { + $use_transparent_security_image = 'true'; + } else { + $use_transparent_security_image = 'false'; + } + return $use_transparent_security_image; +} + + + +# display_imap_login_error (since 1.5.2) +sub command323 { + print "Some IMAP servers return detailed information about why a login is\n"; + print "being refused (the username or password could be invalid or there\n"; + print "might be an administrative lock on the account).\n"; + print "\n"; + print "Enabling this option will cause SquirrelMail to display login failure\n"; + print "messages directly from the IMAP server. When it is disabled, login\n"; + print "failures are always reported to the user with the traditional \"Unknown\n"; + print "user or password incorrect.\"\n"; + print "\n"; + + if ( lc($display_imap_login_error) eq 'true' ) { + $default_value = "y"; + } else { + $default_value = "n"; + } + print "Display login error messages directly from the IMAP server? (y/n) [$WHT$default_value$NRM]: $WHT"; + $display_imap_login_error = ; + if ( ( $display_imap_login_error =~ /^y\n/i ) || ( ( $display_imap_login_error =~ /^\n/ ) && ( $default_value eq "y" ) ) ) { + $display_imap_login_error = 'true'; + } else { + $display_imap_login_error = 'false'; + } + return $display_imap_login_error; +} + + + +# allow_svg_display (since 1.5.2) +sub command324 { + print "Some email messages might contain SVG images or animations, however\n"; + print "the power and dynamic nature of SVG objects may represent security or\n"; + print "privacy vulnerabilities.\n"; + print "\n"; + print "Enabling this option will cause SquirrelMail to display any SVG objects\n"; + print "included inline in email messages when they are viewed in HTML format.\n"; + print "\n"; + + if ( lc($allow_svg_display) eq 'true' ) { + $default_value = "y"; + } else { + $default_value = "n"; + } + print "Show inline SVG objects? (y/n) [$WHT$default_value$NRM]: $WHT"; + $allow_svg_display = ; + if ( ( $allow_svg_display =~ /^y\n/i ) || ( ( $allow_svg_display =~ /^\n/ ) && ( $default_value eq "y" ) ) ) { + $allow_svg_display = 'true'; + } else { + $allow_svg_display = 'false'; + } + return $allow_svg_display; +} + + + +# block_svg_download (since 1.5.2) +sub command325 { + print "Some email messages might contain SVG image or animation attachments,\n"; + print "however even when downloaded, the power and dynamic nature of SVG\n"; + print "objects may represent security or privacy vulnerabilities.\n"; + print "\n"; + print "Enabling this option will cause SquirrelMail to hide download links\n"; + print "for any SVG objects attached to email messages, whereas disabling it\n"; + print "will allow users to download such attachments as they see fit.\n"; + print "\n"; + + if ( lc($block_svg_download) eq 'true' ) { + $default_value = "y"; + } else { + $default_value = "n"; + } + print "Hide download links for SVG objects? (y/n) [$WHT$default_value$NRM]: $WHT"; + $block_svg_download = ; + if ( ( $block_svg_download =~ /^y\n/i ) || ( ( $block_svg_download =~ /^\n/ ) && ( $default_value eq "y" ) ) ) { + $block_svg_download = 'true'; + } else { + $block_svg_download = 'false'; + } + return $block_svg_download; +} + + + +# fix_broken_base64_encoded_messages (since 1.5.2) +sub command326 { + print "Some email messages might contain base64-encoded parts, and a very\n"; + print "small number of unknown servers have been seen sending such\n"; + print "messages in a malformed but recoverable manner.\n"; + print "\n"; + print "Enabling this option will cause SquirrelMail to detect and correct\n"; + print "such messages at a slight cost in processing power. Chances are\n"; + print "somewhat low that your users would ever receive such messages.\n"; + print "\n"; + + if ( lc($fix_broken_base64_encoded_messages) eq 'true' ) { + $default_value = "y"; + } else { + $default_value = "n"; + } + print "Fix broken base64-encoded messages? (y/n) [$WHT$default_value$NRM]: $WHT"; + $fix_broken_base64_encoded_messages = ; + if ( ( $fix_broken_base64_encoded_messages =~ /^y\n/i ) || ( ( $fix_broken_base64_encoded_messages =~ /^\n/ ) && ( $default_value eq "y" ) ) ) { + $fix_broken_base64_encoded_messages = 'true'; + } else { + $fix_broken_base64_encoded_messages = 'false'; + } + return $fix_broken_base64_encoded_messages; +} + + + +#################################################################################### +#### THEMES #### sub command_userThemes { print "\nDefine the user themes that you wish to use. If you have added\n"; print "a theme of your own, just follow the instructions (?) about\n"; @@ -4930,6 +5131,8 @@ sub save_data { # boolean print CF "\$edit_name = $edit_name;\n"; # boolean + print CF "\$edit_reply_to = $edit_reply_to;\n"; + # boolean print CF "\$hide_auth_header = $hide_auth_header;\n"; # boolean print CF "\$disable_thread_sort = $disable_thread_sort;\n"; @@ -5159,10 +5362,12 @@ sub save_data { print CF "\$smtp_sitewide_pass = '". quote_single($smtp_sitewide_pass) ."';\n"; # string print CF "\$imap_auth_mech = '$imap_auth_mech';\n"; - # boolean + # integer print CF "\$use_imap_tls = $use_imap_tls;\n"; - # boolean + # integer print CF "\$use_smtp_tls = $use_smtp_tls;\n"; + # boolean + print CF "\$display_imap_login_error = $display_imap_login_error;\n"; # string print CF "\$session_name = '$session_name';\n"; # boolean @@ -5172,6 +5377,13 @@ sub save_data { # string print CF "\$check_referrer = '$check_referrer';\n"; + # boolean + print CF "\$use_transparent_security_image = $use_transparent_security_image;\n"; + + print CF "\$allow_svg_display = $allow_svg_display;\n"; + print CF "\$block_svg_download = $block_svg_download;\n"; + print CF "\$fix_broken_base64_encoded_messages = $fix_broken_base64_encoded_messages;\n"; + print CF "\n"; # boolean @@ -5402,13 +5614,13 @@ sub set_defaults { $domain = "gmail.com"; $imapServerAddress = "imap.gmail.com"; $imapPort = 993; - $use_imap_tls = true; + $use_imap_tls = 1; $imap_auth_mech = "login"; $smtpServerAddress = "smtp.gmail.com"; $smtpPort = 465; $pop_before_smtp = false; $useSendmail = false; - $use_smtp_tls = true; + $use_smtp_tls = 1; $smtp_auth_mech = "login"; $continue = 1;