kern_securelevel revision 244675
197403Sobrien#!/bin/sh
297403Sobrien#-
3169691Skan# Copyright (c) 2012 Devin Teske
4169691Skan# All Rights Reserved.
5117397Skan#
697403Sobrien# Redistribution and use in source and binary forms, with or without
797403Sobrien# modification, are permitted provided that the following conditions
897403Sobrien# are met:
997403Sobrien# 1. Redistributions of source code must retain the above copyright
1097403Sobrien#    notice, this list of conditions and the following disclaimer.
1197403Sobrien# 2. Redistributions in binary form must reproduce the above copyright
1297403Sobrien#    notice, this list of conditions and the following disclaimer in the
1397403Sobrien#    documentation and/or other materials provided with the distribution.
1497403Sobrien#
1597403Sobrien# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1697403Sobrien# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, THE
1797403Sobrien# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1897403Sobrien# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1997403Sobrien# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20169691Skan# DAMAGES (INLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2197403Sobrien# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2297403Sobrien# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2397403Sobrien# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2497403Sobrien# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2597403Sobrien# SUCH DAMAGE.
2697403Sobrien#
2797403Sobrien# $FreeBSD: head/usr.sbin/bsdconfig/security/kern_securelevel 244675 2012-12-25 10:47:45Z dteske $
2897403Sobrien#
2997403Sobrien############################################################ INCLUDES
3097403Sobrien
3197403SobrienBSDCFG_SHARE="/usr/share/bsdconfig"
32169691Skan. $BSDCFG_SHARE/common.subr || exit 1
33169691Skanf_dprintf "%s: loading includes..." "$0"
34169691Skanf_include $BSDCFG_SHARE/dialog.subr
35169691Skanf_include $BSDCFG_SHARE/mustberoot.subr
36169691Skanf_include $BSDCFG_SHARE/sysrc.subr
37132720Skan
38132720SkanBSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="130.security"
3997403Sobrienf_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr
4097403Sobrien
4197403SobrienSECURELEVEL_HELPFILE=$BSDCFG_LIBE/$APP_DIR/include/securelevel.hlp
4297403Sobrien
43169691Skanipgm=$( f_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" )
44169691Skan[ $? -eq $SUCCESS -a "$ipgm" ] && pgm="$ipgm"
45169691Skan
4697403Sobrien############################################################ FUNCTIONS
47169691Skan
4897403Sobrien# dialog_menu_main
49169691Skan#
50169691Skan# Display the dialog(1)-based application main menu.
51169691Skan#
52169691Skandialog_menu_main()
53169691Skan{
54169691Skan	local menu_list size
55169691Skan	local hline="$hline_select_securelevel_to_operate_at"
56169691Skan	local prompt="$msg_securelevels_menu_text"
57169691Skan
58169691Skan	menu_list="
59169691Skan		'X $msg_exit'         '$msg_exit_this_menu'
60169691Skan		'$msg_disabled'       '$msg_disable_securelevels'
61169691Skan		'$msg_secure'         '$msg_secure_mode'
62169691Skan		'$msg_highly_secure'  '$msg_highly_secure_mode'
63169691Skan		'$msg_network_secure' '$msg_network_secure_mode'
64169691Skan	" # END-QUOTE
65169691Skan
66169691Skan	size=$( eval f_dialog_menu_size \
67169691Skan	        	\"\$DIALOG_TITLE\"     \
68169691Skan	        	\"\$DIALOG_BACKTITLE\" \
69169691Skan	                \"\$prompt\"           \
70169691Skan	        	\"\$hline\"            \
71169691Skan	        	$menu_list             )
72169691Skan
73169691Skan	local dialog_menu
74169691Skan	dialog_menu=$( eval $DIALOG \
75169691Skan		--clear --title \"\$DIALOG_TITLE\" \
76169691Skan		--backtitle \"\$DIALOG_BACKTITLE\" \
77169691Skan		--hline \"\$hline\"                \
78169691Skan		--ok-label \"\$msg_ok\"            \
79169691Skan		--cancel-label \"\$msg_cancel\"    \
80169691Skan		--help-button                      \
81169691Skan		${USE_XDIALOG:+--help \"\"}        \
82169691Skan		--menu \"\$prompt\" $size          \
83169691Skan		$menu_list                         \
84169691Skan		2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD
85169691Skan	)
86169691Skan	local retval=$?
87169691Skan	setvar DIALOG_MENU_$$ "$dialog_menu"
88169691Skan	return $retval
89169691Skan}
90169691Skan
91169691Skan############################################################ MAIN
92169691Skan
93169691Skan# Incorporate rc-file if it exists
94169691Skan[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc"
95169691Skan
96169691Skan#
97169691Skan# Process command-line arguments
98169691Skan#
99169691Skanwhile getopts hSX flag; do
100169691Skan	case "$flag" in
101169691Skan	h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm";;
102169691Skan	esac
103169691Skandone
104169691Skanshift $(( $OPTIND - 1 ))
105169691Skan
106169691Skan#
107169691Skan# Initialize
108169691Skan#
109169691Skanf_dialog_title "$msg_securelevels_menu_title"
110169691Skanf_dialog_backtitle "${ipgm:+bsdconfig }$pgm"
111169691Skanf_mustberoot_init
112169691Skan
113169691Skan#
114169691Skan# Launch application main menu
115169691Skan#
116169691Skanwhile :; do
117169691Skan	dialog_menu_main
118169691Skan	retval=$?
119169691Skan	mtag=$( f_dialog_menutag )
120169691Skan
121169691Skan	if [ $retval -eq 2 ]; then
122169691Skan		# The Help button was pressed
123169691Skan		f_show_help "$SECURELEVEL_HELPFILE"
124169691Skan		continue
125169691Skan	elif [ $retval -ne 0 ]; then
126169691Skan		f_die
127169691Skan	fi
128169691Skan
129169691Skan	break
130169691Skandone
131169691Skan
132169691Skancase "$mtag" in
133169691Skan"$msg_disabled")
134169691Skan	f_sysrc_set kern_securelevel_enable "NO"
135169691Skan	;;
136169691Skan"$msg_secure")
137169691Skan	f_sysrc_set kern_securelevel_enable "YES"
138169691Skan	f_sysrc_set kern_securelevel "1" 
139169691Skan	;;
140169691Skan"$msg_highly_secure")
141169691Skan	f_sysrc_set kern_securelevel_enable "YES"
142169691Skan	f_sysrc_set kern_securelevel "2" 
143169691Skan	;;
144169691Skan"$msg_network_secure")
145169691Skan	f_sysrc_set kern_securelevel_enable "YES"
146169691Skan	f_sysrc_set kern_securelevel "3" 
147169691Skan	;;
148169691Skanesac
149169691Skan
150169691Skanexit $SUCCESS
151169691Skan
152169691Skan################################################################################
153169691Skan# END
154169691Skan################################################################################
155169691Skan