Ubuntu Forums ubuntu.com - launchpad.net - ubuntu help  

Go Back   Ubuntu Forums > The Ubuntu Forum Community > Main Support Categories > General Help
Register Reset Password Forum Help Forum Council Search Today's Posts Mark Forums Read

General Help
All your general support questions for Ubuntu, Kubuntu, Edubuntu and Xubuntu.

 
Thread Tools Display Modes
Old August 12th, 2008   #1
crjackson
Iced Blended Vanilla Crème Ubuntu
 
crjackson's Avatar
 
Join Date: May 2007
Location: Charlotte, NC, USA
Beans: 2,842
Ubuntu Development Release
Account Lease time / Content filtering

Timekeepr - Keep control of computer usage

timekpr developers are .nedberg, forger

This program will track and control the computer usage of your kids. You can limit their daily usage and configure periods when they cannot log in.

Developers Even Nedberg and Savvas Radević (or .nedberg and forger) of the Ubuntu forums have rewritten the package using python as opposed to the bash shell script of it's previous form. timekpr now has a full featured interface with the ability to change and grow as needed. The current version supports Ubuntu, Kubuntu and Xbuntu. Please report any bugs you find. Current status indicated below:
  • Ubuntu -- Lucid, Karmic, Jaunty, Intrepid, Hardy
  • Kubuntu - Lucid, Karmic, Jaunty, Intrepid, Hardy
  • Xubuntu - Lucid, Karmic, Jaunty, Intrepid, Hardy

INSTRUCTIONS

Please add the software repository as listed below, and install from synaptic or terminal.

Quote:
Originally Posted by .nedberg View Post
The PPAs have changed. For Stable Versions Use:
Code:
deb http://ppa.launchpad.net/timekpr-maintainers/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/timekpr-maintainers/ppa/ubuntu jaunty main
For Beta Versions Use:
Code:
deb http://ppa.launchpad.net/nedberg/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/nedberg/ppa/ubuntu jaunty main
Follow these instructions for installing packages from these PPAs.
Attached Images
File Type: png Menu.png (819.7 KB, 217 views)
File Type: png Status.png (56.1 KB, 262 views)
File Type: png Settings.png (44.2 KB, 233 views)
__________________
AMD ATHLON 64 X2 4800+ @ 2.6 GHz - Ubuntu Lucid 10.04
MSI K8N Neo4 Platinum/SLI - BIOS 3.11 - 4 GB Curcial DDR
MSI 8800 GT -- Plextor PX-880SA -- Pioneer DVR-115D
2x 74 GB WD Raptors SATA , 2x 250 GB Hitachi SATA (Data)

Last edited by crjackson; May 2nd, 2010 at 10:43 PM.. Reason: Add Latest FIles - Instructions
crjackson is offline   Reply With Quote
Old August 12th, 2008   #2
.nedberg
Has an Ubuntu Drip
 
.nedberg's Avatar
 
Join Date: Nov 2006
Location: Norway
Beans: 774
Kubuntu 10.04 Lucid Lynx
Re: Account Lease time / Content filtering

Never used dansguardian before, but I found this thread: http://ubuntuforums.org/showthread.php?t=207008

EDIT: Also have a look here: http://ubuntuforums.org/showthread.php?t=769671 for a gui to configure dansguardian.

My children are not old enough to use computers yet, but I will have a look at this myself just to be prepared!
__________________
Open mind, open source!
Keep control of computer usage with timekpr
Screensaver for Amarok? AmarokScreenSaver
My (Norwegian) blog about motorcycles and MotoGP

Last edited by .nedberg; August 12th, 2008 at 02:12 PM..
.nedberg is offline   Reply With Quote
Old August 13th, 2008   #3
crjackson
Iced Blended Vanilla Crème Ubuntu
 
crjackson's Avatar
 
Join Date: May 2007
Location: Charlotte, NC, USA
Beans: 2,842
Ubuntu Development Release
Account Lease time - Timekeeper Developement

Okay, I've found a home brewed script from this page called Waggle Dance it's supposed to do EXACTLY what I want, for EXACTLY the same reasons.

I had a little permissions issue during setting up the time limits for my test account, but I overcame that with sudo -i

I have two issues that I'm hoping someone (I posted to the script writer too) will help me with.

In my test scenario, I gave the user 300 seconds of use. The script then added another 450 in grace time to log off. I watched the clock ticking in the time keeping file but here's the problem(s);

1) None of the warning pop-ups activated (possibly due to allocated time was lower than grace period. I changed grace period to 0 but it had no effect).

2) Once it kicked the test user off, it allowed an immediate re-login to the test account, and another 450 seconds were allowed thereby allowing the test user to login every few minutes. It would be annoying but a determined child would do that all night long.

Could someone have a look at the script and help me modify it so that those problems are fixed please?

Code:
#!/bin/bash
###
# timekpr.sh - simple 
# watches gnome sessions and logs them out once the user has exceeded a set, per day limit
# /var/lib/timekpr/$username.time hold a count of seconds user has had a gnome session
# /var/lib/timekpr/$username hold the daily allowed seconds for the user
#
# you may need to install notify-send with: $apt-get install libnotify-bin
#
# Copyright 2008 Chris Jackson <chris@91courtstreet.net>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# See <http://www.gnu.org/licenses/>. 
#

default_limit=87000 #all day
grace_period=450
poll_time=20

#Ubuntu uses alternatives so we look for x-session-manager instead of gnome-session
SESSION_MANAGER=x-session-manager

# get the usernames and PIDs of sessions

while(true); do
    sleep $poll_time
    pidlists=$( ps --no-heading -fC $SESSION_MANAGER | awk 'BEGIN{ FS=" " } { print $1 "," $2 }' )
    for pidlist in $pidlists; do
        # split username and pid - FIXME - I bet this would be faster with bash arrays and substitution 
        username=$( echo $pidlist | awk 'BEGIN{ FS=","} { print $1}' )
        pid=$( echo $pidlist | awk 'BEGIN{ FS=","} { print $2}' )
        if [[ ! -e "/var/lib/timekpr/$username" ]]
        then 
            echo $default_limit > /var/lib/timekpr/$username
        fi
        
        # if the time file is missing or was last touched yesterday, start over
        if [[ -e "/var/lib/timekpr/$username.time" && `( stat -c '%z' /var/lib/timekpr/$username.time|cut -c9,10 )` == `date +%d` ]]
        then 
            #add $poll_time seconds to it
            timekpr=$(( `cat /var/lib/timekpr/$username.time` + $poll_time ))
            echo $timekpr > /var/lib/timekpr/$username.time
        else
        	timekpr=$poll_time
            echo $timekpr > /var/lib/timekpr/$username.time
        fi

        echo $username, $pid, $timekpr
        
        if [[ $timekpr -gt `cat /var/lib/timekpr/$username` ]]
        then
            ## get the display and xauthority used by out session manager
            UDISPLAY=`grep -z DISPLAY \
                /proc/$pid/environ | sed -e 's/DISPLAY=//'`
            XAUTHORITY=`grep -z XAUTHORITY \
                /proc/$pid/environ | sed -e 's/XAUTHORITY=//'`
            
            # find DBUS session bus for this session
            DBUS_SESSION_BUS_ADDRESS=`grep -z DBUS_SESSION_BUS_ADDRESS \
                /proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
            # use it - give a warning, then another one 1/2 way through grace_period
            XAUTHORITY="$XAUTHORITY" DISPLAY="$UDISPLAY" DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" \
                notify-send --icon=gtk-dialog-warning --urgency=critical -t 30000 "Daily Time Limit" "Your session time is about to expire! You have $grace_period sec. to save your work and logout."
            sleep $(($grace_period/2))   # FIXME: this gives other sessions a free grace_period added to their accounting

            XAUTHORITY="$XAUTHORITY" DISPLAY="$UDISPLAY" DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" \
                notify-send --icon=gtk-dialog-warning --urgency=critical -t 30000 "Daily Time Limit" "Your session time is about to expire! You have $(($grace_period/2)) sec. to save your work and logout."
            sleep $(($grace_period/2))   # FIXME: this gives other sessions a free grace_period added to their accounting

            XAUTHORITY="$XAUTHORITY" DISPLAY="$UDISPLAY" DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" \
                notify-send --icon=gtk-dialog-warning --urgency=critical -t 10000 "Shutting Down" "Shutting down session ($pid) now!" 
            # FIXME - should really check to see if user has logged out yet 
            sleep 10
            kill -HUP $pid    #this is a pretty bad way of killing a gnome-session, but we warned 'em
            
            ## uncomment the following to brutally kill all of the users processes
            sleep 10
            pkill -u $username  
            
            ## killing gnome-session should be more like:
            #DISPLAY=":0" XAUTHORITY="/tmp/.gdmEQ0V5T" SESSION_MANAGER="local/wretched:/tmp/.ICE-unix/$pid" su -c 'gnome-session-save --kill --silent' $username
            ## but this can still leave processes to cleanup - plus it's not easy to get SESSION_MANAGER
        fi
    done
done
Attached Files
File Type: txt timekpr.txt (4.7 KB, 12 views)
__________________
AMD ATHLON 64 X2 4800+ @ 2.6 GHz - Ubuntu Lucid 10.04
MSI K8N Neo4 Platinum/SLI - BIOS 3.11 - 4 GB Curcial DDR
MSI 8800 GT -- Plextor PX-880SA -- Pioneer DVR-115D
2x 74 GB WD Raptors SATA , 2x 250 GB Hitachi SATA (Data)

Last edited by crjackson; October 1st, 2008 at 05:35 PM..
crjackson is offline   Reply With Quote
Old August 13th, 2008   #4
.nedberg
Has an Ubuntu Drip
 
.nedberg's Avatar
 
Join Date: Nov 2006
Location: Norway
Beans: 774
Kubuntu 10.04 Lucid Lynx
Re: Account Lease time / Content filtering

To get the notifications:
Code:
# you may need to install notify-send with: $apt-get install libnotify-bin
Looks like it will not prevent a relogin. Short grace_period should "fix" this...
__________________
Open mind, open source!
Keep control of computer usage with timekpr
Screensaver for Amarok? AmarokScreenSaver
My (Norwegian) blog about motorcycles and MotoGP
.nedberg is offline   Reply With Quote
Old August 13th, 2008   #5
crjackson
Iced Blended Vanilla Crème Ubuntu
 
crjackson's Avatar
 
Join Date: May 2007
Location: Charlotte, NC, USA
Beans: 2,842
Ubuntu Development Release
Account Lease time - Timekeeper Developement

Quote:
Originally Posted by .nedberg View Post
To get the notifications:
Code:
# you may need to install notify-send with: $apt-get install libnotify-bin
Looks like it will not prevent a relogin. Short grace_period should "fix" this...
Okay, I installed the libnotify-bin and the grace period was changed to 0. I'll try it again and see what happens.
__________________
AMD ATHLON 64 X2 4800+ @ 2.6 GHz - Ubuntu Lucid 10.04
MSI K8N Neo4 Platinum/SLI - BIOS 3.11 - 4 GB Curcial DDR
MSI 8800 GT -- Plextor PX-880SA -- Pioneer DVR-115D
2x 74 GB WD Raptors SATA , 2x 250 GB Hitachi SATA (Data)

Last edited by crjackson; October 1st, 2008 at 05:36 PM..
crjackson is offline   Reply With Quote
Old August 13th, 2008   #6
crjackson
Iced Blended Vanilla Crème Ubuntu
 
crjackson's Avatar
 
Join Date: May 2007
Location: Charlotte, NC, USA
Beans: 2,842
Ubuntu Development Release
Account Lease time - Timekeeper Developement

Quote:
Originally Posted by crjackson View Post
Okay, I installed the libnotify-bin and the grace period was changed to 0. I'll try it again and see what happens.
Installing libnotify gave me the missing notifications. Lowering the grace period doesn't seem to do anything at all.


Anyone who knows how to make this work can feel free to jump in here...
__________________
AMD ATHLON 64 X2 4800+ @ 2.6 GHz - Ubuntu Lucid 10.04
MSI K8N Neo4 Platinum/SLI - BIOS 3.11 - 4 GB Curcial DDR
MSI 8800 GT -- Plextor PX-880SA -- Pioneer DVR-115D
2x 74 GB WD Raptors SATA , 2x 250 GB Hitachi SATA (Data)

Last edited by crjackson; October 1st, 2008 at 05:36 PM..
crjackson is offline   Reply With Quote
Old August 13th, 2008   #7
.nedberg
Has an Ubuntu Drip
 
.nedberg's Avatar
 
Join Date: Nov 2006
Location: Norway
Beans: 774
Kubuntu 10.04 Lucid Lynx
Re: Account Lease time / Content filtering

OK.

I tested the script and it worked fine for me. I successfully locked myself out of my own computer! It did however let me log in again an imediatly showed a notifier informing I was about to get logged out again.

I sat grace_period to 50.
/var/lib/timekpr/<my username> had 100 in it
poll_time was unchanged at 20
I slightly edited the time for the pop-up notifiers from 30000 to 10000, giving a shorter notifier.

I did not try with grace_period = 0, that might be your problem... Set it low, but not 0. Allow someone to log out and save their work.

If the daily limit is set to 100 sec, grace_period to 50 and poll_time to 20, it will acctually take 180 seconds before the user is logged out.
__________________
Open mind, open source!
Keep control of computer usage with timekpr
Screensaver for Amarok? AmarokScreenSaver
My (Norwegian) blog about motorcycles and MotoGP
.nedberg is offline   Reply With Quote
Old August 13th, 2008   #8
crjackson
Iced Blended Vanilla Crème Ubuntu
 
crjackson's Avatar
 
Join Date: May 2007
Location: Charlotte, NC, USA
Beans: 2,842
Ubuntu Development Release
Account Lease time - Timekeeper Developement

Quote:
Originally Posted by .nedberg View Post
OK.

I tested the script and it worked fine for me. I successfully locked myself out of my own computer! It did however let me log in again an imediatly showed a notifier informing I was about to get logged out again.

I sat grace_period to 50.
/var/lib/timekpr/<my username> had 100 in it
poll_time was unchanged at 20
I slightly edited the time for the pop-up notifiers from 30000 to 10000, giving a shorter notifier.

I did not try with grace_period = 0, that might be your problem... Set it low, but not 0. Allow someone to log out and save their work.

If the daily limit is set to 100 sec, grace_period to 50 and poll_time to 20, it will acctually take 180 seconds before the user is logged out.
Cool, perhaps the 0 is the problem then. I'll give it a shot and see what that does.

Do you know enough about scripting to answer this one? Would it be possible to include some code that would check the date/time and only allow access between 0700-0000 hours each day?

I'm really trying to nail this thing down. Thanks a bunch.
__________________
AMD ATHLON 64 X2 4800+ @ 2.6 GHz - Ubuntu Lucid 10.04
MSI K8N Neo4 Platinum/SLI - BIOS 3.11 - 4 GB Curcial DDR
MSI 8800 GT -- Plextor PX-880SA -- Pioneer DVR-115D
2x 74 GB WD Raptors SATA , 2x 250 GB Hitachi SATA (Data)

Last edited by crjackson; October 1st, 2008 at 05:37 PM..
crjackson is offline   Reply With Quote
Old August 13th, 2008   #9
.nedberg
Has an Ubuntu Drip
 
.nedberg's Avatar
 
Join Date: Nov 2006
Location: Norway
Beans: 774
Kubuntu 10.04 Lucid Lynx
Re: Account Lease time / Content filtering

Pretty sure I can help with that! But I might not get back to you before after the weekend.
__________________
Open mind, open source!
Keep control of computer usage with timekpr
Screensaver for Amarok? AmarokScreenSaver
My (Norwegian) blog about motorcycles and MotoGP
.nedberg is offline   Reply With Quote
Old August 13th, 2008   #10
crjackson
Iced Blended Vanilla Crème Ubuntu
 
crjackson's Avatar
 
Join Date: May 2007
Location: Charlotte, NC, USA
Beans: 2,842
Ubuntu Development Release
Account Lease time - Timekeeper Developement

Quote:
I slightly edited the time for the pop-up notifiers from 30000 to 10000, giving a shorter notifier.
Searching through the script, I found two(2) instances referencing the number 30000. If I wanted to change that to 10000 as you have, would I simply change BOTH of those values?
__________________
AMD ATHLON 64 X2 4800+ @ 2.6 GHz - Ubuntu Lucid 10.04
MSI K8N Neo4 Platinum/SLI - BIOS 3.11 - 4 GB Curcial DDR
MSI 8800 GT -- Plextor PX-880SA -- Pioneer DVR-115D
2x 74 GB WD Raptors SATA , 2x 250 GB Hitachi SATA (Data)

Last edited by crjackson; October 1st, 2008 at 05:37 PM..
crjackson is offline   Reply With Quote

Bookmarks

Tags
timekeeper

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 09:57 AM.


vBulletin ©2000 - 2010, Jelsoft Enterprises Ltd. Ubuntu Logo, Ubuntu and Canonical © Canonical Ltd. Tango Icons © Tango Desktop Project. lingonberry