File: x2gobroker-ssh.postinst

package info (click to toggle)
x2gobroker 0.0.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,520 kB
  • sloc: python: 7,176; sh: 1,409; makefile: 389; perl: 267; ansic: 38
file content (130 lines) | stat: -rwxr-xr-x 4,584 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#!/bin/sh
# postinst script for x2gobroker-daemon
#
# see: dh_installdeb(1)

set -e

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <postinst> `abort-remove'
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package

. /usr/share/debconf/confmodule

case "$1" in
	configure)
		# setup user/group x2gobroker
		if ! getent group x2gobroker 1>/dev/null; then
			echo "Creating x2gobroker group." 1>&2
			addgroup --system x2gobroker
		else
			echo "Group x2gobroker already exists." 1>&2
		fi
		if ! getent passwd x2gobroker 1>/dev/null; then
			echo "Creating x2gobroker user." 1>&2
			adduser --system \
			    --disabled-password --disabled-login \
			    --shell /bin/bash --group --home /var/lib/x2gobroker x2gobroker
		else
			echo "User x2gobroker already exists." 1>&2

			# make sure the home directory exists belongs to x2gobroker:x2gobroker
			mkdir -p /var/lib/x2gobroker
			chown x2gobroker:x2gobroker /var/lib/x2gobroker -f

			# make sure all settings are appropriate
			if getent passwd x2gobroker | grep /dev/null 1>/dev/null 2>/dev/null; then
				usermod --home /var/lib/x2gobroker x2gobroker
			fi
			if getent passwd x2gobroker | grep /bin/false 1>/dev/null 2>/dev/null; then
				usermod --shell /bin/bash x2gobroker
			fi
		fi

		db_get x2gobroker-ssh/create-group && create_group=$RET
		db_get x2gobroker-ssh/use-existing-group && use_existing_group=$RET
		db_get x2gobroker-ssh/last-group-x2gobroker-users && last_group=$(echo $RET | cut -d" " -f1)
		db_get x2gobroker-ssh/group-x2gobroker-users && group=$(echo $RET | cut -d" " -f1)
		db_get x2gobroker-ssh/del-last-group-x2gobroker-users && del_last_group="$RET"
		db_get x2gobroker-ssh/manual-setup-required && manual_setup="$RET"

		if [ "$manual_setup" = "false" ]; then

			if [ "$create_group" = "true" ] && [ "x$group" != "x" ]; then
				if echo "$group" | egrep '^[[:digit:]]{1,5}$' 1>/dev/null; then
					echo "Specified group is a gidNumber, not creating any group." 1>&2
				elif ! getent group $group >/dev/null; then
					echo "Creating $group group." 1>&2
					addgroup $group

					# invalidate group cache before proceeding...
					if which nscd 1>/dev/null; then
						nscd -i group
					fi

				else
					echo "Group $group already exists." 1>&2
				fi
			fi

			# the x2gobroker-ssh wrapper needs special permissions for its executable
			if [ "$group" != "$last_group" ] || [ "$create_group" = "true" ]; then

				if dpkg-statoverride --list /usr/bin/x2gobroker-ssh 1>/dev/null; then
					dpkg-statoverride --remove /usr/bin/x2gobroker-ssh
				fi
				chown root:root /usr/bin/x2gobroker-ssh
				chmod 0755 /usr/bin/x2gobroker-ssh
				if getent group $group 1>/dev/null; then
					dpkg-statoverride --add --update x2gobroker $group 4550 /usr/bin/x2gobroker-ssh
				else
					echo "Group $group does not exist. Resetting file permissions of /usr/bin/x2gobroker-ssh to 0755:root:root." 1>&2
				fi

				if [ "$del_last_group" = "true" ]; then
					# try to remove the formerly used group for this role, on failure, ignore it
					if getent group $last_group 1>/dev/null && [ $(getent group $last_group | cut -d ":" -f 3) -ge 500 ] && [ $(getent group $last_group | cut -d ":" -f 1) != "nogroup" ]; then
						delgroup "$last_group" && echo "Removing Posix group $last_group as requested."
						db_reset x2gobroker-ssh/del-last-group-x2gobroker-users
					fi
				fi

			fi

		else
			if dpkg-statoverride --list /usr/bin/x2gobroker-ssh 1>/dev/null; then
				dpkg-statoverride --remove /usr/bin/x2gobroker-ssh
			fi
			chown root:root /usr/bin/x2gobroker-ssh
			chmod 0755 /usr/bin/x2gobroker-ssh
		fi

		mkdir -p /var/log/x2gobroker && chown x2gobroker:adm /var/log/x2gobroker && chmod 2750 /var/log/x2gobroker
		touch /var/log/x2gobroker/broker.log && chown x2gobroker:adm /var/log/x2gobroker/broker.log
		touch /var/log/x2gobroker/error.log && chown x2gobroker:adm /var/log/x2gobroker/error.log

		;;

	abort-upgrade|abort-remove|abort-deconfigure)
		;;

	*)
		echo "postinst called with unknown argument \`$1'" 1>&2
		exit 1
		;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#

exit 0