diff options
author | Daniel Kahn Gillmor <dkg@fifthhorseman.net> | 2008-09-12 04:50:30 -0400 |
---|---|---|
committer | Daniel Kahn Gillmor <dkg@fifthhorseman.net> | 2008-09-12 04:50:30 -0400 |
commit | e18b89b0214c423d3a3c118190aab6549e461d7f (patch) | |
tree | 487bab3f5671eafee3fd573864c7f42d96a2ca45 /packaging/freebsd | |
parent | 4e5ac7b2fe553ce2f24dacb5d812fa8542bd89ca (diff) |
initial attempts at user add scripts for FreeBSD packaging.
Diffstat (limited to 'packaging/freebsd')
-rwxr-xr-x | packaging/freebsd/pkg-deinstall | 18 | ||||
-rwxr-xr-x | packaging/freebsd/pkg-install | 123 |
2 files changed, 141 insertions, 0 deletions
diff --git a/packaging/freebsd/pkg-deinstall b/packaging/freebsd/pkg-deinstall new file mode 100755 index 0000000..84217d5 --- /dev/null +++ b/packaging/freebsd/pkg-deinstall @@ -0,0 +1,18 @@ +#!/bin/sh + +# a package removal script for monkeysphere (borrowing from +# monkeysphere's debian/monkeysphere.postrm) + +# Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net> +# Copyright 2008 + +# FIXME: is /var/lib/monkeysphere the right place for this stuff on +# FreeBSD? +VARLIB="/var/lib/monkeysphere" + + +# FIXME: This needs to be filled in! Under what circumstances do we +# want to actually purge all of /var/lib/monkeysphere? + +# (note: FreeBSD does not seem to want the package-specific user to be +# purged at package removal) diff --git a/packaging/freebsd/pkg-install b/packaging/freebsd/pkg-install new file mode 100755 index 0000000..c2af960 --- /dev/null +++ b/packaging/freebsd/pkg-install @@ -0,0 +1,123 @@ +#!/bin/sh + +# an installation script for monkeysphere (borrowing liberally from +# Wnn6's port and from monkeysphere's debian/monkeysphere.postinst) + +# Author: Daniel Kahn Gillmor <dkg@fifthhorseman.net> +# Copyright 2008 + +# FIXME: is /var/lib/monkeysphere the right place for this stuff on +# FreeBSD? +VARLIB="/var/lib/monkeysphere" + +check_pw() +{ + if which -s pw; then + : + else + cat <<EOF + +This system looks like a pre-2.2 version of FreeBSD. We see that it +is missing the "pw" utility. We need this utility. Please get and +install it, and try again. You can get the source from: + + ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/pw.tar.gz + +EOF + exit 1 + fi +} + +ask() { + local question default answer + + question=$1 + default=$2 + if [ -z "${PACKAGE_BUILDING}" ]; then + read -p "${question} (y/n) [${default}]? " answer + fi + if [ x${answer} = x ]; then + answer=${default} + fi + echo ${answer} +} + +yesno() { + local dflt question answer + + question=$1 + dflt=$2 + while :; do + answer=$(ask "${question}" "${dflt}") + case "${answer}" in + [Yy]*) return 0;; + [Nn]*) return 1;; + esac + echo "Please answer yes or no." + done +} + +failure() { + local retval badgroups badusers + retval=$1 + badgroups=`getent group monkeysphere 641` + badusers=`getent passwd monkeysphere 641` + + if [ X"$badgroups" != X ]; then + badgroups=" +Conflicting group(s): + +$badgroups" + fi + + if [ X"$badusers" != X ]; then + badusers="Conflicting user(s): + +$badusers" + fi + + cat <<EOF + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +This port or package assumes that the ID number of 'monkeysphere' will +be 641. But this system has: +$badgroups +$badusers + +Please correct these conflict(s) and try again. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +EOF + exit $retval +} + +case $2 in +POST-INSTALL) + + # make sure that the correct user and group are present: + id_monkeysphere=`id -u monkeysphere 2> /dev/null` + gid_monkeysphere=`getent group monkeysphere | cut -f3 -d: 2> /dev/null` + if [ X"$id_monkeysphere" = X641 ] && [ X"$gid_monkeysphere" = X641 ];then + exit 0 + else + # add an account 'monkeysphere' to this system + echo "" + echo "You need an account 'monkeysphere' whose ID number is 641, with group 'monkeysphere' (GID 641)" + if yesno "Would you like to create it automatically?" y; then + # We need a command 'pw(8)' + check_pw + pw groupadd monkeysphere -g 641 || failure $? + pw useradd monkeysphere -u 641 -g 641 -h - -d "$VARLIB" \ + -s /bin/sh -c 'monkeysphere authentication user,,,' || failure $? + # FIXME: should we really be using a real shell? Convention + # (/usr/ports/UIDs) seems to indicate /nonexistent is + # preferred + else + echo "Please create it, and try again." + exit 1 + fi + fi + # FIXME: we should create $VARLIB and chown the relevant subdirs + # (see debian/monkeysphere.postinst) + + ;; +esac |