[rt-devel] Listing logged-in users
Michele Bergonzoni
bergonz at labs.it
Thu Dec 6 06:27:33 EST 2012
> If I come up with something decent, I'll share it.
Decent? Maybe, at least I don't see any obvious security hole. I don't
know enough about RT to know if this will make a SQL query per row, or
if it will take the names from some cache. Anyway that's what I have.
Regards,
Bergonz
================================================================
<!--
# A Box to show logged in users
# Actually shows who displayed this box in the last 5 mins
# To install:
# - cd $RTHOME
# - save this file as local/html/Elements/ListLogged
# - copy the line with "Set($HomepageComponents ..." from
etc/RT_Config.pm to etc/RT_SiteConfig.pm
# - change it to include the word ListLogged
# - mkdir var/logged_users
# - chown <your web server user>.<your web server group> var/logged_users
# - clean mason cache and restart apache
-->
<div class="ticket-overview">
<&|/Widgets/TitleBox,
title => loc("Who's seeing this page (last 5 min)"),
bodyclass => ""
&>
<table border="0" cellspacing="0" cellpadding="1" width="100%"
class="queue-summary">
<%perl>
require RT::User;
my $base = $RT::BasePath . '/var/logged_users';
my $file = $session{'CurrentUser'}->id();
# Touch your file
open(F, '> ' . $base . '/' . $file);
close(F);
my $u = RT::User->new($RT::SystemUser);
my $now=time();
if (not opendir(Q,$base)){
die("Can't scan $base: $!\n");
}
my $tref = [];
my $mtime;
my $uname;
while (defined($file=readdir(Q))){
$mtime=(stat($base . '/' . $file))[9];
if ($mtime >= ($now - 300)) {
if($file =~ /^\d+$/){
$u->Load(int($file));
$uname = $u->Name();
if ($uname){
push(@$tref, [($uname)]);
}
}
}
}
closedir(Q);
my $i=0;
for my $line (@{$tref}){
</%perl>
<tr class="<% $i%2 ? 'oddline' : 'evenline'%>">
<td class="collection-as-table"><% $$line[0] %></td>
</tr>
<%perl>
$i++;
}
</%perl>
</table>
</&>
</div>
================================================================
--
Ing. Michele Bergonzoni - Laboratori Guglielmo Marconi S.p.a.
Phone:+39-051-6781926 e-mail: bergonz at labs.it
alt.advanced.networks.design.configure.operate
More information about the rt-devel
mailing list