CasperSecurity

Current Path : /var/lib/dpkg/info/
Upload File :
Current File : /var/lib/dpkg/info/keyboard-configuration.postinst

#!/bin/sh

set -e

# Source debconf library.
. /usr/share/debconf/confmodule

# The same as /usr/bin/which - in order to make "which" available before
# /usr is mounted
which () {
    local IFS
    IFS=:
    for i in $PATH; do
	if [ -x "$i/$1" ]; then
	    echo "$i/$1"
	    return 0
	fi
    done
    return 1
}

# In d-i the config script is not executed automatically
if [ -f /usr/share/console-setup/keyboard-configuration.config ]; then
    /usr/share/console-setup/keyboard-configuration.config || exit $?
fi



keyboard_present () {
    local kern kbdpattern class subclass protocol

    kern=`uname -r`
    case "$kern" in
	2.0*|2.1*|2.2*|2.3*|2.4*|2.5*)
	    # can't check keyboard presence
	    return 0; 
	    ;;
    esac

    [ -d /sys/bus/usb/devices ] || return 0
    for d in /sys/bus/usb/devices/*:*; do
	[ -d "$d" ] || continue
	class=$(cat "$d/bInterfaceClass") # 03 = Human Interface Device
	subclass=$(cat "$d/bInterfaceSubClass") # 01 = Boot Interface Subclass
	protocol=$(cat "$d/bInterfaceProtocol") # 01 = Keyboard
	case "$class:$subclass:$protocol" in
	    03:01:01)
		return 0
		;;
	esac
    done

    # For Bluetooth keyboards one has to check the class of the device
    # -- it has to be 0x000540 or 0x002540.  I don't how to make the
    # required test, so instead we test (unreliably) for a string
    # bluetooth.*keyboard in /proc/bus/input/devices.

    [ -f /proc/bus/input/devices ] || return 0
    kbdpattern="AT Set \|AT Translated Set\|AT Raw Set"
    kbdpattern="$kbdpattern\|Atari Keyboard"
    kbdpattern="$kbdpattern\|Amiga Keyboard"
    kbdpattern="$kbdpattern\|HIL keyboard"
    kbdpattern="$kbdpattern\|ADB keyboard"
    kbdpattern="$kbdpattern\|Sun Type"
    kbdpattern="$kbdpattern\|bluetooth.*keyboard"
    if grep -i "$kbdpattern" /proc/bus/input/devices >/dev/null; then
	return 0
    fi

    return 1
}

# keyboard_present () {
#     if there is a keyboard; then
# 	return 0
#     else
# 	return 1
#     fi
# }

CONFIGFILE=/etc/default/keyboard

if [ "$1" = "configure" -a ! -L "$CONFIGFILE" ]; then
    
    db_get keyboard-configuration/modelcode
    model="$RET"

    db_get keyboard-configuration/layoutcode
    layout="$RET"

    db_get keyboard-configuration/variantcode
    variant="$RET"

    db_get keyboard-configuration/optionscode
    options="$RET"

    if [ ! -e $CONFIGFILE ]; then
	cat /usr/share/console-setup/keyboard \
	    2>/dev/null >$CONFIGFILE || true
    fi

    # Ensure we do not mess up the config file's ownership and permissions.
    cp -a -f $CONFIGFILE $CONFIGFILE.tmp

    # If the admin deleted or commented some variables but then set
    # them via debconf, (re-)add them to the conffile.
    for var in XKBMODEL XKBLAYOUT XKBVARIANT XKBOPTIONS BACKSPACE; do
        if ! grep "^ *${var}=" $CONFIGFILE >/dev/null; then
	    echo "${var}=" >>$CONFIGFILE
	fi
    done    
    
    sed \
	-e "s|^ *XKBMODEL=.*|XKBMODEL=\"$model\"|" \
	-e "s|^ *XKBLAYOUT=.*|XKBLAYOUT=\"$layout\"|" \
	-e "s|^ *XKBVARIANT=.*|XKBVARIANT=\"$variant\"|" \
	-e "s|^ *XKBOPTIONS=.*|XKBOPTIONS=\"$options\"|" \
	-e "s|^ *BACKSPACE=.*|BACKSPACE=\"${BACKSPACE:-guess}\"|" \
	<$CONFIGFILE >$CONFIGFILE.tmp
    
    mv -f $CONFIGFILE.tmp $CONFIGFILE

    db_set keyboard-configuration/store_defaults_in_debconf_db true
fi

if [ -d /lib/debian-installer ];
then
    if [ "$DISPLAY" ] && which setxkbmap >/dev/null; then
	setxkbmap -option '' -model "$model" "$layout" "$variant" "$options" || true
	# setting the font corrupts X
	# setting up the keyboard breaks wayland
	if type setupcon >/dev/null 2>&1; then
	    # We redirect the output so that postinst does not block when ScrollLock is on
	    setupcon --save-only >/dev/null 2>/dev/null || true
	    cat >&2 <<EOF
Your console font configuration will be updated the next time your system
boots. If you want to update it now, run 'setupcon' from a virtual console.
EOF
	fi
    else
	case "`uname`" in
	    GNU)
		[ ! -f /var/run/hurd-console.pid ] || kill `cat /var/run/hurd-console.pid`
		;;
	    *)
		if type setupcon >/dev/null 2>&1; then
		    setupcon --force --save >/dev/null 2>/dev/null || true
		fi
		;;
	esac
    fi
else
    # Setting the keymap breaks plymouth in raw mode, and setting the
    # font will currently also break if on vgacon.
    # Setting the font also corrupts X and postinst may be running with
    # stripped environment thus we can't even detect X easily.
    setupcon --save-only >/dev/null 2>/dev/null || true
    cat >&2 <<EOF
Your console font configuration will be updated the next time your system
boots. If you want to update it now, run 'setupcon' from a virtual console.
EOF
fi

if ! [ -d /lib/debian-installer.d ]; then
    dpkg-maintscript-helper rm_conffile \
                            /etc/init.d/keyboard-setup 1.138~ -- "$@"
    dpkg-maintscript-helper rm_conffile \
                            /etc/init.d/console-setup 1.138~ -- "$@"
fi



if type update-initramfs >/dev/null 2>&1; then
    update-initramfs -u
fi

exit 0
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY