Sophie

Sophie

distrib > Mandriva > 2009.1 > x86_64 > media > contrib-release-src > by-pkgid > b3e12e7fc926dd65b9f7ad664552e4c6 > files > 5

pbsweb-butf-0.9-8mdv2009.0.src.rpm

#!/bin/sh
# simple script to setup pbsweb database
# 
# chkpackage : check needeed package
# createpbs : create the pbsweb database
# showdb : show users and hosts in database
# addnewuser : add a new user in database

# variable
postgres_home=/usr/share/pgsq
sbin=/usr/bin
verpbsweb=0.9

#
# check necessary package
test_presence_package() {
testrpm=`rpm -qa ${1}`
if [ -z ${testrpm} ];  then  
	echo "installing ${1}"
	urpmi ${1} 
fi
}

#
# su postgres to manipulate database:
bepostgres_user() {
supostgres="/bin/su -m postgres -c"
}

#
# create the database
createdbpbsweb() {
service postgresql start
bepostgres_user
# Fire up PostgreSQL:
echo "fire UP PostgreSQL"
${supostgres} ${sbin}/postmaster -i -D ${postgres_home}/data >log_file 2>&1 &
sleep 5

# check database exist
# ${supostgres} ${sbin}/psql -d pbsweb_release -c '\l' | grep pbsweb_release

# create the pbsweb_release database:
echo "creating the pbsweb_release database"
${supostgres} "${sbin}/createdb pbsweb_release"
# enter value in pbsweb_release:
echo "Populate pbsweb_release"
${supostgres} "${sbin}/psql -d pbsweb_release -f /usr/share/doc/pbsweb-butf-${verpbsweb}/createdb.psql"
}

#
# see user and host in database
see_pbsweb_db() {
bepostgres_user
echo ""
echo "User in database:"
echo "-----------------"
${supostgres} "${sbin}/psql -d pbsweb_release -c 'select * from users; ' "
echo ""
echo "PBS server in database:"
echo "-----------------------"
${supostgres} "${sbin}/psql -d pbsweb_release -c 'select * from hosts; ' "
}

testzero() {
while [ -z ${value} ]; do
	read value
done
}

#
# add new user in database
addnewuser() {
bepostgres_user
echo ""
echo "Collect data to create new user:"
echo "--------------------------------"
echo "enter name:"
testzero ; name=${value} ; value=""
echo "Enter password:"
testzero ; password=${value} ; value=""
echo "Enter email:"
testzero ; email=${value} 

command="insert into \"users\" ( name, password, email, rights, deleted) values ('${name}', '${password}', '${email}', '0', '0'); "

echo ""
echo "|-----------------------|"
echo "| to add a new user do: |"
echo "|-----------------------|"
echo ""
echo "1) paste :"
echo "----------"
echo ${command}
echo "it should return INSERT a_number 1"
echo ""
echo "2) do a :"
echo "---------"
echo "\"\q\" to quit postgres"
echo ""
${supostgres} "psql -d pbsweb_release"
}

addnewuser2() {
test_name=`cat /etc/passwd | grep ${name}`
if [ -z ${test_name} ]; then
        echo "user doesnt exist !"
	echo "-------------------"
	echo "create with useradd "
	home_dir=""
fi
		
if [ -z "${home_dir}" ]; then
home_dir=`cat /etc/passwd | grep ${name} | awk -F":" '{print $6}'`
fi

echo ""
echo "create a \"pbsweb\" directory in your home user:"
echo "------------------------------------------------"
echo "su - ${name}"
echo "mkdir pbsweb"
echo ""
echo "copy postgres publickey to your home dir:"
echo "-----------------------------------------"
echo "cp /var/lib/pgsql/.ssh/id_dsa.pub /home_user_dir/.ssh/authorized_keys"
}

case $1 in 
	chkpackage)
	test_presence_package apache
	test_presence_package libpgsql2
	test_presence_package php-pgsql
	test_presence_package postgresql-server
	test_presence_package postgresql
	test_presence_package mod_ssl
	test_presence_package mod_php
	test_presence_package php
	echo "All needed package are installed"
	;;
	createpbs)
	createdbpbsweb
	;;
	showdb)
	see_pbsweb_db
	;;
	addnewuser)
	addnewuser
	addnewuser2
	;;
	*)
	echo "usage $0 {chkpackage|createpbs|showdb|addnewuser}"
	;;
esac