#!/bin/bash

# available modules :
# * sync : portage tree synchronisation
# * glsa : security advisory reporting
# * world : available world updates
# * vserver : vserver portage tree synchronization
# * lastlog : generates a list of last logins for this host

modules="sync glsa world lastlog"


function separator {
	HEADER=`echo "${1}####" | tr '[:print:]' '#'`
	echo -e "\n${HEADER}"
	echo "# ${1} #"
	echo -e "${HEADER}\n"
}

function sync {
	separator "portage tree synchronization"
	emerge --sync --quiet
	[ ${?} = 0 ] && echo "portage tree is now up-to-date !"
}


function glsa {
	separator "`hostname -f` : GLSA listing"
	for glsa in  `glsa-check -t all 2>/dev/null | grep '[0-9]*-[0-9]*'`
	do glsa-check -d ${glsa} 2>/dev/null | grep "Affected package"
		echo -e "url : http://security.gentoo.org/glsa/glsa-${glsa}.xml\n"
	done
}


function world {
	separator "Available updates for your own 'world'"
	emerge world -uDNpv
}


function vserver {
	separator "vserver portage trees synchronization"
	vesync -a -q
}


function lastlog {
	separator "last logins list"
	last -n 50 -a
}

for action in ${modules} ; do
	eval ${action}
done

