diff --git a/src/PDFs/Animation Retargeting - Wicked Engine.pdf b/src/PDFs/Animation Retargeting - Wicked Engine.pdf new file mode 100644 index 0000000..36afc69 Binary files /dev/null and b/src/PDFs/Animation Retargeting - Wicked Engine.pdf differ diff --git a/src/PDFs/CodeMirror 6 - Design Doc.pdf b/src/PDFs/CodeMirror 6 - Design Doc.pdf new file mode 100644 index 0000000..9326c56 Binary files /dev/null and b/src/PDFs/CodeMirror 6 - Design Doc.pdf differ diff --git a/src/PDFs/LSP Client Plugin.pdf b/src/PDFs/LSP Client Plugin.pdf new file mode 100644 index 0000000..16fd870 Binary files /dev/null and b/src/PDFs/LSP Client Plugin.pdf differ diff --git a/src/PDFs/Reversing for Dummies - x86 Assembly and C Code (Beginner).pdf b/src/PDFs/Reversing for Dummies - x86 Assembly and C Code (Beginner).pdf new file mode 100644 index 0000000..5dcfa9d Binary files /dev/null and b/src/PDFs/Reversing for Dummies - x86 Assembly and C Code (Beginner).pdf differ diff --git a/src/PDFs/System Tray Protocol Specification.pdf b/src/PDFs/System Tray Protocol Specification.pdf new file mode 100644 index 0000000..772aebe Binary files /dev/null and b/src/PDFs/System Tray Protocol Specification.pdf differ diff --git a/src/Shell/chroot-manager.sh b/src/Shell/chroot-manager.sh new file mode 100755 index 0000000..36be5f7 --- /dev/null +++ b/src/Shell/chroot-manager.sh @@ -0,0 +1,226 @@ +#!/bin/bash + +# . CONFIG.sh + +# set -o xtrace ## To debug scripts +# set -o errexit ## To exit on error +# set -o errunset ## To exit if a variable is referenced but not set + + + +CHROOT_FOLDERS_PATH="/home/abaddon/Portable_Apps/chroot-dev-envs" + + + +fn_exists() { declare -F "$1" > /dev/null; } + +function prompt_chroot_env() { + target=`\ls -1 -d ./*/ | fzf --prompt "${1}"` + target=`sed 's|\.\/||g' <<< ${target}` + chroot_env="${CHROOT_FOLDERS_PATH}/${target}" + echo "${chroot_env}" +} + +function get_chroot_env() { + if [ ! -z "${1}" -a "${1}" != " " ]; then + chroot_env="${1}" + else + chroot_env=$(prompt_chroot_env "${2}") + fi + + echo "${chroot_env}" +} + +function install_software() { + chroot_env=$(get_chroot_env "${1}" "Install Software To Chroot Venv:") + + sudo chroot "${chroot_env}" /usr/bin/apt-get install -y sudo less nano wget curl procps file build-essential git +} + + + +function get_chroot_system_type() { + PS3="Enter system type: " + select system_type in "stable" "stretch" "sid"; do + case $system_type in + "stable") + echo "${system_type}" + break + ;; + "stretch") + echo "${system_type}" + break + ;; + "sid") + echo "${system_type}" + break + ;; + *) + ;; + esac + done +} + +function get_chroot_variant() { + PS3="Enter variant type: " + select variant in "minbase" "buildd" "fakechroot" "scratchbox"; do + case $variant in + "minbase") + echo "${variant}" + break + ;; + "buildd") + echo "${variant}" + break + ;; + "fakechroot") + echo "${variant}" + break + ;; + "scratchbox") + echo "${variant}" + break + ;; + *) + ;; + esac + done +} + +function make_chroot_folder() { + read -p 'Chroot Env: ' name + name=`sed -e s'|\\s|_|'g <<< "${name}"` + + if [[ -z "{$name}" ]]; then + echo "Need to give a proper Chroot Env value." + return + fi + + path="${CHROOT_FOLDERS_PATH}/${name}-chroot" + mkdir "${path}" + + echo "${path}" +} + +function make_chroot() { + clear + system_type=$(get_chroot_system_type) + clear + variant=$(get_chroot_variant) + clear + folder=$(make_chroot_folder) + clear + + sudo debootstrap --variant="${variant}" --arch amd64 "${system_type}" "${folder}" http://deb.debian.org/debian/ + + setup_chroot "${folder}" +} + +function create_chroot() { + make_chroot +} + + +function setup_chroot() { + chroot_env=$(get_chroot_env "${1}" "Target Chroot Venv Setup:") + + root_bashrc_file="/root/.bashrc" + dev_bashrc_file="/home/developer/.bashrc" + + sudo chroot "${chroot_env}" /bin/chmod 777 "/root" + sudo chroot "${chroot_env}" /bin/chmod 777 "${root_bashrc_file}" + + sudo echo $'\nexport HOME=/root' >> "${chroot_env}${root_bashrc_file}" + sudo echo "export LC_ALL=C" >> "${chroot_env}${root_bashrc_file}" + sudo echo "export DISPLAY=:10" >> "${chroot_env}${root_bashrc_file}" + sudo echo $'export HOMEBREW_NO_ANALYTICS=1\n' >> "${chroot_env}${root_bashrc_file}" + + sudo chroot "${chroot_env}" /bin/chmod 700 "${root_bashrc_file}" + sudo chroot "${chroot_env}" /bin/chmod 700 "/root" + + install_software "${chroot_env}" + + sudo chroot "${chroot_env}" /usr/sbin/useradd -m -p $(openssl passwd -1 "password") -s /bin/bash developer + sudo chroot "${chroot_env}" /usr/sbin/usermod -aG sudo developer + + sudo echo $'\nexport HOME=/home/developer' >> "${chroot_env}${dev_bashrc_file}" + sudo echo "export LC_ALL=C" >> "${chroot_env}${dev_bashrc_file}" + sudo echo "export DISPLAY=:10" >> "${chroot_env}${dev_bashrc_file}" + sudo echo $'export export HOMEBREW_NO_ANALYTICS=1\n' >> "${chroot_env}${dev_bashrc_file}" + + _bind_mounts "${chroot_env}" + + sudo chroot "${chroot_env}" /bin/su - developer -c "/bin/echo password | /bin/sudo -S /bin/bash -c $(curl -fsSL 'https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh')" + sudo chroot --userspec=developer:developer --groups=sudo,developer "${chroot_env}" /bin/bash -c "/home/linuxbrew/.linuxbrew/bin/brew shellenv | xargs -n 2 >> /home/developer/.bashrc" + + _unbind_mounts "${chroot_env}" +} + +function load_chroot() { + clear + cd "${CHROOT_FOLDERS_PATH}" + + chroot_env=$(get_chroot_env " " "Load Chroot Venv:") + + cd "${chroot_env}" + + sudo cp /etc/resolv.conf etc/resolv.conf + sudo cp /etc/hosts etc/hosts + + _bind_mounts "${chroot_env}" + + sudo chroot . bash + + _unbind_mounts "${chroot_env}" +} + +function _bind_mounts() { + _chroot_env=$(get_chroot_env "${1}" "Bind Chroot Venv Mounts:") + + cd "${_chroot_env}" + + sudo mount -t proc /proc proc/ + # sudo mount -t proc none proc/ + sudo mount -t sysfs /sys sys/ + sudo mount --bind /dev dev/ + # sudo mount -o bind /dev dev/ + sudo mount -t devpts /dev/pts dev/pts/ +} + +function _unbind_mounts() { + _chroot_env=$(get_chroot_env "${1}" "Unbind Chroot Venv Mounts:") + _chroot_env=${_chroot_env%/} # If ends with slash remove + + cd "${_chroot_env}" + + sudo umount "${_chroot_env}/dev/pts/" + sudo umount -lf "${_chroot_env}/dev/" + sudo umount -lf "${_chroot_env}/proc/" + sudo umount -lf "${_chroot_env}/sys/" + + cd .. +} + +function delete_chroot() { + cd "${CHROOT_FOLDERS_PATH}" + + chroot_env=$(get_chroot_env " " "Delete Chroot Venv:") + parentdir="$(dirname "${chroot_env}")" + + if [[ -d "${chroot_env}" && "${parentdir}" == "${CHROOT_FOLDERS_PATH}" ]]; then + clear + echo "Deleting: ${chroot_env}" + sudo rm -rf "${chroot_env}" + clear + echo -e "Deleted Chroot Env: ${target}\nPath: ${chroot_env}" + else + echo -e "Path: ${chroot_env}\nis not a child path of\nParent: ${CHROOT_FOLDERS_PATH}" + fi +} + +function remove_chroot() { + delete_chroot +} + + +f_call=$1; shift; $f_call "$@" \ No newline at end of file diff --git a/src/TXTs/Chroot Dev Env Setup.txt b/src/TXTs/Chroot Dev Env Setup.txt index ebbba42..84ec810 100644 --- a/src/TXTs/Chroot Dev Env Setup.txt +++ b/src/TXTs/Chroot Dev Env Setup.txt @@ -32,7 +32,7 @@ export LC_ALL=C export DISPLAY=:10 # Used to bind output UI to Xnest or Xephyr apt-get update -apt-get install sudo curl wget +apt-get install sudo su less nano wget curl ## Add developer user ##