# log_parser.pl # Functions for parsing this module's logs use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; do 'acl-lib.pl'; our (%text); # parse_webmin_log(user, script, action, type, object, ¶ms) # Converts logged information from this module into human-readable form sub parse_webmin_log { my ($user, $script, $action, $type, $object, $p) = @_; my $g = $type eq 'group' ? "_g" : ""; if ($action eq 'modify') { if ($p->{'old'} ne $p->{'name'}) { return &text('log_rename'.$g, "".&html_escape($p->{'old'})."", "".&html_escape($p->{'name'}).""); } else { return &text('log_modify'.$g, "".&html_escape($object).""); } } elsif ($action eq 'create') { if ($p->{'clone'}) { return &text('log_clone'.$g, "".&html_escape($p->{'clone'})."", "".&html_escape($object).""); } else { return &text('log_create'.$g, "".&html_escape($object).""); } } elsif ($action eq 'delete') { if ($type eq "users" || $type eq "groups") { return &text('log_delete_'.$type, &html_escape($object)); } else { return &text('log_delete'.$g, "".&html_escape($object).""); } } elsif ($action eq 'joingroup') { return &text('log_joingroup', &html_escape($object), &html_escape($p->{'group'})); } elsif ($action eq 'acl') { return &text('log_acl', "".&html_escape($object)."", "".&html_escape($p->{'moddesc'}).""); } elsif ($action eq 'reset') { return &text('log_reset', "".&html_escape($object)."", "".&html_escape($p->{'moddesc'}).""); } elsif ($action eq 'cert') { return &text('log_cert', "".&html_escape($object).""); } elsif ($action eq 'switch') { return &text('log_switch', "".&html_escape($object).""); } elsif ($action eq 'twofactor') { return &text('log_twofactor', &html_escape($object), &html_escape($p->{'provider'}), &html_escape($p->{'id'})); } elsif ($action eq 'forgot') { return &text('log_forgot_'.$type, &html_escape($p->{'user'}), &html_escape($p->{'email'})); } else { return $text{'log_'.$action}; } }