Administration Panel

Device Control

Device Admin

User Control

User Admin

Maintenance

    

Admin Log

<& SELF:show_log &>


Note: <%args> $entries => 20 @type => () <%shared> my ($arg_entries,$logs); my $user = $m->session->{user}; my $domain = $netdisco::CONFIG{domain}; my %actions = ( # action => [longname, confirm action?] 'expire_ips' => ['Database Cleanup - Expire IPs [-I]',1], 'arpwalk' => ['ArpNip whole network',1], 'macwalk' => ['MacSuck whole network',1], 'nbtwalk' => ['NbtStat whole network',1], 'graph' => ['Regenerate Graph',1], 'backup' => ['Run Nightly Backup',1], 'clean_nodes' => ['Database Cleanup - Nodes [-K]',1], 'clean_alias' => ['Database Cleanup - Aliases [-k]',1] ); my %log_events = ( 'user_add' => 'User Added', 'user_change' => 'User Changed', 'user_del' => 'User Deleted', 'login' => 'Login', 'http_login' => 'Login via HTTP', 'logout' => 'Logout', 'login_failure' => 'Login Failed', 'pw_change' => 'Passwd Changed', ); <%init> # Enforce secure + admin $m->comp('SELF:force_secure_admin'); $arg_entries = $entries; # Get names of events in db my $events = sql_column('user_log',['distinct(event)','true']); # Limit by Type my $where = {}; foreach my $this_type (@type){ next unless defined $this_type and $this_type; push (@{$where->{event}},$this_type); } # Fetch Admin Log Entries # TODO: this is going to get slower and slower, so I need to use the DB to limit it. $logs = sql_rows('user_log',['username','userip','event','details', 'extract(epoch from creation) as creation'], $where,1); <%method force_secure_admin> <%perl> # Send to https if not secure. unless (&is_secure){ my $url = url_secure($r->uri); $m->redirect($url); } # Send to login if not admin. unless ($m->session->{user_admin}) { my $url = $m->interp->apply_escapes( $r->uri, 'u' ); my $title = $m->scomp('REQUEST:title'); $title =~ s/^\s*-\s+//; $title =~ s/\s+$//; $m->session->{_login_msg} = "Please log in as a netdisco administrator in order to use the ${title}."; $m->redirect("login.html?done=$url"); } %# %# show_log() - Barfs out contents of @$logs %# <%method show_log> % my $count = 0; % foreach my $log (sort {$b->{creation} <=> $a->{creation} }@$logs){ % my $event = $log_events{$log->{event}} || $log->{event}; % $count++; last if ($arg_entries ne 'All' and $count >= $arg_entries); %}
Date User Event IP Log

<%scalar localtime($log->{creation})%> <%$log->{username}%> <%$event%> <%$log->{userip}%> <%$log->{details}|h%>
<%method title> - Administration Panel \ %# $Id$ %# vim:syntax=mason