radare2/sys/r2-docker.sh
2019-06-20 13:36:02 +08:00

80 lines
2.0 KiB
Bash
Executable File

#!/bin/sh
IFILE="$1"
P=`readlink $0`
[ -z "$P" ] && P="$0"
cd `dirname $P`/..
CWD="$PWD"
if [ "`echo $IFILE | cut -c 1`" != / ]; then
IFILE="$OLDPWD/$IFILE"
fi
showHelp() {
echo "Usage: r2-docker [-pudlsr] [file] [...]"
echo " -p pull latest radare2 docker image from docker hub"
echo " -u build the radare2 docker image"
echo " -d debug program (linux-x86-32/64)"
echo " -l list radare2 docker images"
echo " -s enter the shell"
echo " -r remove radare2 docker image"
exit 1
}
# Check if docker is present
[ -z "$(command -v docker)" ] && (
echo "You must install docker first. (see https://docs.docker.com/engine/installation/)"
) && exit 1
# Add capatibility to use ptrace with radare2
ALLOW_DEBUG="--cap-add=SYS_PTRACE"
# Remove by default all capabilities
DEFAULT_CAP="--cap-drop=ALL"
case "$1" in
-p)
docker pull radare/radare2:latest
# Tag image to preserve old reference
docker tag radare/radare2:latest radare2:latest
;;
-r)
# Delete all radare2 containers
docker rm -f $(docker ps -a | grep radare2 | awk '{print $1}') 2> /dev/null
# Delete tag to preserve old reference
docker rmi radare2:latest 2> /dev/null
docker rmi radare/radare2:latest 2> /dev/null
;;
-d)
R2FLAGS=-d $0 $2
;;
-u)
docker build -t radare/radare2:latest .
# Tag image to preserve old reference
docker tag radare/radare2:latest radare2:latest
;;
-l)
docker images | grep radare2
;;
shell|sh|-s)
docker run ${ALLOW_DEBUG} ${DEFAULT_CAP} -v $PWD/dockervol:/mnt -ti radare/radare2:latest || echo "run r2-docker -u to update the docker image"
;;
-h|'')
showHelp
;;
/*|*)
if [ -f "$1" ]; then
F=`basename $1`
D=`dirname $1`
# bypass home restriction
rm -rf dockervol
mkdir -p dockervol
cp -f "$1" "dockervol/$F"
docker run ${ALLOW_DEBUG} ${DEFAULT_CAP} -v $PWD/dockervol:/mnt -p 9090:9090 -ti radare/radare2:latest r2 ${R2FLAGS} /mnt/$F
rm -rf dockervol
else
docker run ${ALLOW_DEBUG} ${DEFAULT_CAP} -v $PWD/dockervol:/mnt -p 9090:9090 -ti radare/radare2:latest r2 ${R2FLAGS} $1
fi
;;
esac