# # TITLE: IMAP # # # Copyright 2001 Double Precision, Inc. See COPYING for # distribution information. use webadmin; my $errstr=""; my $saved=0; my %cap_all; my %cap_imap; my %cap_imap_ssl; { my $imap=ReadEnvVarConfigFile("imapd"); my $imapssl=ReadEnvVarConfigFile("imapd-ssl"); foreach (grep (/./, split (/\s+/, $$imap{'IMAP_CAPABILITY_ORIG'}))) { $cap_all{$_}=1; $cap_imap{$_}=1; } foreach (grep (/./, split (/\s+/, $$imap{'IMAP_CAPABILITY_TLS_ORIG'}))) { $cap_all{$_}=1; $cap_imap_ssl{$_}=1; } } if ($cgi->param("Save")) { ReplaceEnvVarConfigFile("imapd", "IMAPDSTART", $cgi->param("ENABLED") ? "YES":"NO"); ReplaceEnvVarConfigFile("imapd-ssl", "IMAPDSSLSTART", $cgi->param("ENABLED_SSL") ? "YES":"NO"); ReplaceEnvVarConfigFile("imapd-ssl", "IMAPDSTARTTLS", $cgi->param("ENABLED_STARTTLS") ? "YES":"NO"); ReplaceEnvVarConfigFile("imapd-ssl", "IMAP_TLS_REQUIRED", $cgi->param("REQUIRE_STARTTLS") ? "1":"0"); ReplaceEnvVarConfigFile("imapd", "MAXDAEMONS", $cgi->param("MAXDAEMONS")); ReplaceEnvVarConfigFile("imapd", "MAXPERIP", $cgi->param("MAXPERIP")); $saved=1; } if ($cgi->param("SaveCAPA")) { my @capa=("IMAP4rev1", "NAMESPACE"); my @capaSSL=@capa; foreach (sort keys %cap_all) { my $cap=$_; my $capfldname=$cap; $capfldname =~ s/=/--/g; next if $cap eq "IMAP4rev1" || $cap eq "NAMESPACE"; push @capa, $cap if $cap_imap{$cap} && $cgi->param($capfldname); push @capaSSL, $cap if $cap_imap_ssl{$cap} && $cgi->param("SSL-$capfldname"); } ReplaceEnvVarConfigFile("imapd", "IMAP_CAPABILITY", join(" ", @capa)); ReplaceEnvVarConfigFile("imapd", "IMAP_CAPABILITY_TLS", join(" ", @capaSSL)); ReplaceEnvVarConfigFile("imapd", "IMAP_IDLE_TIMEOUT", $cgi->param("IMAP_IDLE_TIMEOUT")); ReplaceEnvVarConfigFile("imapd", "IMAP_DISABLETHREADSORT", $cgi->param("IMAP_DISABLETHREADSORT") ? "1":"0"); ReplaceEnvVarConfigFile("imapd", "IMAP_CHECK_ALL_FOLDERS", $cgi->param("IMAP_CHECK_ALL_FOLDERS") ? "1":"0"); ReplaceEnvVarConfigFile("imapd", "IMAP_OBSOLETE_CLIENT", $cgi->param("IMAP_OBSOLETE_CLIENT") ? "1":"0"); $saved=1; } if ($cgi->param("SaveADV")) { ReplaceEnvVarConfigFile("imapd", "IMAP_ULIMITD", $cgi->param("IMAP_ULIMITD")); ReplaceEnvVarConfigFile("imapd", "IMAP_USELOCKS", $cgi->param("IMAP_USELOCKS") ? "1":"0"); ReplaceEnvVarConfigFile("imapd", "IMAP_MOVE_EXPUNGE_TO_TRASH", $cgi->param("IMAP_MOVE_EXPUNGE_TO_TRASH") ? "1":"0"); my @trashFolders; foreach (split(/\s/, $cgi->param("trashfolderlist"))) { my $folder=$_; my $days=$cgi->param("empty$folder")+0; $days =~ s/\s//g; next unless $days; push @trashFolders, "$folder:$days"; } my $folder=$cgi->param("addEmptyFolder"); my $days=$cgi->param("addEmptyDays")+0; $folder =~ s/^\s+//; $folder =~ s/\s+$//; $folder =~ s/,//; $folder =~ s/\\//; push @trashFolders, "$folder:$days" if $folder ne "" && $days; ReplaceEnvVarConfigFile("imapd", "IMAP_EMPTYTRASH", join(",", @trashFolders)); $saved=1; } if ($saved) { changed("$sbindir/imapd stop ; . $sysconfdir/imapd ; test \"\$IMAPDSTART\" != YES || $sbindir/imapd start"); changed("$sbindir/imapd-ssl stop ; . $sysconfdir/imapd-ssl ; test \"\$IMAPDSSLSTART\" != YES || $sbindir/imapd-ssl start"); $errstr="\@SAVED\@"; } my $imap=ReadEnvVarConfigFile("imapd"); my $imapssl=ReadEnvVarConfigFile("imapd-ssl"); my %cap_imap_set; my %cap_imap_ssl_set; foreach (grep (/./, split (/\s+/, $$imap{'IMAP_CAPABILITY'}))) { $cap_imap_set{$_}=1; } foreach (grep (/./, split (/\s+/, $$imap{'IMAP_CAPABILITY_TLS'}))) { $cap_imap_ssl_set{$_}=1; } my $capHTML="\n"; foreach (sort keys %cap_all) { my $cap=$_; my $capfldname=$cap; $capfldname =~ s/=/--/g; next if $cap eq "IMAP4rev1" || $cap eq "NAMESPACE"; $capHTML .= "\n"; } $capHTML .= "
\@CAPABILITIES\@\@NONTLS\@\@TLS\@
$cap"; if ($cap_imap{$cap}) { $capHTML .= ""; } else { $capHTML .= " "; } $capHTML .= ""; if ($cap_imap_ssl{$cap}) { $capHTML .= ""; } else { $capHTML .= " "; } $capHTML .= "
\n"; my $trashHTML="\n"; my @trashfolders; foreach (split(/,/, $$imap{'IMAP_EMPTYTRASH'})) { my $days=$_; my $folder="Trash"; next unless $days; ($folder, $days)=($1,$2) if $days =~ /^(.*):([0-9]+)$/; push @trashfolders, $folder; $trashHTML .= "\n"; } $trashHTML .= "
\@FOLDER\@\@DAYS\@
$folder
\n"; display_form("admin-40imap.html", { "ENABLED" => "", "ENABLED_SSL" => "", "ENABLED_STARTTLS" => "", "REQUIRE_STARTTLS" => "", "IMAP_IDLE_TIMEOUT" => $$imap{"IMAP_IDLE_TIMEOUT"}, "IMAP_DISABLETHREADSORT" => "", "IMAP_CHECK_ALL_FOLDERS" => "", "IMAP_OBSOLETE_CLIENT" => "", "MAXDAEMONS" => $$imap{'MAXDAEMONS'}, "MAXPERIP" => $$imap{'MAXPERIP'}, "CAPA" => $capHTML, "IMAP_ULIMITD" => $$imap{'IMAP_ULIMITD'}, "IMAP_USELOCKS" => "", "IMAP_MOVE_EXPUNGE_TO_TRASH" => "", "IMAP_EMPTYTRASH" => $trashHTML, "ERROR" => $errstr } );