Sign inSign up

datatailr/libdtlicense

By datatailr

•Updated 4 months ago

C client SDK for Datatailr licenses — vendored as a COPY --from= source

Image
0

10K+

datatailr/libdtlicense repository overview

⁠datatailr/libdtlicense

Not a runnable image — a vendored artifact. Holds the pure-C client SDK used by every Datatailr product (QE, Wire, Tick, …) to verify and live-fetch licenses.

The image's only purpose is to ship libdtlicense.so + dt_license.h in a form that other Dockerfiles can COPY --from= without authenticating to a private GitHub release. Public on Docker Hub so your local docker build and your CI both Just Work — no PAT, no secret mount.

⁠What's inside

/libdtlicense.so       ← C shared library, links against -ldtlicense
/dt_license.h          ← public C header
/LICENSE.txt           ← proprietary licence text

Built multi-arch: linux/amd64 + linux/arm64. Each tag is also published with a distro-specific variant if you need libc-matched binaries:

TaglibcArch
0.1.0glibcamd64+arm64 (default — Debian/Ubuntu/RHEL)
0.1.0-alpinemuslamd64+arm64 (Alpine)
latestglibcamd64+arm64
latest-alpinemuslamd64+arm64

⁠How to use

In your product's Dockerfile, vendor the SDK with a COPY --from:

# Pull the SDK
FROM datatailr/libdtlicense:0.1.0 AS dtlicense

FROM debian:trixie-slim AS builder
COPY --from=dtlicense /libdtlicense.so /opt/datatailr/lib/libdtlicense.so
COPY --from=dtlicense /dt_license.h    /usr/local/include/dt_license.h

# Build your product, link against -ldtlicense:
#   gcc ... -L/opt/datatailr/lib -ldtlicense ...

For Alpine-based images:

FROM datatailr/libdtlicense:0.1.0-alpine AS dtlicense
FROM alpine:3.23 AS builder
COPY --from=dtlicense /libdtlicense.so /opt/datatailr/lib/libdtlicense.so
COPY --from=dtlicense /dt_license.h    /usr/local/include/dt_license.h

The product binary's runtime also needs libdtlicense.so accessible. Either install it where ldconfig finds it (/usr/local/lib/) or set LD_LIBRARY_PATH=/opt/datatailr/lib.

⁠API

The SDK exposes one entry point — see dt_license.h:

int  dt_license_require(const char *product, const char *feature,
                        int argc, char **argv);

int          dt_license_has_feature(const char *feature);
const char  *dt_license_subject(void);
const char  *dt_license_edition(void);
long long    dt_license_get_int(const char *feature, long long default_value);
long long    dt_license_expires_at(void);
void         dt_license_shutdown(void);

dt_license_require() resolves a license through this precedence:

  1. --license-file <path> or $DT_LICENSE_FILE
  2. --local-license-server host:port or $DT_LICENSE_LOCAL_SERVER (enables UDP heartbeat + activation tracking against datatailr/license-edge⁠)
  3. $DT_<PRODUCT>_LICENSE
  4. /etc/dt/license.json
  5. None — returns -1, caller decides

ed25519 signature verification, expiry, and feature gate happen identically across all sources. Key-id rotation supported.

⁠Source + issues

⁠Licence

Proprietary — LicenseRef-Datatailr-Proprietary. The shared library itself is freely re-distributable as part of products that have a valid Datatailr license; do not redistribute outside that context.

Tag summary

Content type

Image

Digest

sha256:a239c3c24…

Size

30.3 kB

Last updated

4 months ago

docker pull datatailr/libdtlicense