forked from wrenn/wrenn
Complete Rust rewrite of the Go envd guest daemon that runs as PID 1 inside Firecracker microVMs. Feature-complete across all 8 phases: - Health, metrics, and env var endpoints - Crypto (SHA-256/512, HMAC), auth (secure token, signing), init/snapshot - Connect RPC via connectrpc + buffa (process + filesystem services) - File transfer (GET/POST /files) with gzip, multipart, chown, ENOSPC - Port subsystem (/proc/net/tcp scanner, socat forwarder) - Cgroup2 manager with noop fallback - Snapshot/restore lifecycle (conntracker, port subsystem stop/restart) - SIGTERM graceful shutdown, --cmd initial process spawn - MMDS metadata polling for Firecracker mode 42 source files, ~4200 LOC, 4.1MB stripped release binary. Makefile updated: build-envd now targets Rust (musl static), build-envd-go preserved for Go builds.
26 lines
572 B
Rust
26 lines
572 B
Rust
use std::collections::HashMap;
|
|
use std::sync::Arc;
|
|
|
|
use axum::Json;
|
|
use axum::extract::State;
|
|
use axum::http::header;
|
|
use axum::response::IntoResponse;
|
|
|
|
use crate::state::AppState;
|
|
|
|
pub async fn get_envs(State(state): State<Arc<AppState>>) -> impl IntoResponse {
|
|
tracing::debug!("getting env vars");
|
|
|
|
let envs: HashMap<String, String> = state
|
|
.defaults
|
|
.env_vars
|
|
.iter()
|
|
.map(|entry| (entry.key().clone(), entry.value().clone()))
|
|
.collect();
|
|
|
|
(
|
|
[(header::CACHE_CONTROL, "no-store")],
|
|
Json(envs),
|
|
)
|
|
}
|