diff --git a/firewall/edit_rule.cgi b/firewall/edit_rule.cgi index b65945e6e..233e9238d 100755 --- a/firewall/edit_rule.cgi +++ b/firewall/edit_rule.cgi @@ -228,127 +228,117 @@ print &ui_table_row($text{'edit_tcpflags'}, &tcpflag_input("tcpflags1", $rule->{'tcp-flags'}->[2])). ""); -print " $text{'edit_tcpoption'}\n"; -print "",&print_mode("tcpoption", $rule->{'tcp-option'}),"\n"; -printf " \n", - $rule->{'tcp-option'}->[1]; +# TCP options +print &ui_table_row($text{'edit_tcpoption'}, + &print_mode("tcpoption", $rule->{'tcp-option'})." ". + &ui_textbox("tcpoption", $rule->{'tcp-option'}->[1], 6)); -print "
\n"; +print &ui_table_hr(); -print " $text{'edit_icmptype'}\n"; -print "",&print_mode("icmptype", $rule->{'icmp-type'}),"\n"; -print &icmptype_input("icmptype", $rule->{'icmp-type'}->[1])," \n"; +# ICMP packet type +print &ui_table_row($text{'edit_icmptype'}, + &print_mode("icmptype", $rule->{'icmp-type'})." ". + &icmptype_input("icmptype", $rule->{'icmp-type'}->[1])); -print " $text{'edit_mac'}\n"; -print "",&print_mode("macsource", $rule->{'mac-source'}),"\n"; -printf " \n", - $rule->{'mac-source'}->[1]; +# MAC address +print &ui_table_row($text{'edit_mac'}, + &print_mode("macsource", $rule->{'mac-source'})." ". + &ui_textbox("macsource", $rule->{'mac-source'}->[1], 18)); -print "
\n"; +print &ui_table_hr(); -print " $text{'edit_limit'}\n"; -print "",&print_mode("limit", $rule->{'limit'}, - $text{'edit_below'}, $text{'edit_above'}, 1),"\n"; +# Packet flow limit ($n, $u) = $rule->{'limit'}->[1] =~ /^(\d+)\/(\S+)$/ ? ($1, $2) : (); -print "\n"; -print "/ \n"; +print &ui_table_row($text{'edit_limit'}, + &print_mode("limit", $rule->{'limit'}, + $text{'edit_below'}, $text{'edit_above'}, 1)." ". + &ui_textbox("limit0", $n, 6)." / ". + &ui_select("limit1", $u, ['second', 'minute', 'hour', 'day'])); -print " $text{'edit_limitburst'}\n"; -print "",&print_mode("limitburst", $rule->{'limit-burst'}, - $text{'edit_below'}, $text{'edit_above'}, 1),"\n"; -printf " \n", - $rule->{'limit-burst'}->[1]; +# Packet burst rate +print &ui_table_row($text{'edit_limitburst'}, + &print_mode("limitburst", $rule->{'limit-burst'}, + $text{'edit_below'}, $text{'edit_above'}, 1)." ". + &ui_textbox("limitburst", $rule->{'limit-burst'}->[1], 6)); if ($rule->{'chain'} eq 'OUTPUT') { - print "
\n"; + print &ui_table_hr(); - print " $text{'edit_uidowner'}\n"; - print "",&print_mode("uidowner", $rule->{'uid-owner'}),"\n"; - printf " %s \n", - $rule->{'uid-owner'}->[1], &user_chooser_button("uidowner"); + # Sending UID + print &ui_table_row($text{'edit_uidowner'}, + &print_mode("uidowner", $rule->{'uid-owner'})." ". + &ui_user_textbox("uidowner", $rule->{'uid-owner'}->[1])); - print " $text{'edit_gidowner'}\n"; - print "",&print_mode("gidowner", $rule->{'gid-owner'}),"\n"; - printf " %s \n", - $rule->{'gid-owner'}->[1], &group_chooser_button("gidowner"); + # Sending GID + print &ui_table_row($text{'edit_gidowner'}, + &print_mode("gidowner", $rule->{'gid-owner'})." ". + &ui_group_textbox("gidowner", $rule->{'gid-owner'}->[1])); - print " $text{'edit_pidowner'}\n"; - print "",&print_mode("pidowner", $rule->{'pid-owner'}),"\n"; - printf " \n", - $rule->{'pid-owner'}->[1]; + # Sending process ID + print &ui_table_row($text{'edit_pidowner'}, + &print_mode("pidowner", $rule->{'pid-owner'})." ". + &ui_textbox("pidowner", $rule->{'pid-owner'}->[1], 6)); - print " $text{'edit_sidowner'}\n"; - print "",&print_mode("sidowner", $rule->{'sid-owner'}),"\n"; - printf " \n", - $rule->{'sid-owner'}->[1]; + # Sending process group + print &ui_table_row($text{'edit_sidowner'}, + &print_mode("sidowner", $rule->{'sid-owner'})." ". + &ui_textbox("sidowner", $rule->{'sid-owner'}->[1], 6)); } -print "
\n"; +print &ui_table_hr(); # Connection states -print " $text{'edit_state'}\n"; -print "\n"; -print "
", - &print_mode("state", $rule->{'state'})," 
\n"; +print &ui_table_row($text{'edit_state'}, + "\n". + "
". + &print_mode("state", $rule->{'state'})." ". + &ui_select("state", [ split(/,/, $rule->{'state'}->[1]) ], + [ map { [ $_, $text{"edit_state_".lc($_)} ] } + ('NEW', 'ESTABLISHED', 'RELATED', 'INVALID', 'UNTRACKED') ]). + "
"); # Type of service -print " $text{'edit_tos'}\n"; -print "",&print_mode("tos", $rule->{'tos'}),"\n"; -print &tos_input("tos", $rule->{'tos'}->[1])," \n"; +print &ui_table_row($text{'edit_tos'}, + &print_mode("tos", $rule->{'tos'})." ". + &tos_input("tos", $rule->{'tos'}->[1])); -print "
\n"; +print &ui_table_hr(); # Input physical device -print " $text{'edit_physdevin'}\n"; -print "",&print_mode("physdevin", $rule->{'physdev-in'}),"\n"; -print &interface_choice("physdevin", $rule->{'physdev-in'}->[1]); -print " \n"; +print &ui_table_row($text{'edit_physdevin'}, + &print_mode("physdevin", $rule->{'physdev-in'})." ". + &interface_choice("physdevin", $rule->{'physdev-in'}->[1])); # Output physical device -print " $text{'edit_physdevout'}\n"; -print "",&print_mode("physdevout", $rule->{'physdev-out'}),"\n"; -print &interface_choice("physdevout", $rule->{'physdev-out'}->[1]); -print " \n"; +print &ui_table_row($text{'edit_physdevout'}, + &print_mode("physdevout", $rule->{'physdev-out'})." ". + &interface_choice("physdevout", $rule->{'physdev-out'}->[1])); # Physdev match modes -print " $text{'edit_physdevisin'}\n"; -print "",&print_mode("physdevisin", $rule->{'physdev-is-in'}, - $text{'yes'}, $text{'no'})," \n"; -print " $text{'edit_physdevisout'}\n"; -print "",&print_mode("physdevisout", $rule->{'physdev-is-out'}, - $text{'yes'}, $text{'no'})," \n"; -print " $text{'edit_physdevisbridged'}\n"; -print "",&print_mode("physdevisbridged", $rule->{'physdev-is-bridged'}, - $text{'yes'}, $text{'no'})," \n"; +print &ui_table_row($text{'edit_physdevisin'}, + &print_mode("physdevisin", $rule->{'physdev-is-in'}, + $text{'yes'}, $text{'no'})); +print &ui_table_row($text{'edit_physdevisout'}, + &print_mode("physdevisout", $rule->{'physdev-is-out'}, + $text{'yes'}, $text{'no'})); +print &ui_table_row($text{'edit_physdevisbridged'}, + &print_mode("physdevisbridged", $rule->{'physdev-is-bridged'}, + $text{'yes'}, $text{'no'})); -print "
\n"; +print &ui_table_hr(); # Show unknown modules @mods = grep { !/^(tcp|udp|icmp|multiport|mac|limit|owner|state|tos|comment|physdev)$/ } map { $_->[1] } @{$rule->{'m'}}; -print " $text{'edit_mods'}\n"; -printf " \n", - join(" ", @mods); +print &ui_table_row($text{'edit_mods'}, + &ui_textbox("mods", join(" ", @mods), 60)); # Show unknown parameters $rule->{'args'} =~ s/^\s+//; $rule->{'args'} =~ s/\s+$//; -print " $text{'edit_args'}\n"; -printf " \n", - $rule->{'args'}; +print &ui_table_row($text{'edit_args'}, + &ui_textbox("args", $rule->{'args'}, 60)); -print "\n"; +print &ui_table_end(); if ($in{'new'}) { print &ui_form_end([ [ undef, $text{'create'} ] ]); } diff --git a/ldap-useradmin/ldap-useradmin-lib.pl b/ldap-useradmin/ldap-useradmin-lib.pl index 3f16176eb..39e9a5a6b 100755 --- a/ldap-useradmin/ldap-useradmin-lib.pl +++ b/ldap-useradmin/ldap-useradmin-lib.pl @@ -136,15 +136,21 @@ local ($pass, $salt) = @_; if ($config{'md5'} == 5) { # SHA encryption local $qp = quotemeta($pass); - local $out = `$config{'slappasswd'} -h '{sha}' -s $qp 2>/dev/null`; - $out =~ s/\s+$//; + local $out = &backquote_command("$config{'slappasswd'} -h '{sha}' -s $qp 2>/dev/null"); + if ($out && !$?) { + $out =~ s/\s+$//; + $out =~ s/^\{sha\}//i; + return $out; + } + # Fall back to built-in code + $out = &useradmin::encrypt_sha1($pass); $out =~ s/^\{sha\}//i; return $out; } if ($config{'md5'} == 4) { # LDAP SSHA encryption local $qp = quotemeta($pass); - local $out = `$config{'slappasswd'} -h '{ssha}' -s $qp 2>/dev/null`; + local $out = &backquote_command("$config{'slappasswd'} -h '{ssha}' -s $qp 2>/dev/null"); $out =~ s/\s+$//; $out =~ s/^\{ssha\}//i; return $out; @@ -152,7 +158,7 @@ if ($config{'md5'} == 4) { if ($config{'md5'} == 3) { # LDAP MD5 encryption local $qp = quotemeta($pass); - local $out = `$config{'slappasswd'} -h '{md5}' -s $qp 2>/dev/null`; + local $out = &backquote_command("$config{'slappasswd'} -h '{md5}' -s $qp 2>/dev/null"); $out =~ s/\s+$//; $out =~ s/^\{md5\}//i; return $out; diff --git a/mailboxes/boxes-lib.pl b/mailboxes/boxes-lib.pl index 78dcba828..833bfab95 100755 --- a/mailboxes/boxes-lib.pl +++ b/mailboxes/boxes-lib.pl @@ -361,6 +361,16 @@ foreach my $ext (".dir", ".pag", ".db") { return 0; } +# delete_dbm_index(user|file) +# Deletes all DBM indexes for a user or file +sub delete_dbm_index +{ +local $ifile = &user_index_file($_[0]); +foreach my $ext (".dir", ".pag", ".db") { + &unlink_file($ifile.$ext); + } +} + # empty_mail(user|file) # Truncate a mail file to nothing sub empty_mail