feat!: universal redesign — drop Minecraft stack, single-crate architecture

- remove Java plugins (velocity/paper), dashboard, all MC-specific code
  (handshake, death_code, varint, hostname-HMAC); available in history pre-v0.2
- merge crates/* into one package with src/bin/{rampart,rampart-manager,rampart-cli}
- ProtocolHandler trait + registry (no implementations yet), universal PoW kept
- XDP: universal L3/L4 filter (xdp/core/) + pluggable hook API (xdp/hooks/),
  fix IPv6 saddr bug; clang build verified
- docs: bilingual knowledge base (docs/kb/: attacks x4, defense-levels,
  practice x3), rewrite README/architecture for universal concept
- TODO.md v4.0: <=300-line module limit, competitor benchmark section (ref/)
- deploy/CI/docs cleanup: no MC references, new binary names

cargo build/clippy(-D warnings)/test green (55 tests)
This commit is contained in:
loki5512344 2026-08-24 01:50:22 +02:00
parent 0b53ed720b
commit 15f474486a
Signed by: boba
GPG key ID: 253067914055423B
179 changed files with 5044 additions and 11519 deletions

View file

@ -3,19 +3,25 @@ FROM rust:slim-bookworm AS builder
RUN apt-get update && apt-get install -y pkg-config libssl-dev clang libelf-dev libbpf-dev linux-libc-dev make && rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY Cargo.toml Cargo.lock rustfmt.toml ./
COPY crates/ ./crates/
COPY Cargo.toml Cargo.lock rustfmt.toml clippy.toml deny.toml build.rs ./
COPY src/ ./src/
COPY xdp/ ./xdp/
RUN cargo build --release --features xdp --bin rampart-core && \
cp target/release/rampart-core /app/rampart-core && \
strip /app/rampart-core
# Smoke-check: BPF-программа компилируется clang'ом (не грузится, только сборка)
RUN if command -v clang >/dev/null; then \
mkdir -p /app/target/xdp && \
clang -O2 -g -target bpf -c xdp/core/universal_filter.c -o /app/target/xdp/universal_filter.o; \
fi
RUN cargo build --release --features xdp --bin rampart && \
cp target/release/rampart /app/rampart && \
strip /app/rampart
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates libelf1 && rm -rf /var/lib/apt/lists/*
COPY --from=builder /app/rampart-core /usr/local/bin/rampart-core
COPY --from=builder /app/rampart /usr/local/bin/rampart
EXPOSE 25565 9090
ENTRYPOINT ["rampart-core"]
ENTRYPOINT ["rampart"]

View file

@ -1,18 +0,0 @@
FROM eclipse-temurin:21-jre-noble
ARG PAPER_VERSION=1.21
ARG PAPER_BUILD=latest
ARG PAPER_JAR=deploy/docker/downloads/paper.jar
# The Paper server jar is downloaded on the CI runner by deploy/docker/download-paper.sh
# because the fill.papermc.io API is unreliably served inside the BuildKit container.
COPY ${PAPER_JAR} /opt/paper.jar
COPY deploy/config/server.properties /opt/server.properties
COPY deploy/config/paper-global.yml /opt/paper-global.yml
COPY plugins/paper/build/libs/rampart-paper-*.jar /opt/plugins/
EXPOSE 25566
WORKDIR /opt
CMD ["java", "-jar", "/opt/paper.jar", "--nogui"]

View file

@ -1,5 +1,5 @@
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y ca-certificates libc6 && rm -rf /var/lib/apt/lists/*
COPY rampart-core /usr/local/bin/rampart-core
COPY rampart /usr/local/bin/rampart
EXPOSE 25565 9090
ENTRYPOINT ["rampart-core"]
ENTRYPOINT ["rampart"]

View file

@ -1,27 +0,0 @@
FROM eclipse-temurin:21-jre-noble
ARG VELOCITY_VERSION=4.0.0
ARG VELOCITY_BUILD=6
RUN apt-get update && apt-get install -y curl jq && rm -rf /var/lib/apt/lists/*
# Download Velocity
RUN VERSION="${VELOCITY_VERSION}" && \
BUILD="${VELOCITY_BUILD}" && \
if [ "${BUILD}" = "latest" ]; then \
BUILD=$(curl -s -H "User-Agent: rampart/1.0.0 (https://github.com/loki5512344/rampart)" \
"https://fill.papermc.io/v3/projects/velocity/versions/${VERSION}/builds" | \
jq -r 'first(.[] | select(.channel == "STABLE") | .id) // empty'); \
fi && \
URL=$(curl -s -H "User-Agent: rampart/1.0.0 (https://github.com/loki5512344/rampart)" \
"https://fill.papermc.io/v3/projects/velocity/versions/${VERSION}/builds" | \
jq -r --arg b "${BUILD}" 'first(.[] | select(.id == ($b | tonumber)) | .downloads."server:default".url) // empty') && \
curl -fsSLo /opt/velocity.jar "${URL}"
COPY deploy/config/velocity.toml /opt/velocity.toml
COPY plugins/velocity/build/libs/rampart-velocity-*.jar /opt/plugins/
EXPOSE 25577
WORKDIR /opt
CMD ["java", "-jar", "/opt/velocity.jar", "/opt/velocity.toml"]

View file

@ -1,32 +0,0 @@
#!/usr/bin/env bash
set -euo pipefail
PAPER_VERSION="${PAPER_VERSION:-1.21}"
PAPER_BUILD="${PAPER_BUILD:-latest}"
OUT="${PAPER_OUT:-deploy/docker/downloads/paper.jar}"
UA="rampart/1.0.0 (https://github.com/loki5512344/rampart)"
mkdir -p "$(dirname "${OUT}")"
if [ "${PAPER_BUILD}" = "latest" ]; then
PAPER_BUILD="$(curl -fsSL -H "User-Agent: ${UA}" \
"https://fill.papermc.io/v3/projects/paper/versions/${PAPER_VERSION}/builds" \
| jq -r 'first(.[] | select(.channel == "STABLE") | .id) // empty')"
fi
URL="$(curl -fsSL -H "User-Agent: ${UA}" \
"https://fill.papermc.io/v3/projects/paper/versions/${PAPER_VERSION}/builds" \
| jq -r --arg b "${PAPER_BUILD}" 'first(.[] | select(.id == ($b | tonumber)) | .downloads."server:default".url) // empty')"
if [ -z "${URL}" ]; then
echo "error: no Paper download URL found for version ${PAPER_VERSION} build ${PAPER_BUILD}" >&2
exit 1
fi
echo "Downloading Paper ${PAPER_VERSION} build ${PAPER_BUILD}"
case "${URL}" in
http*) JAR_URL="${URL}" ;;
*) JAR_URL="https://fill.papermc.io${URL}" ;;
esac
curl -fsSLo "${OUT}" -H "User-Agent: ${UA}" "${JAR_URL}"
echo "Saved ${OUT}"