From 187326509aed1670de153f930e5450d5041583dc Mon Sep 17 00:00:00 2001 From: Lucas Noki Date: Sat, 25 Jul 2020 04:50:06 +0200 Subject: [PATCH 1/7] Add print helpers --- print_helpers.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 print_helpers.py diff --git a/print_helpers.py b/print_helpers.py new file mode 100644 index 0000000..de0c70c --- /dev/null +++ b/print_helpers.py @@ -0,0 +1,14 @@ +def print_fail(text): + print("\033[91m" + "[-] " + text + "\033[0m") + + +def print_gr(text): + print("\033[92m" + "[+] " + text + "\033[0m") + + +def print_warn(text): + print("\033[93m" + "[*] " + text + "\033[0m") + + +def print_blue(text): + print("\033[94m" + "[+] " + text + "\033[0m") From b1a34aabd4ca139b9fdcd2e32bb361fba0bcab04 Mon Sep 17 00:00:00 2001 From: Lucas Noki Date: Sat, 25 Jul 2020 04:50:18 +0200 Subject: [PATCH 2/7] Add default bashrc --- modules/bashrc/bashrc_default | 154 ++++++++++++++++++++++++++++++++++ 1 file changed, 154 insertions(+) create mode 100755 modules/bashrc/bashrc_default diff --git a/modules/bashrc/bashrc_default b/modules/bashrc/bashrc_default new file mode 100755 index 0000000..b962590 --- /dev/null +++ b/modules/bashrc/bashrc_default @@ -0,0 +1,154 @@ +# +# ~/.bashrc +# + +PATH="$PATH:$(ruby -e 'puts Gem.user_dir')/bin" + +[[ $- != *i* ]] && return + +colors() { + local fgc bgc vals seq0 + + printf "Color escapes are %s\n" '\e[${value};...;${value}m' + printf "Values 30..37 are \e[33mforeground colors\e[m\n" + printf "Values 40..47 are \e[43mbackground colors\e[m\n" + printf "Value 1 gives a \e[1mbold-faced look\e[m\n\n" + + # foreground colors + for fgc in {30..37}; do + # background colors + for bgc in {40..47}; do + fgc=${fgc#37} # white + bgc=${bgc#40} # black + + vals="${fgc:+$fgc;}${bgc}" + vals=${vals%%;} + + seq0="${vals:+\e[${vals}m}" + printf " %-9s" "${seq0:-(default)}" + printf " ${seq0}TEXT\e[m" + printf " \e[${vals:+${vals+$vals;}}1mBOLD\e[m" + done + echo; echo + done +} + +[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion + +# Change the window title of X terminals +case ${TERM} in + xterm*|rxvt*|Eterm*|aterm|kterm|gnome*|interix|konsole*) + PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\007"' + ;; + screen*) + PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/\~}\033\\"' + ;; +esac + +use_color=true + +# Set colorful PS1 only on colorful terminals. +# dircolors --print-database uses its own built-in database +# instead of using /etc/DIR_COLORS. Try to use the external file +# first to take advantage of user additions. Use internal bash +# globbing instead of external grep binary. +safe_term=${TERM//[^[:alnum:]]/?} # sanitize TERM +match_lhs="" +[[ -f ~/.dir_colors ]] && match_lhs="${match_lhs}$(<~/.dir_colors)" +[[ -f /etc/DIR_COLORS ]] && match_lhs="${match_lhs}$(/dev/null \ + && match_lhs=$(dircolors --print-database) +[[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] && use_color=true + +if ${use_color} ; then + # Enable colors for ls, etc. Prefer ~/.dir_colors #64489 + if type -P dircolors >/dev/null ; then + if [[ -f ~/.dir_colors ]] ; then + eval $(dircolors -b ~/.dir_colors) + elif [[ -f /etc/DIR_COLORS ]] ; then + eval $(dircolors -b /etc/DIR_COLORS) + fi + fi + + if [[ ${EUID} == 0 ]] ; then + PS1='\[\033[01;31m\][\h\[\033[01;36m\] \W\[\033[01;31m\]]\$\[\033[00m\] ' + else + PS1='\[\033[01;32m\][\u@\h\[\033[01;37m\] \W\[\033[01;32m\]]\$\[\033[00m\] ' + fi + + alias ls='ls --color=auto' + alias grep='grep --colour=auto' + alias egrep='egrep --colour=auto' + alias fgrep='fgrep --colour=auto' +else + if [[ ${EUID} == 0 ]] ; then + # show root@ when we don't have colors + PS1='\u@\h \W \$ ' + else + PS1='\u@\h \w \$ ' + fi +fi + +unset use_color safe_term match_lhs sh + +alias cp="cp -i" # confirm before overwriting something +alias df='df -h' # human-readable sizes +alias free='free -m' # show sizes in MB +alias np='nano -w PKGBUILD' +alias more=less + +xhost +local:root > /dev/null 2>&1 + +complete -cf sudo + +# Bash won't get SIGWINCH if another process is in the foreground. +# Enable checkwinsize so that bash will check the terminal size when +# it regains control. #65623 +# http://cnswww.cns.cwru.edu/~chet/bash/FAQ (E11) +shopt -s checkwinsize + +shopt -s expand_aliases + +# export QT_SELECT=4 + +# Enable history appending instead of overwriting. #139609 +shopt -s histappend + +# +# # ex - archive extractor +# # usage: ex +ex () +{ + if [ -f $1 ] ; then + case $1 in + *.tar.bz2) tar xjf $1 ;; + *.tar.gz) tar xzf $1 ;; + *.bz2) bunzip2 $1 ;; + *.rar) unrar x $1 ;; + *.gz) gunzip $1 ;; + *.tar) tar xf $1 ;; + *.tbz2) tar xjf $1 ;; + *.tgz) tar xzf $1 ;; + *.zip) unzip $1 ;; + *.Z) uncompress $1;; + *.7z) 7z x $1 ;; + *) echo "'$1' cannot be extracted via ex()" ;; + esac + else + echo "'$1' is not a valid file" + fi +} + +# better yaourt colors +export YAOURT_COLORS="nb=1:pkg=1:ver=1;32:lver=1;45:installed=1;42:grp=1;34:od=1;41;5:votes=1;44:dsc=0:other=1;35" + +alias ll='ls -l' +alias la='ls -la' +alias vi='vim' +alias tmux="TERM=screen-256color tmux" +alias ctc='tmux show-buffer | xclip -selection clipboard' +alias cat='batcat' +alias gss='git status -s' +alias gaa='git add .' +alias gcm='git commit -m' From 1d4e6a3f8d09c46a088b4942f2fe2e3f45150eaa Mon Sep 17 00:00:00 2001 From: Lucas Noki Date: Sat, 25 Jul 2020 04:50:30 +0200 Subject: [PATCH 3/7] Implement bashrc module code --- main.py | 4 +++- modules/bashrc/BashrcModule.py | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 modules/bashrc/BashrcModule.py diff --git a/main.py b/main.py index 916b400..120e94a 100644 --- a/main.py +++ b/main.py @@ -8,6 +8,7 @@ from modules.vim.VimModule import VimModule from modules.teamspeak.Teamspeak import Teamspeak from modules.hacker.Hacker import Hacker import modules.fail2ban.Fail2BanModule as fail2ban +from modules.bashrc.BashrcModule import BashrcModule modules = { "helloworld": HelloWorld().run, @@ -17,7 +18,8 @@ modules = { "vim": VimModule().run, "teamspeak": Teamspeak, "hacker": Hacker, - "fail2ban": fail2ban.run() + "fail2ban": fail2ban.run(), + "bashrc": BashrcModule().run } fire.Fire(modules) diff --git a/modules/bashrc/BashrcModule.py b/modules/bashrc/BashrcModule.py new file mode 100644 index 0000000..9c3a30e --- /dev/null +++ b/modules/bashrc/BashrcModule.py @@ -0,0 +1,26 @@ +from PyInquirer import prompt +import os +from shutil import copyfile +from print_helpers import print_gr, print_warn, print_fail + + +class BashrcModule: + + def run(self): + bashrc_path = os.path.join(os.path.expanduser('~'), ".bashrc") + bashrc_exists = os.path.exists(bashrc_path) + + if bashrc_exists: + print_gr(f"Found .bashrc in {bashrc_path}") + ask_to_keep = { + 'type': 'confirm', + 'message': 'Do you want to overwrite the existing .bashrc?', + 'name': 'overwrite', + 'default': False, + } + if not prompt(ask_to_keep)['overwrite']: + print_fail("Stopping") + return + + copyfile("./modules/bashrc/bashrc_default", bashrc_path) + print_gr("Overwritten") if bashrc_exists else print_gr("Created") From 6ff90f912aa423c72aae3224febd2441594f199d Mon Sep 17 00:00:00 2001 From: Lucas Noki Date: Sat, 25 Jul 2020 05:18:34 +0200 Subject: [PATCH 4/7] Comment out batcat alias --- modules/bashrc/bashrc_default | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/bashrc/bashrc_default b/modules/bashrc/bashrc_default index b962590..05bd9bb 100755 --- a/modules/bashrc/bashrc_default +++ b/modules/bashrc/bashrc_default @@ -148,7 +148,7 @@ alias la='ls -la' alias vi='vim' alias tmux="TERM=screen-256color tmux" alias ctc='tmux show-buffer | xclip -selection clipboard' -alias cat='batcat' +# alias cat='batcat' alias gss='git status -s' alias gaa='git add .' alias gcm='git commit -m' From 3eb9fcd1b406f4d1da99268d2a08cf96f561502a Mon Sep 17 00:00:00 2001 From: "lucas.noki" Date: Sat, 25 Jul 2020 12:35:33 +0200 Subject: [PATCH 5/7] Remove unnecessary import statement Make the output message a bit nicer --- modules/bashrc/BashrcModule.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/bashrc/BashrcModule.py b/modules/bashrc/BashrcModule.py index 9c3a30e..7f77174 100644 --- a/modules/bashrc/BashrcModule.py +++ b/modules/bashrc/BashrcModule.py @@ -1,7 +1,7 @@ from PyInquirer import prompt import os from shutil import copyfile -from print_helpers import print_gr, print_warn, print_fail +from print_helpers import print_gr, print_fail class BashrcModule: @@ -23,4 +23,4 @@ class BashrcModule: return copyfile("./modules/bashrc/bashrc_default", bashrc_path) - print_gr("Overwritten") if bashrc_exists else print_gr("Created") + print_gr("Successfully overwritten .bashrc!") if bashrc_exists else print_gr(f"Successfully created .bashrc!") From ce8fa5be5312d0ca2fcdad621d8889a4f6e01e4a Mon Sep 17 00:00:00 2001 From: Lucas Noki Date: Sat, 1 Aug 2020 20:24:47 +0200 Subject: [PATCH 6/7] Remove parenthesis to prevent automatic execution --- main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.py b/main.py index 120e94a..aedb96f 100644 --- a/main.py +++ b/main.py @@ -18,7 +18,7 @@ modules = { "vim": VimModule().run, "teamspeak": Teamspeak, "hacker": Hacker, - "fail2ban": fail2ban.run(), + "fail2ban": fail2ban.run, "bashrc": BashrcModule().run } From ad0f5dac05092e25efce5a2b4174e4d4ab414b1b Mon Sep 17 00:00:00 2001 From: Marcel Schwarz Date: Sat, 1 Aug 2020 22:58:12 +0200 Subject: [PATCH 7/7] Add some more configs to the bashrc --- modules/bashrc/bashrc_default | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/modules/bashrc/bashrc_default b/modules/bashrc/bashrc_default index 05bd9bb..5b38d4c 100755 --- a/modules/bashrc/bashrc_default +++ b/modules/bashrc/bashrc_default @@ -102,6 +102,23 @@ xhost +local:root > /dev/null 2>&1 complete -cf sudo +# if the command-not-found package is installed, use it +if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then + function command_not_found_handle { + # check because c-n-f could've been removed in the meantime + if [ -x /usr/lib/command-not-found ]; then + /usr/lib/command-not-found -- "$1" + return $? + elif [ -x /usr/share/command-not-found/command-not-found ]; then + /usr/share/command-not-found/command-not-found -- "$1" + return $? + else + printf "%s: command not found\n" "$1" >&2 + return 127 + fi + } +fi + # Bash won't get SIGWINCH if another process is in the foreground. # Enable checkwinsize so that bash will check the terminal size when # it regains control. #65623 @@ -143,8 +160,16 @@ ex () # better yaourt colors export YAOURT_COLORS="nb=1:pkg=1:ver=1;32:lver=1;45:installed=1;42:grp=1;34:od=1;41;5:votes=1;44:dsc=0:other=1;35" -alias ll='ls -l' +# Colorize ls command +LS_COLORS='di=36;40:ln=1;36;40:so=0;40:pi=0;40:ex=1;32;40:bd=0;40:cd=0;40:su=0;40:sg=0;40:tw=1;36;40:ow=1;36;40:' +export LS_COLORS +export LS_OPTIONS='--color=auto' +eval "`dircolors`" +alias ls='ls $LS_OPTIONS' +alias ll='ls $LS_OPTIONS -l' alias la='ls -la' +alias l='ls $LS_OPTIONS -lA' + alias vi='vim' alias tmux="TERM=screen-256color tmux" alias ctc='tmux show-buffer | xclip -selection clipboard'