#! /bin/bash

PATH=/usr/bin:/bin/usr/sbin:/sbin

DB_PATH="/opt/dbspace/.dpm.db"
DB_UID="security_fw"
DB_GID="security_fw"
DB_LABEL="System"

usage()
{
	/bin/cat << EOF
usage:
	$1 [-a|--admin=<pkgid>]

Options:
	-a,--admin	Declare device policy admin package
	-u,--user	Admin package owner id(must be uid)
	-h,--help	print this help
EOF
	return 0
}

options=$(getopt -o ha:u: -l help,admin:,user: -- "$@")
if [ $? -ne 0 ]; then
	usage $(basename $0)
	exit 1
fi
eval set -- "$options"

while true
do
    case "$1" in
        -h|--help)      usage $0 && exit 0;;
        -a|--admin)     admin=$2; shift 2;;
        -u|--user)      uid=$2; shift 2;;
        --)             shift 1; break ;;
        *)              break ;;
    esac
done

if [ -z "$admin" ]; then
	echo "'admin' parameter is required"
fi

if [ -z "$uid" ]; then
	echo "'user' parameter is required"
fi

need_chsmack=true
if [ -f ${DB_PATH} ]; then
	need_chsmack=false
fi

# Execution
sqlite3 ${DB_PATH} \
"CREATE TABLE IF NOT EXISTS admin (       \
    id INTEGER PRIMARY KEY AUTOINCREMENT, \
    pkg TEXT NOT NULL,                    \
    uid INTEGER,                          \
    key TEXT,                             \
    removable INTEGER                     \
);                                        \
INSERT INTO admin (pkg, uid, key, removable) VALUES ('$admin', $uid, '', 0);"

if [ "$need_chsmack" == "true" ]; then
	chsmack -a ${DB_LABEL} ${DB_PATH}*
	chown ${DB_UID}:${DB_GID} ${DB_PATH}*
fi
