No description
  • Go 92%
  • Makefile 6.2%
  • Dockerfile 1.8%
Find a file
zemdregon 4e3fb8659d
Some checks are pending
CI / lint (push) Waiting to run
CI / test (push) Waiting to run
CI / build (push) Waiting to run
CI / docker (push) Blocked by required conditions
chore(deps): bump docker/setup-buildx-action to v4
Self-hosted CI workflows only.
2026-08-10 18:18:46 -05:00
.github/workflows chore(deps): bump docker/setup-buildx-action to v4 2026-08-10 18:18:46 -05:00
cmd/module chore: add CI/LICENSE and align module bootstrap 2026-07-22 19:10:04 -05:00
internal Advertise settings capability (v0.1.4). 2026-08-10 04:53:06 -05:00
.env.example chore: add CI/LICENSE and align module bootstrap 2026-07-22 19:10:04 -05:00
.gitignore Initial commit 2026-07-03 12:03:16 -05:00
.golangci.yml Initial commit 2026-07-03 12:03:16 -05:00
CHANGELOG.md Advertise settings capability (v0.1.4). 2026-08-10 04:53:06 -05:00
Dockerfile Initial commit 2026-07-03 12:03:16 -05:00
go.mod Add SettingsProvider for live SSRF allowlist knobs. (#6) 2026-08-10 03:31:36 -05:00
go.sum Add SettingsProvider for live SSRF allowlist knobs. (#6) 2026-08-10 03:31:36 -05:00
LICENSE chore: add CI/LICENSE and align module bootstrap 2026-07-22 19:10:04 -05:00
Makefile Initial commit 2026-07-03 12:03:16 -05:00
muxcore.json Advertise settings capability (v0.1.4). 2026-08-10 04:53:06 -05:00
README.md feat: SSRF-harden spool URL resolution 2026-08-10 00:05:03 -05:00

Spool Resolver HTTP

Go Version License: GPL-3.0

HTTPS JSON spool tag resolver for the MuxCore fabric (SSRF-hardened).

A MuxCore sidecar module that resolves tag definitions from a remote HTTP(S) spool endpoint. Given a spool URL and a tag name, it fetches the tag definition as JSON, decoding into contracts.TagDefinition.

How It Works

Tag request ──→ spool-resolver-http (gRPC) ──→ GET <spool_url>/<tag_name>
                                                    │
                                                    ▼
                                              JSON TagDefinition returned

Configuration

Variable Default Description
SPOOL_RESOLVER_GRPC_ADDR :9670 gRPC listen address
SPOOL_RESOLVER_ALLOWED_HOSTS (required, empty=deny) Comma-separated host allowlist for spool URLs
SPOOL_RESOLVER_ALLOW_HTTP false Permit http:// (local/dev only)
SPOOL_RESOLVER_ALLOW_PRIVATE false Permit private/link-local resolved IPs
MUXCORE_GRPC_ADDR Core gRPC / mesh address (required)
MUXCORE_MODULE_ID spool-resolver-http Module ID override (SDK)
MUXCORE_INSECURE_DISABLE_TLS unset Set to true to disable TLS (dev only)

RPCs

  • ResolveTag(spoolUrl, tagName)GET <spoolUrl>/<tagName> and return a tag definition

On success, response carries tag_definition_json. Fetch/decode failures set the response error field (gRPC status remains OK).

Dependencies

  • google.golang.org/grpc — gRPC service framework
  • github.com/Muxcore-Media/core/pkg/contractsTagDefinition, module contracts
  • github.com/Muxcore-Media/core/sdk/go/module — sidecar lifecycle SDK
  • github.com/Muxcore-Media/core — spoolresolver proto

Build & Develop

make build   # compile the module binary
make test    # run tests with race detection
make lint    # golangci-lint
make fmt     # format Go source
make docker  # build Docker image

Capabilities

  • Registers with capability: spool.resolver
  • Declares contract: SpoolResolver (muxcore.json / ModuleInfo)
  • Serves gRPC SpoolResolverService (ResolveTag)
  • HTTP client timeout defaults to 30s (Config.Timeout; not env-exposed)

License

GPL-3.0