Remove data/ dir from distribution, update docs accordingly.
[squirrelmail.git] / config / conf.pl
index f5d7542c7d9fc5a6e83a6f16b332f399045deffb..2236d04b6a2329acc88757718d4a26d22740821f 100755 (executable)
@@ -267,6 +267,16 @@ while ( $line = <FILE> ) {
                     $tmp =~ s/[\'\"]?,?\s*$//;
                     $tmp =~ s/[\'\"]?\);\s*$//;
                     $listing = $tmp;
+                } elsif ( $tmp =~ /^\s*[\'\"]search_tree[\'\"]/i ) {
+                    $tmp =~ s/^\s*[\'\"]search_tree[\'\"]\s*=>\s*[\'\"]?//i;
+                    $tmp =~ s/[\'\"]?,?\s*$//;
+                    $tmp =~ s/[\'\"]?\);\s*$//;
+                    $search_tree = $tmp;
+                } elsif ( $tmp =~ /^\s*[\'\"]starttls[\'\"]/i ) {
+                    $tmp =~ s/^\s*[\'\"]starttls[\'\"]\s*=>\s*[\'\"]?//i;
+                    $tmp =~ s/[\'\"]?,?\s*$//;
+                    $tmp =~ s/[\'\"]?\);\s*$//;
+                    $starttls = $tmp;
                 }
             }
             $ldap_host[$sub]    = $host;
@@ -281,6 +291,8 @@ while ( $line = <FILE> ) {
             $ldap_protocol[$sub] = $protocol;
             $ldap_limit_scope[$sub] = $limit_scope;
             $ldap_listing[$sub] = $listing;
+            $ldap_search_tree[$sub] = $search_tree;
+            $ldap_starttls[$sub] = $starttls;
         } elsif ( $options[0] =~ /^(data_dir|attachment_dir|theme_css|org_logo|signout_page)$/ ) {
             ${ $options[0] } = &change_to_rel_path($options[1]);
         } else {
@@ -327,7 +339,9 @@ $skip_SM_header = 'false'               if ( !$skip_SM_header );
 $default_use_javascript_addr_book = 'false' if (! $default_use_javascript_addr_book);
 # since 1.5.0
 $show_alternative_names = 'false'       if ( !$show_alternative_names );
-$available_languages = 'all'            if ( !$available_languages );
+# $available_languages option available only in 1.5.0. removed due to $languages
+# implementation changes. options are provided by limit_languages plugin
+# $available_languages = 'all'            if ( !$available_languages );
 $aggressive_decoding = 'false'          if ( !$aggressive_decoding );
 $advanced_tree = 'false'                if ( !$advanced_tree );
 $use_php_recode = 'false'               if ( !$use_php_recode );
@@ -345,6 +359,7 @@ $abook_global_file_writeable = 'false'  if ( !$abook_global_file_writeable);
 $abook_global_file_listing = 'true'     if ( !$abook_global_file_listing );
 $encode_header_key = ''                 if ( !$encode_header_key );
 $hide_auth_header = 'false'             if ( !$hide_auth_header );
+$time_zone_type = '0'                   if ( !$time_zone_type );
 
 if ( $ARGV[0] eq '--install-plugin' ) {
     print "Activating plugin " . $ARGV[1] . "\n";
@@ -516,6 +531,7 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) {
         print "12. Allow server charset search : $WHT$allow_charset_search$NRM\n";
         print "13. Allow advanced search       : $WHT$allow_advanced_search$NRM\n";
         print "14. PHP session name            : $WHT$session_name$NRM\n";
+        print "15. Time zone configuration     : $WHT$time_zone_type$NRM\n";
         print "\n";
         print "R   Return to Main Menu\n";
     } elsif ( $menu == 5 ) {
@@ -537,7 +553,7 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) {
             print "    >  $ldap_host[$count]\n";
         }
         print "2.  Use Javascript address book search          : $WHT$default_use_javascript_addr_book$NRM\n";
-        print "3.  Use global file address book                : $WHT$abook_global_file$NRM\n";
+        print "3.  Global address book file                    : $WHT$abook_global_file$NRM\n";
         print "4.  Allow writing into global file address book : $WHT$abook_global_file_writeable$NRM\n";
         print "5.  Allow listing of global file address book   : $WHT$abook_global_file_listing$NRM\n";
         print "\n";
@@ -607,9 +623,8 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) {
     print "1.  Default Language                : $WHT$squirrelmail_default_language$NRM\n";
     print "2.  Default Charset                 : $WHT$default_charset$NRM\n";
     print "3.  Show alternative language names : $WHT$show_alternative_names$NRM\n";
-    print "4.  Available languages             : $WHT$available_languages$NRM\n";
-    print "5.  Enable aggressive decoding      : $WHT$aggressive_decoding$NRM\n";
-    print "6.  Enable lossy encoding           : $WHT$lossy_encoding$NRM\n";
+    print "4.  Enable aggressive decoding      : $WHT$aggressive_decoding$NRM\n";
+    print "5.  Enable lossy encoding           : $WHT$lossy_encoding$NRM\n";
     print "\n";
         print "R   Return to Main Menu\n";
     } elsif ( $menu == 11 ) {
@@ -740,12 +755,13 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) {
             elsif ( $command == 6 )  { $default_use_priority     = command37(); }
             elsif ( $command == 7 )  { $hide_sm_attributions     = command38(); }
             elsif ( $command == 8 )  { $default_use_mdn          = command39(); }
-            elsif ( $command == 9 ) { $edit_identity            = command310(); }
+            elsif ( $command == 9 )  { $edit_identity            = command310(); }
             elsif ( $command == 10 ) { $allow_thread_sort        = command312(); }
             elsif ( $command == 11 ) { $allow_server_sort        = command313(); }
             elsif ( $command == 12 ) { $allow_charset_search     = command314(); }
             elsif ( $command == 13 ) { $allow_advanced_search    = command316(); }
             elsif ( $command == 14 ) { $session_name             = command317(); }
+            elsif ( $command == 15 ) { $time_zone_type           = command318(); }
         } elsif ( $menu == 5 ) {
             if ( $command == 1 ) { command41(); }
             elsif ( $command == 2 ) { $theme_css = command42(); }
@@ -773,11 +789,10 @@ while ( ( $command ne "q" ) && ( $command ne "Q" ) && ( $command ne ":q" ) ) {
             elsif ( $command == 11 ) { $addrbook_global_listing  = command911(); }
         } elsif ( $menu == 10 ) {
             if    ( $command == 1 ) { $squirrelmail_default_language = commandA1(); }
-            elsif ( $command == 2 ) { $default_charset           = commandA2(); }
+            elsif ( $command == 2 ) { $default_charset               = commandA2(); }
             elsif ( $command == 3 ) { $show_alternative_names        = commandA3(); }
-            elsif ( $command == 4 ) { $available_languages         = commandA4(); }
-            elsif ( $command == 5 ) { $aggressive_decoding         = commandA5(); }
-            elsif ( $command == 6 ) { $lossy_encoding         = commandA6(); }
+            elsif ( $command == 4 ) { $aggressive_decoding           = commandA4(); }
+            elsif ( $command == 5 ) { $lossy_encoding                = commandA5(); }
         } elsif ( $menu == 11 ) {
             if    ( $command == 1 ) { $advanced_tree  = commandB1(); }
             if    ( $command == 2 ) { $use_iframe     = commandB2(); }
@@ -1906,9 +1921,10 @@ sub command216 {
 # Data directory
 sub command33a {
     print "Specify the location for your data directory.\n";
+    print "You need to create this directory yourself.\n";
     print "The path name can be absolute or relative (to the config directory).\n";
-    print "It doesn't matter.  Here are two examples:\n";
-    print "  Absolute:    /var/spool/data/\n";
+    print "Here are two examples:\n";
+    print "  Absolute:    /var/local/squirrelmail/data/\n";
     print "  Relative:    ../data/\n";
     print "Relative paths to directories outside of the SquirrelMail distribution\n";
     print "will be converted to their absolute path equivalents in config.php.\n\n";
@@ -1937,9 +1953,9 @@ sub command33a {
 # Attachment directory
 sub command33b {
     print "Path to directory used for storing attachments while a mail is\n";
-    print "being sent. The path name can be absolute or relative (to the config directory).\n";
-    print "It doesn't matter.  Here are two examples:\n";
-    print "  Absolute:    /var/spool/attach/\n";
+    print "being composed. The path name can be absolute or relative (to the\n";
+    print "config directory). Here are two examples:\n";
+    print "  Absolute:    /var/local/squirrelmail/attach/\n";
     print "  Relative:    ../attach/\n";
     print "Relative paths to directories outside of the SquirrelMail distribution\n";
     print "will be converted to their absolute path equivalents in config.php.\n\n";
@@ -2266,6 +2282,29 @@ sub command317 {
     return $new_session_name;
 }
 
+# time zone config (since 1.5.1)
+sub command318 {
+    print "This option allows you to control the use of time zones.\n";
+    print "  0 = (default) standard, GNU C time zone names\n";
+    print "  1 = strict, generic time zone codes with offsets\n";
+    print "  2 = custom, GNU C time zones loaded from config/timezones.php\n";
+    print "  3 = custom strict, generic time zone codes with offsets loaded \n";
+    print "      from config/timezones.php\n";
+    print "See SquirrelMail documentation about format of config/timezones.php file.\n";
+    print "\n";
+
+    print "Used time zone configuration (0,1,2,3)? [$WHT$time_zone_type$NRM]: $WHT";
+    $new_time_zone_type = <STDIN>;
+    if ( $new_time_zone_type =~ /^[0123]\n/i ) {
+        $time_zone_type = $new_time_zone_type;
+    } else {
+        print "\nInvalid configuration value.\n";
+        print "\nPress enter to continue...";
+        $tmp = <STDIN>;
+    }
+    $time_zone_type =~ s/[\r\n]//g;
+    return $time_zone_type;
+}
 
 
 sub command41 {
@@ -2481,6 +2520,12 @@ sub command61 {
                 if ( $ldap_listing[$count] ) {
                     print "     listing: $ldap_listing[$count]\n";
                 }
+                if ( $ldap_search_tree[$count] ) {
+                    print " search_tree: $ldap_search_tree[$count]\n";
+                }
+                if ( $ldap_starttls[$count] ) {
+                    print "    starttls: $ldap_starttls[$count]\n";
+                }
 
                 print "\n";
                 $count++;
@@ -2630,6 +2675,35 @@ sub command61 {
                 $name = 'false';
               }
               $ldap_limit_scope[$sub] = $name;
+
+              print "\n";
+
+              print "You can control ldap search type here.\n";
+              print "Addresses can be searched in entire LDAP subtree (default)\n";
+              print "or only first level entries are returned.\n";
+              print "\n";
+              print "Search entire LDAP subtree? (Y/n):";
+              $name = <STDIN>;
+              if ( $name =~ /^n\n/i ) {
+                $name = 'false';
+              } else {
+                $name = 'true';
+              }
+              $ldap_search_tree[$sub] = $name;
+
+              print "\n";
+
+              print "You can control use of StartTLS on LDAP connection here.\n";
+              print "This option requires use of v3 or newer LDAP protocol and php 4.2+.\n";
+              print "\n";
+              print "Use StartTLS? (y/N):";
+              $name = <STDIN>;
+              if ( $name =~ /^y\n/i ) {
+                $name = 'true';
+              } else {
+                $name = 'false';
+              }
+              $ldap_starttls[$sub] = $name;
             }
             print "\n";
 
@@ -2654,6 +2728,8 @@ sub command61 {
             @new_ldap_protocol = ();
             @new_ldap_limit_scope = ();
             @new_ldap_listing = ();
+            @new_ldap_search_tree = ();
+            @new_ldap_starttls = ();
 
             while ( $count <= $#ldap_host ) {
                 if ( $count != $rem_num ) {
@@ -2669,6 +2745,8 @@ sub command61 {
                     @new_ldap_protocol  = ( @new_ldap_protocol,  $ldap_protocol[$count] );
                     @new_ldap_limit_scope = ( @new_ldap_limit_scope,  $ldap_limit_scope[$count] );
                     @new_ldap_listing = ( @new_ldap_listing, $ldap_listing[$count] );
+                    @new_ldap_search_tree = ( @new_ldap_search_tree, $ldap_search_tree[$count] );
+                    @new_ldap_starttls = ( @new_ldap_starttls, $ldap_starttls[$count] );
                 }
                 $count++;
             }
@@ -2684,6 +2762,8 @@ sub command61 {
             @ldap_protocol = @new_ldap_protocol;
             @ldap_limit_scope = @new_ldap_limit_scope;
             @ldap_listing = @new_ldap_listing;
+            @ldap_search_tree = @new_ldap_search_tree;
+            @ldap_starttls = @new_ldap_starttls;
 
         } elsif ( $input =~ /^\s*\?\s*/ ) {
             print ".-------------------------.\n";
@@ -3031,9 +3111,8 @@ sub commandA2 {
 # Alternative language names
 sub commandA3 {
     print "Enable this option if you want to see localized language names in\n";
-    print "language selection box. Note, that if don't limit list of available\n";
-    print "languages, this option can trigger installation of foreign language\n";
-    print "support modules in some browsers.\n";
+    print "language selection box. Note, that this option can trigger\n";
+    print "installation of foreign language support modules in some browsers.\n";
     print "\n";
 
     if ( lc($show_alternative_names) eq 'true' ) {
@@ -3050,30 +3129,9 @@ sub commandA3 {
     }
     return $show_alternative_names;
 }
-# Available languages
-sub commandA4 {
-    print "This option allows to limit number of languages available in\n";
-    print "language selection box. You can enter as code of every language that\n";
-    print "you want to enable. Language codes should be separated by space. If you\n";
-    print "enter name unsupported by SquirrelMail, it will be ignored. If you enter\n";
-    print "special key \'all\' - all languages available in SquirrelMail will be\n";
-    print "listed. If you enter special key \'none\' - user won't be able to change";
-    print "language and interface will use language set it \"Default language\" option.\n";
-    print "\n";
-    print "You can find valid language names in doc/i18n.txt.\n";
-    print "\n";
-    print "[$WHT$available_languages$NRM]: $WHT";
-    $new_available_languages = <STDIN>;
-    if ( $new_available_languages eq "\n" ) {
-        $new_available_languages = $available_languages;
-    } else {
-        $new_available_languages =~ s/[\r\n]//g;
-        $new_available_languages =~ s/^\s+$//g;
-    }
-    return $new_available_languages;
-}
+
 # Aggressive decoding
-sub commandA5 {
+sub commandA4 {
     print "Enable this option if you want to use CPU and memory intensive decoding\n";
     print "functions. This option allows reading multibyte charset, that are used\n";
     print "in Eastern Asia. SquirrelMail will try to use recode functions here,\n";
@@ -3096,7 +3154,7 @@ sub commandA5 {
 }
 
 # Lossy encoding
-sub commandA6 {
+sub commandA5 {
     print "Enable this option if you want to allow lossy charset encoding in message\n";
     print "composition pages. This option allows charset conversions when output\n";
     print "charset does not support all symbols used in original charset. Symbols\n";
@@ -3312,8 +3370,6 @@ sub save_data {
         print CF "\$default_charset          = '$default_charset';\n";
         # boolean
         print CF "\$show_alternative_names   = $show_alternative_names;\n";
-        # string
-        print CF "\$available_languages   = '$available_languages';\n";
         # boolean
         print CF "\$aggressive_decoding   = $aggressive_decoding;\n";
         # boolean
@@ -3418,6 +3474,9 @@ sub save_data {
     # integer
         print CF "\$allow_advanced_search    = $allow_advanced_search;\n";
         print CF "\n";
+        # integer
+        print CF "\$time_zone_type           = $time_zone_type;\n";
+        print CF "\n";
 
     # all plugins are strings
         for ( $ct = 0 ; $ct <= $#plugins ; $ct++ ) {
@@ -3499,6 +3558,16 @@ sub save_data {
                 # boolean
                 print CF "    'listing' => $ldap_listing[$count]";
             }
+            if ( $ldap_search_tree[$count] ) {
+                print CF ",\n";
+                # integer
+                print CF "    'search_tree' => $ldap_search_tree[$count]";
+            }
+            if ( $ldap_listing[$count] ) {
+                print CF ",\n";
+                # boolean
+                print CF "    'starttls' => $ldap_starttls[$count]";
+            }
             print CF "\n";
             print CF ");\n";
             print CF "\n";