summaryrefslogtreecommitdiff
path: root/travis/docker/Dockerfile.travis
blob: 9ab13721da42b01c391d1f39ee64ad0433a5b5c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Some additional debugging tools that are useful
RUN python2.7 -m pip install ipdb && \
    python3 -m pip install ipdb

# Install debugging utilities
USER root
RUN apt-get -y install gdb gdbserver tmux gdb-multiarch

# Set up binfmt-misc mappings inside the VM
USER root
RUN mkdir /etc/qemu-binfmt && \
    ln -sf /usr/lib/arm-linux-gnueabihf /etc/qemu-binfmt/arm && \
    ln -sf /usr/lib/aarch64-linux-gnu   /etc/qemu-binfmt/aarch64 && \
    ln -sf /usr/lib/mips-linux-gnu      /etc/qemu-binfmt/mips && \
    ln -sf /usr/lib/mipsel-linux-gnu    /etc/qemu-binfmt/mipsel && \
    ln -sf /usr/lib/powerpc-linux-gnu   /etc/qemu-binfmt/powerpc && \
    ln -sf /usr/lib/powerpc-linux-gnu64 /etc/qemu-binfmt/powerpc64 && \
    ln -sf /usr/lib/sparc64-linux-gnu   /etc/qemu-binfmt/sparc64 && \
    ln -sf /usr/lib/riscv64-linux-gnu   /etc/qemu-binfmt/riscv64

# Create the Travis user
USER root
RUN useradd -m travis
RUN echo "travis ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/travis

# Set up SSH stuff so we can SSH into localhost
USER pwntools
RUN ssh-keygen -t rsa -f ~/.ssh/id_rsa -N '' && \
    cp ~/.ssh/id_rsa.pub /tmp && \
    echo \
"Host *\n\
    User travis\n\
    HostName 127.0.0.1\n\
"> ~/.ssh/config

# Set up authorized_keys so we can login as travis with no creds
USER travis
RUN mkdir -m 0700 ~/.ssh && \
    echo 'from="127.0.0.1"' $(cat /tmp/id_rsa.pub) > ~/.ssh/authorized_keys

# Add the doctest entrypoint to /usr/bin so we don't have to supply the full path
USER root
ADD doctest2 doctest3 /usr/bin

# Switch back to pwntools to actually run the image
USER pwntools
WORKDIR /home/pwntools

# Copy in the Doctest script
COPY doctest2 doctest3 tmux.sh /home/pwntools

# Do everything in UTF-8 mode!
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV SHELL=/bin/bash

# Set entry point to doctest by default
WORKDIR /home/pwntools