diff --git a/ldap-server/add.cgi b/ldap-server/add.cgi index be4bf61ed..59419f42c 100644 --- a/ldap-server/add.cgi +++ b/ldap-server/add.cgi @@ -40,5 +40,6 @@ if (!$rv || $rv->code) { &ldap_error($rv))); } +&webmin_log('create', 'dn', $dn); &redirect("edit_browser.cgi?base=".&urlize($dn)); diff --git a/ldap-server/add_browser.cgi b/ldap-server/add_browser.cgi index 28fc087eb..bac46ed9f 100644 --- a/ldap-server/add_browser.cgi +++ b/ldap-server/add_browser.cgi @@ -24,9 +24,11 @@ $rv = $ldap->modify($bo->dn(), add => { $in{'add'} => $in{'value'} }); if (!$rv || $rv->code) { &error(&text('add_emodify', "".$bo->dn()."", - "$in{'edit'}", + "$in{'add'}", $rv ? $rv->code : "Unknown error")); } # Return to object +&webmin_log('create', 'attr', $in{'add'}, { 'dn' => $in{'base'}, + 'value' => $in{'value'} }); &redirect("edit_browser.cgi?base=".&urlize($in{'base'})."&mode=attrs"); diff --git a/ldap-server/delete_browser.cgi b/ldap-server/delete_browser.cgi index 696fb2016..fc68fc26b 100644 --- a/ldap-server/delete_browser.cgi +++ b/ldap-server/delete_browser.cgi @@ -28,4 +28,10 @@ if (!$rv || $rv->code) { } # Return to object +if (@d == 1) { + &webmin_log('delete', 'attr', $d[0], { 'dn' => $in{'base'} }); + } +else { + &webmin_log('delete', 'attrs', scalar(@d), { 'dn' => $in{'base'} }); + } &redirect("edit_browser.cgi?base=".&urlize($in{'base'})."&mode=attrs"); diff --git a/ldap-server/lang/en b/ldap-server/lang/en index b02932ac3..ecf2d5e7d 100644 --- a/ldap-server/lang/en +++ b/ldap-server/lang/en @@ -144,3 +144,19 @@ stop_ekill=Kill process failed : $1 start_err=Failed to start LDAP server start_ecmd=$1 failed : $2 +log_create_dn=Created object $1 +log_delete_dn=Deleted object $1 +log_rename_dn=Renamed object $1 +log_delete_dns=Deleted $1 objects +log_create_attr=Added attribute to object $2 +log_create_attr_l=Added attribute $1 with value $3 to object $2 +log_modify_attr=Updated attribute in object $2 +log_modify_attr_l=Updated attribute $1 with value $3 in object $2 +log_delete_attr=Deleted from object $2 +log_delete_attr_l=Deleted attribute $1 from object $2 +log_delete_attrs=Deleted $1 attributes from object $2 +log_stop=Stopped LDAP server +log_start=Started LDAP Server +log_apply=Applied configuration +log_slapd=Changed LDAP server configuration + diff --git a/ldap-server/ldap-server-lib.pl b/ldap-server/ldap-server-lib.pl index 09680a03e..d8072efb2 100644 --- a/ldap-server/ldap-server-lib.pl +++ b/ldap-server/ldap-server-lib.pl @@ -1,7 +1,6 @@ # Functions for configuring and talking to an LDAP server # XXX help pages # XXX initial setup -# XXX locking and logging # XXX install ldap server # XXX default configs for various systems (include search max of 100) # XXX more slapd.conf options diff --git a/ldap-server/log_parser.pl b/ldap-server/log_parser.pl new file mode 100644 index 000000000..719643874 --- /dev/null +++ b/ldap-server/log_parser.pl @@ -0,0 +1,39 @@ +# log_parser.pl +# Functions for parsing this module's logs + +do 'ldap-server-lib.pl'; + +# parse_webmin_log(user, script, action, type, object, ¶ms) +# Converts logged information from this module into human-readable form +sub parse_webmin_log +{ +local ($user, $script, $action, $type, $object, $p, $long) = @_; +if ($type eq 'dn') { + # Changed some DN + $object =~ s/,\s+/,/g; + return &text('log_'.$action.'_dn', + "".&html_escape($object).""); + } +elsif ($type eq 'dns') { + # Multi-DN operation + return &text('log_'.$action.'_dns', $object); + } +elsif ($type eq 'attr') { + # Changed some attribute of a DN + $p->{'dn'} =~ s/,\s+/,/g; + return &text($long ? 'log_'.$action.'_attr_l' : 'log_'.$action.'_attr', + "".&html_escape($object)."", + "".&html_escape($p->{'dn'})."", + "".&html_escape($p->{'value'}).""); + } +elsif ($type eq 'attrs') { + # Multi-attribute operation + $p->{'dn'} =~ s/,\s+/,/g; + return &text('log_'.$action.'_attrs', $object, + "".&html_escape($p->{'dn'}).""); + } +else { + return $text{'log_'.$action}; + } +} + diff --git a/ldap-server/rename_browser.cgi b/ldap-server/rename_browser.cgi index 3ecf389bb..70249675b 100755 --- a/ldap-server/rename_browser.cgi +++ b/ldap-server/rename_browser.cgi @@ -32,5 +32,6 @@ if (!$rv || $rv->code) { } # Return to object +&webmin_log('rename', 'dn', $in{'old'}, { 'new' => $in{'rename'} }); &redirect("edit_browser.cgi?base=".&urlize($in{'base'})."&mode=subs"); diff --git a/ldap-server/save_browser.cgi b/ldap-server/save_browser.cgi index f9342fb97..5817b593c 100644 --- a/ldap-server/save_browser.cgi +++ b/ldap-server/save_browser.cgi @@ -30,4 +30,6 @@ if (!$rv || $rv->code) { } # Return to object +&webmin_log('modify', 'attr', $in{'edit'}, { 'dn' => $in{'base'}, + 'value' => join(" ", @values) }); &redirect("edit_browser.cgi?base=".&urlize($in{'base'})."&mode=attrs"); diff --git a/ldap-server/sdelete_browser.cgi b/ldap-server/sdelete_browser.cgi index d07c60f32..56b5b382b 100644 --- a/ldap-server/sdelete_browser.cgi +++ b/ldap-server/sdelete_browser.cgi @@ -27,4 +27,11 @@ foreach $d (@d) { } # Return to object +if (@d == 1) { + &webmin_log('delete', 'dn', $d[0]); + } +else { + &webmin_log('delete', 'dns', scalar(@d), + { 'dn' => \@d }); + } &redirect("edit_browser.cgi?base=".&urlize($in{'base'})."&mode=subs");