#!/usr/bin/env bash
#
#   Use rofi to pick a reverse shell
#
#   Requirements:
#     rofi, xsel, rsg (git@github.com:mthbernardes/rsg.git)
#

SHELLS='/home/jonathan/GitRepos/rsg/shells.txt'

function notify() {
	if [ "$(command -v notify-send)" ]; then
		notify-send "$1" "$2"
	fi
}

function getIP(){
	ip route |
		grep -oe 'src [^ ]* ' | # Get in the form 'src ipaddress'
		awk '{print $2}' | # Get the ip
		sort -u | # Get the unique ones
		rofi -dmenu -i -p "IP Address"
}

function getPort() {
	rofi -dmenu -p "Port"
}

function getReverseShell() {
	ip="$1"
	port="$2"
	cat "$SHELLS" |
		sed "s/\[IPADDR\]/$ip/g" |
		sed "s/\[PORT\]/$port/g" |
		rofi -dmenu -i -p "Reverse Shell" |
		cut -d'|' -f2-
}

function display() {
	ip=$(getIP)
	port=$(getPort)
	reverseShell=$(getReverseShell $ip $port)


	#reverseShell=$( echo "$reverseShell" | sed "s/\[IPADDR\]/$ip/g" | sed "s/\[PORT\]/$port/g" )
	
	echo -n "$reverseShell" | /usr/bin/xclip -i -selection clipboard
	#emoji=$(cat "$UNICODE_FILE" | grep -v '^[[:space:]]*$')
	#line=$(echo "$emoji" | rofi -dmenu -i -p Unicode -kb-custom-1 Ctrl+c $@)
	#exit_code=$?

	#line=($line)

	#if [ $exit_code == 0 ]; then
	#	xdotool type --clearmodifiers "${line[0]}"
	#elif [ $exit_code == 10 ]; then
	#	echo -n "${line[0]}" | /usr/bin/xclip -i -selection clipboard

	#fi
}


# display displays :)
display