From 2a78b4e8b2d034ecfc709a5b65de0cc8b0a66d1f Mon Sep 17 00:00:00 2001 From: Vecna Date: Tue, 18 Jun 2024 18:56:16 -0400 Subject: [PATCH] Add Dockerfile --- Dockerfile | 78 +++++++++++++++++++++++ setup_files/config.json | 133 ++++++++++++++++++++++++++++++++++++++++ setup_files/config.toml | 1 + 3 files changed, 212 insertions(+) create mode 100644 Dockerfile create mode 100644 setup_files/config.json create mode 100644 setup_files/config.toml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..169b4a5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,78 @@ +FROM ubuntu:24.04 + +# Default directory +WORKDIR /home/user +COPY setup_files/* /home/user/build/ +RUN sed -i 's@HOMEDIR@/home/user@g' /home/user/build/config.toml + +RUN apt update -y +RUN apt install -y git cargo golang make openssl libssl-dev + +RUN mkdir -p /home/user/build /home/user/rdsys /home/user/lox-distributor /home/user/troll-patrol /home/user/simulation + +# Clone all our projects + +# rdsys +WORKDIR /home/user/build +RUN git clone https://gitlab.torproject.org/tpo/anti-censorship/rdsys.git +WORKDIR /home/user/build/rdsys +RUN git checkout 79332a3ee69dc6022a2a29fd8b79e9d2e4f5c9ab +RUN sed -i 's/NUM_BRIDGES = 1000/NUM_BRIDGES = 3600/' scripts/mkdescriptors/main.go +# configure rdsys to give Lox all the bridges +RUN cp /home/user/build/config.json conf/ + +# Lox distributor +WORKDIR /home/user/build +RUN git clone https://gitlab.torproject.org/vecna/lox.git +WORKDIR /home/user/build/lox +RUN git checkout 7b524e771ec444e07fff5b679c8c9e9b557829a0 +RUN mkdir -p .cargo +RUN cp /home/user/build/config.toml .cargo/ + +# lox_cli +WORKDIR /home/user/build +RUN git clone https://git-crysp.uwaterloo.ca/vvecna/lox_cli.git +WORKDIR /home/user/build/lox_cli +RUN git checkout d7beaad5601ad309fd5936c19e60a7ea98a05fde +RUN mkdir -p .cargo +RUN cp /home/user/build/config.toml .cargo/ + +# Troll Patrol +WORKDIR /home/user/build +RUN git clone https://git-crysp.uwaterloo.ca/vvecna/troll-patrol.git +WORKDIR /home/user/build/troll-patrol +RUN git checkout dc7531689c2a5ec5b4c757f95a87f576c4d4020c +RUN mkdir -p .cargo +RUN cp /home/user/build/config.toml .cargo/ + +# Lox Simulation +WORKDIR /home/user/build/lox-simulation +COPY Cargo.toml /home/user/build/lox-simulation/ +RUN mkdir src +COPY src/* /home/user/build/lox-simulation/src/ +RUN mkdir -p .cargo +RUN cp /home/user/build/config.toml .cargo/ + +# Build all the software + +# Build rdsys and bridge lines +WORKDIR /home/user/build/rdsys +RUN make build && make descriptors +RUN cp -r backend conf descriptors /home/user/rdsys/ + +# Build Lox distributor +WORKDIR /home/user/build/lox/crates/lox-distributor +RUN cargo update && cargo build --release +RUN cp config.json /home/user/build/lox/target/release/lox-distributor /home/user/lox-distributor/ + +# Build Troll Patrol +WORKDIR /home/user/build/troll-patrol +RUN cargo update && cargo build --release --features simulation +RUN cp target/release/troll-patrol /home/user/troll-patrol/ + +# Build simulation +WORKDIR /home/user/build/lox-simulation +RUN cargo update && cargo build --release +RUN cp target/release/lox-simulation /home/user/simulation/simulation + +WORKDIR /home/user diff --git a/setup_files/config.json b/setup_files/config.json new file mode 100644 index 0000000..746e222 --- /dev/null +++ b/setup_files/config.json @@ -0,0 +1,133 @@ +{ + "backend": { + "extrainfo_file": "descriptors/cached-extrainfo", + "networkstatus_file": "descriptors/networkstatus-bridges", + "descriptors_file": "descriptors/bridge-descriptors", + "blocklist_file": "", + "allowlist_file": "", + "bridgestrap_endpoint": "http://127.0.0.1:5001/bridge-state", + "bridgestrap_token": "BridgestrapApiTokenPlaceholder", + "onbasca_endpoint": "http://127.0.0.1:5002/bridge-state", + "onbasca_token": "OnbascaApiTokenPlaceholder", + "bandwidth_ratio_threshold": 0.75, + "api_endpoint_resources": "/resources", + "api_endpoint_resource_stream": "/resource-stream", + "api_endpoint_targets": "/targets", + "web_endpoint_status": "/status", + "web_endpoint_metrics": "/rdsys-backend-metrics", + "storage_dir": "storage", + "assignments_file": "assignments.log", + "resources": { + "vanilla": { + "unpartitioned": false, + "stored": false, + "distributors": [ + "https", + "moat" + ] + }, + "obfs2": {}, + "obfs3": {}, + "obfs4": {}, + "scramblesuit": {}, + "tblink": { + "unpartitioned": true, + "stored": true + } + }, + "api_tokens": { + "https": "HttpsApiTokenPlaceholder" + }, + "web_api": { + "api_address": "127.0.0.1:7100", + "cert_file": "", + "key_file": "" + }, + "distribution_proportions": { + "https": 1 + } + }, + "distributors": { + "https": { + "resources": [ + "obfs4", + "vanilla" + ], + "web_api": { + "api_address": "127.0.0.1:7200", + "cert_file": "", + "key_file": "" + }, + "time_distribution": { + "num_bridges_per_request": 2, + "rotation_period_hours": 24, + "num_periods": 2, + "storage_dir": "storage/https" + } + }, + "stub": { + "resources": [ + "obfs4" + ], + "web_api": { + "api_address": "127.0.0.1:7400", + "cert_file": "", + "key_file": "" + } + }, + "telegram": { + "resource": "obfs4", + "num_bridges_per_request": 2, + "rotation_period_hours": 24, + "token": "", + "min_user_id": 0, + "updater_tokens": { + "name": "DynamicBridgeTokenPlaceholder" + }, + "storage_dir": "/tmp/storage_telegram", + "api_address": "127.0.0.1:7600", + "lox_server_address": "http://localhost:8001" + } + }, + "updaters": { + "gettor": { + "github": { + "auth_token": "", + "owner": "TheTorProject", + "repo": "gettorbrowser" + }, + "gitlab": { + "auth_token": "", + "owner": "TheTorProject" + }, + "s3": [ + { + "access_key": "", + "access_secret": "", + "signing_method": "archive_org_dangerous_workaround", + "endpoint_url": "https://s3.us.archive.org/", + "endpoint_region": "", + "name": "archive_org", + "bucket": "", + "name_procedural_generation_seed": "SECRET" + }, + { + "access_key": "", + "access_secret": "", + "signing_method": "v4", + "endpoint_url": "https://s3.fr-par.scw.cloud", + "endpoint_region": "fr-par", + "name": "scaleway", + "bucket": "get-tor", + "name_procedural_generation_seed": "" + } + ], + "gdrive": { + "app_credential_path": "", + "user_credential_path": "", + "parent_folder_id": "" + }, + "metrics_address": "127.0.0.1:7800" + } + } +} diff --git a/setup_files/config.toml b/setup_files/config.toml new file mode 100644 index 0000000..03bc42d --- /dev/null +++ b/setup_files/config.toml @@ -0,0 +1 @@ +paths = ["HOMEDIR/build/lox/crates/lox-library", "HOMEDIR/build/lox/crates/lox-distributor", "HOMEDIR/build/lox_cli", "HOMEDIR/build/troll-patrol"]