Fix to simplify regex check

This commit is contained in:
Ilia Ross
2025-03-19 13:31:37 +02:00
parent 264ecae147
commit d74e7e66c5

View File

@@ -32,24 +32,19 @@ print &ui_table_row($text{'net_ssl_disable'},
[ @opts,
[ "", &getdef($sslopt, \@opts) ] ]));
@listens = &find("imap_listen", $conf, 2) ?
my @listens = &find("imap_listen", $conf, 2) ?
("imap_listen", "pop3_listen", "imaps_listen", "pop3s_listen") :
("listen");
my $mode;
foreach $l (@listens) {
$listen = &find_value($l, $conf);
$mode = !$listen ? 0 :
my $v = &find_value($l, $conf);
$mode = !$v ? 0 :
# All interfaces, put in any order, e.g. "[::], *" or "*, ::"
$listen =~ /^
(?!(\*,\s*\*) # Disallow *, *
| (\[::\],\s*::) # Disallow [::], ::
| (::,\s*\[::\])) # Disallow ::, [::]
(\*|::|\[::\]),\s* # Match *, ::, or [::]
(\*|::|\[::\])$ # Followed by another *, ::, or [::]
/x ? 1 :
$v =~ /^\*,\s*(::|\[::\])$/ || $v =~ /^(::|\[::\]),\s*\*$/ ? 1 :
# IPv6 only, e.g. "[::]" or "::"
$listen eq '::' || $listen eq '[::]' ? 4 :
$v eq '::' || $v eq '[::]' ? 4 :
# IPv4 only, e.g. "*"
$listen eq "*" ? 2 : 3,
$v eq "*" ? 2 : 3,
print &ui_table_row($text{'net_'.$l},
&ui_radio($l."_mode", $mode,
[ [ 0, $text{'net_listen0'} ],
@@ -57,7 +52,7 @@ foreach $l (@listens) {
[ 2, $text{'net_listen2'} ],
[ 4, $text{'net_listen4'} ],
[ 3, $text{'net_listen3'} ] ])."\n".
&ui_textbox($l, $mode == 3 ? $listen : "", 40), 3);
&ui_textbox($l, $mode == 3 ? $v : "", 40), 3);
}
print &ui_table_end();