diff --git a/.cargo/config.toml b/.cargo/config.toml index c1ca86b..99afc80 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,2 +1,2 @@ -[build] -target = "x86_64-unknown-linux-musl" \ No newline at end of file +#[build] +#target = "x86_64-unknown-linux-musl" \ No newline at end of file diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index 23fa621..0000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,29 +0,0 @@ -# Copyright (C) 2023 Andrew Rioux -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . - -FROM rust:1-buster - -ENV DEBIAN_FRONTEND=noninteractive - -#apk add musl-dev openssl-dev docker-compose lldb && \ -RUN apt update && \ - apt install -y git cmake make automake autoconf libtool valgrind flex \ - linux-headers-5.10 bison docker-compose lldb libssl-dev libnl-3-dev sudo && \ - rustup component add clippy && \ - rustup target add x86_64-unknown-linux-musl && \ - useradd vscode && \ - mkdir -p /home/vscode && \ - chown -R vscode:vscode /home/vscode && \ - echo "vscode ALL=(ALL: ALL) NOPASSWD: ALL" >> /etc/sudoers \ No newline at end of file diff --git a/.devcontainer/Dockerfile.alpine b/.devcontainer/Dockerfile.alpine index 559d7dc..cd839f3 100644 --- a/.devcontainer/Dockerfile.alpine +++ b/.devcontainer/Dockerfile.alpine @@ -15,8 +15,5 @@ FROM rust:1-alpine -RUN apk add bash docker git cmake make automake musl-dev autoconf libtool valgrind \ - flex bison linux-headers openssl-dev apache2-utils docker-compose lldb && \ - rustup component add clippy && \ - mkdir /etc/docker && \ - echo '{ "storage-driver": "vfs" }' > /etc/docker/daemon.json \ No newline at end of file +RUN apk add cmake make automake musl-dev autoconf libtool \ + flex bison linux-headers openssl-dev lldb build-base \ No newline at end of file diff --git a/.devcontainer/Dockerfile.buster b/.devcontainer/Dockerfile.buster new file mode 100644 index 0000000..d2b5ac2 --- /dev/null +++ b/.devcontainer/Dockerfile.buster @@ -0,0 +1,57 @@ +# Copyright (C) 2023 Andrew Rioux +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +FROM ubuntu:22.04 + +ARG USERNAME=vscode + +ENV DEBIAN_FRONTEND=noninteractive \ + RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH:/home/vscode/.cargo/bin + +RUN apt-get update && \ + apt install -y git libtool valgrind docker-compose lldb sudo zsh wget && \ + apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* && \ + adduser ${USERNAME} && \ + echo "$USERNAME ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers && \ + chsh -s /usr/bin/zsh ${USERNAME} && \ + wget https://static.rust-lang.org/rustup/archive/1.25.2/x86_64-unknown-linux-gnu/rustup-init && \ + echo "bb31eaf643926b2ee9f4d8d6fc0e2835e03c0a60f34d324048aa194f0b29a71c *rustup-init" | sha256sum -c - && \ + chmod +x rustup-init && \ + ./rustup-init -y --no-modify-path --profile minimal \ + --default-toolchain nightly --default-host x86_64-unknown-linux-gnu \ + --component rustfmt --component rust-src --component clippy && \ + rm rustup-init && \ + chmod -R a+w $RUSTUP_HOME $CARGO_HOME + +USER vscode + +RUN cargo install cargo-make + +#FROM rust:1-buster +# +#ENV DEBIAN_FRONTEND=noninteractive +# +#apk add musl-dev openssl-dev docker-compose lldb && \ +#RUN apt update && \ +# apt install -y git cmake make automake autoconf libtool valgrind flex musl-tools \ +# linux-headers-5.10 bison docker-compose lldb libssl-dev libnl-3-dev sudo && \ +# rustup component add clippy && \ +# rustup target add x86_64-unknown-linux-musl && \ +# useradd vscode && \ +# mkdir -p /home/vscode && \ +# chown -R vscode:vscode /home/vscode && \ +# echo "vscode ALL=(ALL: ALL) NOPASSWD: ALL" >> /etc/sudoers \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 2cecd8b..da7865c 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,7 +1,7 @@ { "name": "sparse", "build": { - "dockerfile": "Dockerfile" + "dockerfile": "Dockerfile.buster" }, "customizations": { "vscode": { @@ -28,11 +28,9 @@ "--security-opt", "seccomp=unconfined" ], - "postStartCommand": "git submodule update --init", + "postStartCommand": "git submodule update --init && docker pull rust:1-alpine", "remoteUser": "vscode", "features": { - "ghcr.io/devcontainers/features/docker-in-docker": { - "dockerDashComposeVersion": "v2" - } + "ghcr.io/devcontainers/features/docker-in-docker": {} } } \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 33e9529..5419c5c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -102,5 +102,12 @@ "args": [], "cwd": "${workspaceFolder}" }, + { + "name": "test launch", + "type": "lldb", + "request": "launch", + "program": "${workspaceFolder}/ex-bind-shell-backdoor", + "args": [] + } ] } \ No newline at end of file diff --git a/Makefile.toml b/Makefile.toml new file mode 100644 index 0000000..f4df978 --- /dev/null +++ b/Makefile.toml @@ -0,0 +1,13 @@ +[env] +CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true + +[config] +skip_core_tasks = true + +[tasks.default] +dependencies = ["build"] + +[tasks.build] +workspace = false +command = "docker-compose" +args = [ "run", "build", "${@}" ] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 54748c2..06bd405 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,15 @@ version: '3.8' services: + build: + build: + context: .devcontainer + dockerfile: Dockerfile.alpine + volumes: + - ${CARGO_HOME}/registry:${CARGO_HOME}/registry + - ${PWD}:/sparse + working_dir: /sparse + entrypoint: "/usr/local/cargo/bin/cargo build" + examples_bindshell_target: build: context: examples/secure-image