xref: /aosp_15_r20/external/selinux/mcstrans/share/util/try-all (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker#!/bin/bash
2*2d543d20SAndroid Build Coastguard Worker
3*2d543d20SAndroid Build Coastguard Workershopt -s nullglob
4*2d543d20SAndroid Build Coastguard Worker
5*2d543d20SAndroid Build Coastguard Workerfail() {
6*2d543d20SAndroid Build Coastguard Worker  echo $1
7*2d543d20SAndroid Build Coastguard Worker  exit 1
8*2d543d20SAndroid Build Coastguard Worker}
9*2d543d20SAndroid Build Coastguard Worker
10*2d543d20SAndroid Build Coastguard Worker[ `id -u` = 0 ] || fail "must run as root"
11*2d543d20SAndroid Build Coastguard Worker
12*2d543d20SAndroid Build Coastguard Workerfor d in /usr/share/mcstrans/examples/*; do
13*2d543d20SAndroid Build Coastguard Worker	echo $d
14*2d543d20SAndroid Build Coastguard Worker
15*2d543d20SAndroid Build Coastguard Worker	rm -rf /etc/selinux/mls/setrans.conf.bak /etc/selinux/mls/secolor.conf.bak /etc/selinux/mls/setrans.d.bak
16*2d543d20SAndroid Build Coastguard Worker	[ $? -eq 0 ] || fail "preclean failed"
17*2d543d20SAndroid Build Coastguard Worker
18*2d543d20SAndroid Build Coastguard Worker	if [ -e $d/setrans.conf ]; then
19*2d543d20SAndroid Build Coastguard Worker		mv /etc/selinux/mls/setrans.conf /etc/selinux/mls/setrans.conf.bak
20*2d543d20SAndroid Build Coastguard Worker		[ $? -eq 0 ] || fail "setrans.conf backup failed"
21*2d543d20SAndroid Build Coastguard Worker	fi
22*2d543d20SAndroid Build Coastguard Worker
23*2d543d20SAndroid Build Coastguard Worker	if [ -e /etc/selinux/mls/secolor.conf ]; then
24*2d543d20SAndroid Build Coastguard Worker		mv /etc/selinux/mls/secolor.conf /etc/selinux/mls/secolor.conf.bak
25*2d543d20SAndroid Build Coastguard Worker		[ $? -eq 0 ] || fail "secolor.conf backup failed"
26*2d543d20SAndroid Build Coastguard Worker	fi
27*2d543d20SAndroid Build Coastguard Worker
28*2d543d20SAndroid Build Coastguard Worker	mv /etc/selinux/mls/setrans.d /etc/selinux/mls/setrans.d.bak
29*2d543d20SAndroid Build Coastguard Worker	[ $? -eq 0 ] || fail "setrans.d backup failed"
30*2d543d20SAndroid Build Coastguard Worker
31*2d543d20SAndroid Build Coastguard Worker	if [ -e $d/setrans.conf ]; then
32*2d543d20SAndroid Build Coastguard Worker		cp -L $d/setrans.conf /etc/selinux/mls/setrans.conf
33*2d543d20SAndroid Build Coastguard Worker	fi
34*2d543d20SAndroid Build Coastguard Worker	if [ -e $d/secolor.conf ]; then
35*2d543d20SAndroid Build Coastguard Worker		cp -L $d/secolor.conf /etc/selinux/mls
36*2d543d20SAndroid Build Coastguard Worker	fi
37*2d543d20SAndroid Build Coastguard Worker	if [ -d $d/setrans.d ]; then
38*2d543d20SAndroid Build Coastguard Worker		cp -Lr $d/setrans.d /etc/selinux/mls
39*2d543d20SAndroid Build Coastguard Worker	fi
40*2d543d20SAndroid Build Coastguard Worker
41*2d543d20SAndroid Build Coastguard Worker	runcon `cat /etc/selinux/mls/contexts/initrc_context` /etc/init.d/mcstrans restart
42*2d543d20SAndroid Build Coastguard Worker	for t in $d/*.test; do
43*2d543d20SAndroid Build Coastguard Worker		/usr/share/mcstrans/util/mlstrans-test $t
44*2d543d20SAndroid Build Coastguard Worker	done
45*2d543d20SAndroid Build Coastguard Worker	for c in $d/*.color; do
46*2d543d20SAndroid Build Coastguard Worker		/usr/share/mcstrans/util/mlscolor-test $c
47*2d543d20SAndroid Build Coastguard Worker	done
48*2d543d20SAndroid Build Coastguard Worker
49*2d543d20SAndroid Build Coastguard Worker	if [ -e /etc/selinux/mls/setrans.conf.bak ]; then
50*2d543d20SAndroid Build Coastguard Worker		mv /etc/selinux/mls/setrans.conf.bak /etc/selinux/mls/setrans.conf
51*2d543d20SAndroid Build Coastguard Worker	fi
52*2d543d20SAndroid Build Coastguard Worker	if [ -e /etc/selinux/mls/secolor.conf.bak ]; then
53*2d543d20SAndroid Build Coastguard Worker		mv /etc/selinux/mls/secolor.conf.bak /etc/selinux/mls/secolor.conf
54*2d543d20SAndroid Build Coastguard Worker	fi
55*2d543d20SAndroid Build Coastguard Worker	rm -rf /etc/selinux/mls/setrans.d
56*2d543d20SAndroid Build Coastguard Worker	mv /etc/selinux/mls/setrans.d.bak    /etc/selinux/mls/setrans.d
57*2d543d20SAndroid Build Coastguard Worker
58*2d543d20SAndroid Build Coastguard Worker	restorecon -rv /etc/selinux/mls/setrans.conf /etc/selinux/mls/setrans.d >/dev/null
59*2d543d20SAndroid Build Coastguard Worker	runcon `cat /etc/selinux/mls/contexts/initrc_context` /etc/init.d/mcstrans restart
60*2d543d20SAndroid Build Coastguard Workerdone
61*2d543d20SAndroid Build Coastguard Workerexit 0
62*2d543d20SAndroid Build Coastguard Worker
63*2d543d20SAndroid Build Coastguard Worker
64*2d543d20SAndroid Build Coastguard Worker
65