#!/usr/local/bin/tclsh8.6

#
# List currently/last connected user(s)
#
# History
#   2015/06/03 : jean     : design
#

#
# Template pages used by this script
#

set conf(page)          who.html
set conf(script-user)	profile

#
# Script parameters
#

set conf(tabwho) {
    global {
	chars {10 normal}
	columns {20 40 40 30}
	botbar {yes}
	align {left}
    }
    pattern Title {
	title {yes}
	topbar {yes}
	chars {bold}
	vbar {yes}
	column { }
	vbar {yes}
	column { }
	vbar {yes}
	column { }
	vbar {yes}
	column { }
	vbar {yes}
    }
    pattern Normal {
	vbar {yes}
	column {
	    format {raw}
	}
	vbar {yes}
	column { }
	vbar {yes}
	column { }
	vbar {yes}
	column { }
	vbar {yes}
    }
}

#
# Netmagis general library
#

source /usr/local/lib/netmagis/libnetmagis.tcl

# ::webapp::cgidebug ; exit

##############################################################################
# List currently connected users
##############################################################################

d cgi-register {action now} {
} {
    global conf

    set titlepage [mc "Currently connected users"]

    set lines {}
    lappend lines [list Title \
			    [mc "Login"] \
			    [mc "Start"] \
			    [mc "IP address"] \
			    [mc "Idle time"] \
			]

    set sql "SELECT u.login, t.start, t.ip,
		    date_trunc ('second', now() - t.lastaccess) AS idle
		FROM global.utmp t, global.nmuser u
		WHERE t.idcor = u.idcor
		ORDER BY u.login"
    pg_select $dbfd $sql tab {
	set url [format "$conf(script-user)?login=%s" $tab(login)]
	set login [::webapp::helem "a" $tab(login) "href" $url]
	lappend lines [list Normal $login $tab(start) $tab(ip) $tab(idle)]
    }

    set tab [::arrgen::output "html" $conf(tabwho) $lines]

    #
    # End of script: output page and close database
    #

    d result $conf(page) [list \
				[list %TITLEPAGE% $titlepage] \
				[list %TAB%       $tab] \
			    ]
}

##############################################################################
# List last connected users
##############################################################################

d cgi-register {action last} {
} {
    global conf

    set titlepage [mc "Last connected users"]

    set tab [display-last-connections $dbfd -1]

    d result $conf(page) [list \
				[list %TITLEPAGE% $titlepage] \
				[list %TAB%       $tab] \
			    ]
}

##############################################################################
# Main procedure
##############################################################################

d cgi-dispatch "admin" "admin"
