#!/bin/sh
### BEGIN INIT INFO
# Provides:          setup
# Required-Start:    $network
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Linux Exploit Dev Environment Setup
# Description:       Linux Exploit Dev Environment Setup
### END INIT INFO

case "$1" in
    start)
        # Setup networking
        ETH_IF="$(ls /sys/class/net | grep -E '^(eth|enp)')"
        ip link set "$ETH_IF" up
        if [ -x "$(command -v udhcpc)" ]; then
            udhcpc # Busybox DHCP
        elif [ -x "$(command -v dhclient)" ]; then
            dhclient # Ubuntu DHCP
        fi

        # If the user already exists this won't cause any problems
        adduser user --disabled-password 2>/dev/null

        mkdir -p /shared
        mount -t 9p -o trans=virtio,version=9p2000.L shared /shared

        mount -t debugfs none /sys/kernel/debug
        [ ! -e /d ] && ln -s /sys/kernel/debug /d

        mount -t tracefs nodev /sys/kernel/tracing
        [ ! -e /t ] && ln -s /sys/kernel/tracing /t

        # Only mount binder if the kernel supports it
        cat /proc/filesystems | grep binder > /dev/null
        if [ $? -eq 0 ]; then
            mkdir -p /dev/binderfs
            mount -t binder binder /dev/binderfs
            ln -s /dev/binderfs/binder /dev/binder
            echo 16383 > /sys/module/binder/parameters/debug_mask
        fi

        [ -x /shared/init.sh ] && /shared/init.sh
        ;;
    *) ;;
esac

exit 0
