From 8d16f31ad0cddc62f9b981020dbf097daf5599da Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Thu, 10 Apr 2008 07:07:35 +0000 Subject: [PATCH] Allow default mode --- postfix/save_client.cgi | 72 +++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/postfix/save_client.cgi b/postfix/save_client.cgi index 1e465a3d2..bf2a5e5af 100755 --- a/postfix/save_client.cgi +++ b/postfix/save_client.cgi @@ -11,44 +11,52 @@ $access{'client'} || &error($text{'opts_ecannot'}); &lock_postfix_files(); -# Save client options -@opts = split(/[\s,]+/, &get_current_value("smtpd_client_restrictions")); -%oldopts = map { $_, 1 } @opts; -%newopts = map { $_, 1 } split(/\0/, $in{'client'}); - -# Save boolean options -foreach $o (&list_client_restrictions()) { - if ($newopts{$o} && !$oldopts{$o}) { - push(@opts, $o); - } - elsif (!$newopts{$o} && $oldopts{$o}) { - @opts = grep { $_ ne $o } @opts; - } +if ($in{'client_def'}) { + # Reset to default + &set_current_value("smtpd_client_restrictions", + "__DEFAULT_VALUE_IE_NOT_IN_CONFIG_FILE__"); } +else { + # Save client options + @opts = split(/[\s,]+/,&get_current_value("smtpd_client_restrictions")); + %oldopts = map { $_, 1 } @opts; + %newopts = map { $_, 1 } split(/\0/, $in{'client'}); -# Save options with values -foreach $o (&list_multi_client_restrictions()) { - $idx = &indexof($o, @opts); - if ($newopts{$o}) { - $in{"value_$o"} =~ /^\S+$/ || - &error(&text('client_evalue', $text{'sasl_'.$o})); + # Save boolean options + foreach $o (&list_client_restrictions()) { + if ($newopts{$o} && !$oldopts{$o}) { + push(@opts, $o); + } + elsif (!$newopts{$o} && $oldopts{$o}) { + @opts = grep { $_ ne $o } @opts; + } } - if ($newopts{$o} && !$oldopts{$o}) { - # Add to end - push(@opts, $o, $in{"value_$o"}); - } - elsif ($newopts{$o} && $oldopts{$o}) { - # Update value - $opts[$idx+1] = $in{"value_$o"}; - } - elsif (!$newopts{$o} && $oldopts{$o}) { - # Remove and value - splice(@opts, $idx, 2); + + # Save options with values + foreach $o (&list_multi_client_restrictions()) { + $idx = &indexof($o, @opts); + if ($newopts{$o}) { + $in{"value_$o"} =~ /^\S+$/ || + &error(&text('client_evalue', $text{'sasl_'.$o})); + } + if ($newopts{$o} && !$oldopts{$o}) { + # Add to end + push(@opts, $o, $in{"value_$o"}); + } + elsif ($newopts{$o} && $oldopts{$o}) { + # Update value + $opts[$idx+1] = $in{"value_$o"}; + } + elsif (!$newopts{$o} && $oldopts{$o}) { + # Remove and value + splice(@opts, $idx, 2); + } } + + &set_current_value("smtpd_client_restrictions", + join(" ", &unique(@opts))); } -&set_current_value("smtpd_client_restrictions", join(" ", &unique(@opts))); - &unlock_postfix_files(); &reload_postfix();