Skip to content

About

A lightweight REST service for parsing, caching, and rendering GVM report formats.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Greenbone Logo

gvm-report-service

A lightweight Rust REST service for discovering, caching, and rendering GVM report formats.

The project focuses on:

  • Moving report rendering out of the main application into a dedicated HTTP service.
  • Rendering reports from structured report data or XML payloads.
  • Discovering and caching report formats.
  • Producing requested report output through a clean, pluggable rendering architecture.

Build status

Build and Test CodeQL codecov


Documentation


Status

Early development (bootstrap phase)

Currently implemented:

  • Typed configuration (GVMR_*)
  • Structured logging (tracing)
  • Basic app wiring (Axum)
  • Health endpoints:
    • /health/live
    • /health/ready

Running locally

Requirements

  • Rust (stable)
  • Cargo
  • Make

Run the server

make run-server

With environment variables:

GVMR_PORT=8084 LOG_LEVEL=debug make run-server

Or using a .env file:

make run-server

Run the CLI

By default, the CLI target shows help:

make run-cli

Pass CLI arguments with CLI_ARGS:

make run-cli CLI_ARGS="--xml scripts/report.xml --type native --output report.pdf"

Development Setup

Recommended Tools

The Makefile is the main local development entry point.

Install the optional Cargo tools used by the test and coverage targets:

cargo install cargo-nextest --locked
cargo install cargo-llvm-cov

Available Make targets

Show all common commands:

make help

Check the whole workspace:

make check

Check individual crates:

make check-core
make check-server
make check-cli

Run the server:

make run-server

Run the CLI:

make run-cli

Run the standard workspace test suite:

make test

Run tests with cargo-nextest:

make nextest

Generate and open HTML coverage:

make cover

Run strict Clippy checks:

make clippy

Format the workspace:

make fmt

Check formatting without modifying files:

make fmt-check

Build the workspace:

make build

Build release binaries:

make build-release

Clean build artifacts:

make clean

Code Quality

The preferred workflow is to use the Makefile so local development and CI can share the same commands.

Format code

make fmt

Check formatting

make fmt-check

Lint (strict)

make clippy

Run tests

make test

For cargo-nextest:

make nextest

Coverage

make cover

Full local verification

A typical pre-commit or pre-push verification sequence is:

make fmt-check
make clippy
make test

API

When the service is running, interactive API documentation is available:


Design Principles

  • Clear separation of concerns (API, service, domain, infra)
  • Typed configuration via environment variables
  • Minimal framework leakage into core logic
  • Pluggable rendering architecture (planned)

License

Copyright © Greenbone AG

Licensed under the GNU Affero General Public License v3.0 or later. See LICENSE.


About

A lightweight REST service for parsing, caching, and rendering GVM report formats.

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages