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:
parent
0b53ed720b
commit
15f474486a
179 changed files with 5044 additions and 11519 deletions
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
@ -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"]
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
@ -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}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue