Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
nexo
command
Command nexo is the Nexo object storage server.
|
Command nexo is the Nexo object storage server. |
|
nexo-media-worker
command
Command nexo-media-worker processes the media jobs of Nexo: it derives the renditions, the poster and the thumbnails of the videos selected by the media rules of the buckets, encoding H.264 with OpenH264 (the Cisco build, downloaded at the first start) and reading and writing the objects through the S3 API only.
|
Command nexo-media-worker processes the media jobs of Nexo: it derives the renditions, the poster and the thumbnails of the videos selected by the media rules of the buckets, encoding H.264 with OpenH264 (the Cisco build, downloaded at the first start) and reading and writing the objects through the S3 API only. |
|
nexoctl
command
Command nexoctl is the Nexo command-line client.
|
Command nexoctl is the Nexo command-line client. |
|
tools/traceability
command
Command traceability writes the traceability matrix of docs/06 §6.8 (test/TRACEABILITY.md): every feature of the catalog with the tests that cover it.
|
Command traceability writes the traceability matrix of docs/06 §6.8 (test/TRACEABILITY.md): every feature of the catalog with the tests that cover it. |
|
internal
|
|
|
app
Package app composes the Nexo server: it wires service implementations to their interfaces according to the configuration and the detected deployment mode, builds the S3 and console HTTP servers and runs them as a lifecycle.Group.
|
Package app composes the Nexo server: it wires service implementations to their interfaces according to the configuration and the detected deployment mode, builds the S3 and console HTTP servers and runs them as a lifecycle.Group. |
|
cli
Package cli holds the nexoctl building blocks used by the cobra commands (internal/cli/commands): the alias configuration store and service, the S3Client contract with its aws-sdk-go-v2 implementation, the parsing of targets, sizes and durations, the transfer engine of cp, mv, mirror and rm, the anonymous access presets and the output helpers (tables, JSON Lines, progress bar, stable exit codes).
|
Package cli holds the nexoctl building blocks used by the cobra commands (internal/cli/commands): the alias configuration store and service, the S3Client contract with its aws-sdk-go-v2 implementation, the parsing of targets, sizes and durations, the transfer engine of cp, mv, mirror and rm, the anonymous access presets and the output helpers (tables, JSON Lines, progress bar, stable exit codes). |
|
cli/clitest
Package clitest provides the test doubles of the nexoctl commands: MemS3 is an in-memory S3 store that drives the generated mock of cli.S3Client with RunAndReturn (docs/12 §12.2 rule 8: no hand-written fake of an interface that has a mock; the shared state is modeled on the mock).
|
Package clitest provides the test doubles of the nexoctl commands: MemS3 is an in-memory S3 store that drives the generated mock of cli.S3Client with RunAndReturn (docs/12 §12.2 rule 8: no hand-written fake of an interface that has a mock; the shared state is modeled on the mock). |
|
cli/commands
Package commands holds the cobra commands of nexoctl (docs/02 §2.3).
|
Package commands holds the cobra commands of nexoctl (docs/02 §2.3). |
|
clock
Package clock abstracts time so that services can be tested deterministically.
|
Package clock abstracts time so that services can be tested deterministically. |
|
config
Package config holds the static server configuration: the settings read once at startup from command-line flags, NEXO_* environment variables and an optional JSON file, with precedence flags > env > file > defaults.
|
Package config holds the static server configuration: the settings read once at startup from command-line flags, NEXO_* environment variables and an optional JSON file, with precedence flags > env > file > defaults. |
|
domain
Package domain holds the types and sentinel errors shared by every Nexo service and transport.
|
Package domain holds the types and sentinel errors shared by every Nexo service and transport. |
|
lifecycle
Package lifecycle defines the start/stop contract of long-running components and a Group that manages them in order.
|
Package lifecycle defines the start/stop contract of long-running components and a Group that manages them in order. |
|
mediaworker/imaging
Package imaging derives the variants of an image for the media worker: it decodes JPEG, PNG, GIF (first frame), WebP, BMP, TIFF, AVIF and HEIC (recognized by their content, not their name), converts it to sRGB from the color space it declares (ICC profile, nclx or cICP code points, PNG gAMA and cHRM: color.go), turns it upright (EXIF orientation of JPEG, TIFF, PNG and WebP, irot/imir of AVIF and HEIC), resizes it with area averaging on premultiplied alpha, and encodes AVIF, WebP, JPEG and PNG variants in parallel, in sRGB and without any metadata of the source (no EXIF, no GPS position, no ICC profile).
|
Package imaging derives the variants of an image for the media worker: it decodes JPEG, PNG, GIF (first frame), WebP, BMP, TIFF, AVIF and HEIC (recognized by their content, not their name), converts it to sRGB from the color space it declares (ICC profile, nclx or cICP code points, PNG gAMA and cHRM: color.go), turns it upright (EXIF orientation of JPEG, TIFF, PNG and WebP, irot/imir of AVIF and HEIC), resizes it with area averaging on premultiplied alpha, and encodes AVIF, WebP, JPEG and PNG variants in parallel, in sRGB and without any metadata of the source (no EXIF, no GPS position, no ICC profile). |
|
mediaworker/openh264
Package openh264 binds the Cisco OpenH264 library (BSD licensed) at run time, without cgo: the media worker decodes H.264 and encodes H.264 (Constrained Baseline) with it, so no ffmpeg is needed.
|
Package openh264 binds the Cisco OpenH264 library (BSD licensed) at run time, without cgo: the media worker decodes H.264 and encodes H.264 (Constrained Baseline) with it, so no ffmpeg is needed. |
|
mediaworker/resample
Package resample resizes planes of 8-bit samples, one channel (the planes of a YCbCr picture) or four interleaved (RGBA): area averaging when reducing, linear when enlarging.
|
Package resample resizes planes of 8-bit samples, one channel (the planes of a YCbCr picture) or four interleaved (RGBA): area averaging when reducing, linear when enlarging. |
|
mediaworker/speech
Package speech is the speech side of the media worker: it transcribes the audio of the videos with an OpenAI-compatible transcription service (OpenAI, whisper.cpp server, faster-whisper-server...) and translates the transcriptions with LibreTranslate or an OpenAI-compatible chat completion service.
|
Package speech is the speech side of the media worker: it transcribes the audio of the videos with an OpenAI-compatible transcription service (OpenAI, whisper.cpp server, faster-whisper-server...) and translates the transcriptions with LibreTranslate or an OpenAI-compatible chat completion service. |
|
mediaworker/transcode
Package transcode derives the outputs of a video for the media worker: lower-quality renditions (H.264 Constrained Baseline with the source audio copied), a poster frame and a timeline thumbnail sprite.
|
Package transcode derives the outputs of a video for the media worker: lower-quality renditions (H.264 Constrained Baseline with the source audio copied), a poster frame and a timeline thumbnail sprite. |
|
mediaworker/worker
Package worker runs the jobs of the media worker: it receives them from the media_worker target of Nexo, keeps them in a queue on disk until they are done, and processes them through the S3 API only (no internal RPC, no admin rights): it reads the video, writes the renditions, the poster and the thumbnails into the sidecar directory of its version, and the status.json Nexo reads to serve them.
|
Package worker runs the jobs of the media worker: it receives them from the media_worker target of Nexo, keeps them in a queue on disk until they are done, and processes them through the S3 API only (no internal RPC, no admin rights): it reads the video, writes the renditions, the poster and the thumbnails into the sidecar directory of its version, and the status.json Nexo reads to serve them. |
|
service
Package service groups the Nexo services: one sub-package per service, each with its contract in service.go, an unexported implementation created by New(deps, opts...) and a generated mock in mock/ (docs/12-service-architecture.md).
|
Package service groups the Nexo services: one sub-package per service, each with its contract in service.go, an unexported implementation created by New(deps, opts...) and a generated mock in mock/ (docs/12-service-architecture.md). |
|
service/accessrule
Package accessrule manages the access rules of the buckets (docs/10 §10.1): rules with a priority, an effect, principals, actions, a key pattern (prefix, glob or RE2 regex, internal/service/match) and conditions, stored in the bucket metadata and evaluated by the policy engine as a resource-based source next to the bucket policy (Evaluator implements policy.AccessRules).
|
Package accessrule manages the access rules of the buckets (docs/10 §10.1): rules with a priority, an effect, principals, actions, a key pattern (prefix, glob or RE2 regex, internal/service/match) and conditions, stored in the bucket metadata and evaluated by the policy engine as a resource-based source next to the bucket policy (Evaluator implements policy.AccessRules). |
|
service/admin
Package admin is the facade used by the Admin API and the CLI for server-wide operations (information, data usage, healing, service control) and the home of the business rules of the console that span several domain services:
|
Package admin is the facade used by the Admin API and the CLI for server-wide operations (information, data usage, healing, service control) and the home of the business rules of the console that span several domain services: |
|
service/audit
Package audit records who did what (S-OPS-06, docs/05 T-8.4): one Entry per request served by the S3 API and the Admin API (identity, operation, resource, client, outcome, latency, request id, node, sizes), written to the structured log of the server, kept in memory for the searches of the console (D-MON-03, aggregated over the nodes of a cluster) and delivered to the audit targets of the dynamic configuration (audit_webhook, audit_kafka), each with the persistent queue of the notification targets (internal/service/event).
|
Package audit records who did what (S-OPS-06, docs/05 T-8.4): one Entry per request served by the S3 API and the Admin API (identity, operation, resource, client, outcome, latency, request id, node, sizes), written to the structured log of the server, kept in memory for the searches of the console (D-MON-03, aggregated over the nodes of a cluster) and delivered to the audit targets of the dynamic configuration (audit_webhook, audit_kafka), each with the persistent queue of the notification targets (internal/service/event). |
|
service/auth
Package auth defines request authentication: AWS Signature V4 for headers, presigned query strings, streaming aws-chunked payloads (signed chunks, unsigned chunks with trailers) and POST policies, plus the signer that produces signed requests, presigned URLs and POST policy forms.
|
Package auth defines request authentication: AWS Signature V4 for headers, presigned query strings, streaming aws-chunked payloads (signed chunks, unsigned chunks with trailers) and POST policies, plus the signer that produces signed requests, presigned URLs and POST policy forms. |
|
service/bucket
Package bucket manages bucket metadata: versioning, policy, lifecycle, object lock, encryption, quota, tags, CORS and notification configuration.
|
Package bucket manages bucket metadata: versioning, policy, lifecycle, object lock, encryption, quota, tags, CORS and notification configuration. |
|
service/cache
Package cache implements the HTTP cache of the distributions (docs/11): reusable cache policies inherited from the cluster to the distribution, the domain and the behavior; a memory tier (W-TinyLFU) and an optional disk tier with quotas per cluster, distribution and domain; the invalidations, automatic on every write of the object layer and manual (paths, patterns, tags, domains, everything, soft or hard), propagated to every node with a sequence number; the shared mode of a cluster, where a key has an owner node chosen by rendezvous hashing; the purge webhooks of the CDNs and proxies in front of the cluster; the warm-up, the inspector and the statistics.
|
Package cache implements the HTTP cache of the distributions (docs/11): reusable cache policies inherited from the cluster to the distribution, the domain and the behavior; a memory tier (W-TinyLFU) and an optional disk tier with quotas per cluster, distribution and domain; the invalidations, automatic on every write of the object layer and manual (paths, patterns, tags, domains, everything, soft or hard), propagated to every node with a sequence number; the shared mode of a cluster, where a key has an owner node chosen by rendezvous hashing; the purge webhooks of the CDNs and proxies in front of the cluster; the warm-up, the inspector and the statistics. |
|
service/certs
Package certs manages the TLS certificates of the domains of the distributions (docs/10 §10.2 "TLS and per-domain certificates"): the certificates uploaded by the operators (PEM chain and key, validated: chain linkage, key matching the leaf, DNS names, validity) and the ones obtained and renewed with ACME (RFC 8555: Let's Encrypt, ZeroSSL, any ACME CA) through the HTTP-01, the TLS-ALPN-01 or the DNS-01 challenge.
|
Package certs manages the TLS certificates of the domains of the distributions (docs/10 §10.2 "TLS and per-domain certificates"): the certificates uploaded by the operators (PEM chain and key, validated: chain linkage, key matching the leaf, DNS names, validity) and the ones obtained and renewed with ACME (RFC 8555: Let's Encrypt, ZeroSSL, any ACME CA) through the HTTP-01, the TLS-ALPN-01 or the DNS-01 challenge. |
|
service/certs/dns01
Package dns01 publishes the TXT records of the ACME DNS-01 challenge (RFC 8555 §8.4) in the DNS zones of the distributions and waits for them to be served by the authoritative nameservers of the zone, before the certificate service asks the CA to validate them.
|
Package dns01 publishes the TXT records of the ACME DNS-01 challenge (RFC 8555 §8.4) in the DNS zones of the distributions and waits for them to be served by the authoritative nameservers of the zone, before the certificate service asks the CA to validate them. |
|
service/cluster
Package cluster holds the services that make the nodes of a deployment one cluster (docs/03 §3.5, §3.9): the startup sequence (Bootstrapper: same topology on every node, quorum of drives per set, coordinated format.json), the broadcast of cache invalidations (Notifier), the aggregated server information and clock checks (Info) and the leader election of the singleton background jobs (Leader).
|
Package cluster holds the services that make the nodes of a deployment one cluster (docs/03 §3.5, §3.9): the startup sequence (Bootstrapper: same topology on every node, quorum of drives per set, coordinated format.json), the broadcast of cache invalidations (Notifier), the aggregated server information and clock checks (Info) and the leader election of the singleton background jobs (Leader). |
|
service/config
Package config is the dynamic configuration service: key/value settings grouped by subsystem (e.g.
|
Package config is the dynamic configuration service: key/value settings grouped by subsystem (e.g. |
|
service/crypto
Package crypto is the server-side encryption of the objects (docs/02 S-OBJ-13, docs/05 T-7.5): it seals and unseals the object keys and encrypts the object data in a DARE-like package format.
|
Package crypto is the server-side encryption of the objects (docs/02 S-OBJ-13, docs/05 T-7.5): it seals and unseals the object keys and encrypts the object data in a DARE-like package format. |
|
service/distribution
Package distribution implements the distributions of docs/10 §10.2: a distribution exposes a bucket (or a prefix of it) on one or more custom domains, in the "website" mode (static sites, downloads: index document, SPA fallback, error pages, redirects, behaviors per path, signed URLs and cookies) or in the "s3" mode (the domain is an S3 endpoint aliasing the bucket).
|
Package distribution implements the distributions of docs/10 §10.2: a distribution exposes a bucket (or a prefix of it) on one or more custom domains, in the "website" mode (static sites, downloads: index document, SPA fallback, error pages, redirects, behaviors per path, signed URLs and cookies) or in the "s3" mode (the domain is an S3 endpoint aliasing the bucket). |
|
service/erasure
Package erasure implements the Reed-Solomon erasure coding of the object layer and the bitrot protection of the shards it produces.
|
Package erasure implements the Reed-Solomon erasure coding of the object layer and the bitrot protection of the shards it produces. |
|
service/event
Package event implements bucket notifications (S-BKT-10): S3-format events published by the object layer and the S3 transport, routed by the notification configuration of their bucket (and by the filters of the targets) to the configured targets: webhook, Kafka, NATS, AMQP, Redis and PostgreSQL.
|
Package event implements bucket notifications (S-BKT-10): S3-format events published by the object layer and the S3 transport, routed by the notification configuration of their bucket (and by the filters of the targets) to the configured targets: webhook, Kafka, NATS, AMQP, Redis and PostgreSQL. |
|
service/heal
Package heal is the healing service of the erasure-coded deployments (docs/03 §3.7): it repairs objects and buckets through the object layer's Healer and reports the state of every drive before and after, drains the MRF queue (the writes that missed a drive and the reads that met damaged data), formats the empty drives found in an existing deployment and heals them completely with a checkpoint that survives restarts (healing.bin), and runs the healing jobs of the Admin API (nexoctl admin heal).
|
Package heal is the healing service of the erasure-coded deployments (docs/03 §3.7): it repairs objects and buckets through the object layer's Healer and reports the state of every drive before and after, drains the MRF queue (the writes that missed a drive and the reads that met damaged data), formats the empty drives found in an existing deployment and heals them completely with a checkpoint that survives restarts (healing.bin), and runs the healing jobs of the Admin API (nexoctl admin heal). |
|
service/health
Package health exposes liveness, readiness and cluster health checks.
|
Package health exposes liveness, readiness and cluster health checks. |
|
service/iam
Package iam manages identities: the root user, users, groups, service accounts (access keys with inline policies and expiry) and STS temporary credentials, plus the policies attached to users and groups.
|
Package iam manages identities: the root user, users, groups, service accounts (access keys with inline policies and expiry) and STS temporary credentials, plus the policies attached to users and groups. |
|
service/idp
Package idp authenticates the users of external identity providers (S-IAM-08, S-IAM-09): the ID tokens of an OpenID Connect provider (AssumeRoleWithWebIdentity and the SSO login of the console, with the authorization code flow and PKCE) and the passwords of an LDAP directory (AssumeRoleWithLDAPIdentity and the console login).
|
Package idp authenticates the users of external identity providers (S-IAM-08, S-IAM-09): the ID tokens of an OpenID Connect provider (AssumeRoleWithWebIdentity and the SSO login of the console, with the authorization code flow and PKCE) and the passwords of an LDAP directory (AssumeRoleWithLDAPIdentity and the console login). |
|
service/ilm
Package ilm implements the bucket lifecycle (S-BKT-07, docs/05 T-7.3): the LifecycleConfiguration documents of S3 (parsing and validation), their evaluation against the versions of a key and the in-progress multipart uploads with an injected clock (Expiration, expired object delete markers, NoncurrentVersionExpiration, AbortIncompleteMultipartUpload, Transition and NoncurrentVersionTransition to the remote tiers of S-STO-12), and their application: by the background scanner, which hands every version to the service (scanner.Lifecycle), or on demand (ApplyNow).
|
Package ilm implements the bucket lifecycle (S-BKT-07, docs/05 T-7.3): the LifecycleConfiguration documents of S3 (parsing and validation), their evaluation against the versions of a key and the in-progress multipart uploads with an injected clock (Expiration, expired object delete markers, NoncurrentVersionExpiration, AbortIncompleteMultipartUpload, Transition and NoncurrentVersionTransition to the remote tiers of S-STO-12), and their application: by the background scanner, which hands every version to the service (scanner.Lifecycle), or on demand (ApplyNow). |
|
service/kms
Package kms is the key management service of the server-side encryption (docs/07 §7.2, docs/05 T-7.5).
|
Package kms is the key management service of the server-side encryption (docs/07 §7.2, docs/05 T-7.5). |
|
service/lock
Package lock defines the namespace locking used to serialize access to buckets and objects.
|
Package lock defines the namespace locking used to serialize access to buckets and objects. |
|
service/logs
Package logs is the log stream of the server (S-OPS-07, docs/05 T-8.3): the slog handler of the process is a tee (Service.Handler) that writes the records to the output of the server (JSON or text, with a level and a format changed at runtime by the "logger" subsystem of the dynamic configuration, Configurator) and keeps them in a ring buffer of recent entries that the subscribers (the console, the CLI) receive live, from every node of the cluster (Peer).
|
Package logs is the log stream of the server (S-OPS-07, docs/05 T-8.3): the slog handler of the process is a tee (Service.Handler) that writes the records to the output of the server (JSON or text, with a level and a format changed at runtime by the "logger" subsystem of the dynamic configuration, Configurator) and keeps them in a ring buffer of recent entries that the subscribers (the console, the CLI) receive live, from every node of the cluster (Peer). |
|
service/match
Package match compiles and evaluates the key patterns of the access rules (docs/10 §10.1) and of the distribution behaviors (§10.2): literal prefixes, globs and RE2 regular expressions, matched against keys normalized so that an encoding never bypasses a rule.
|
Package match compiles and evaluates the key patterns of the access rules (docs/10 §10.1) and of the distribution behaviors (§10.2): literal prefixes, globs and RE2 regular expressions, matched against keys normalized so that an encoding never bypasses a rule. |
|
service/media
Package media serves the MP4 videos of the object layer as HLS presentations: the playlists and the fMP4 (CMAF) segments are built on request from byte ranges of the object, without decoding or re-encoding it (docs/proposals/video-streaming.md).
|
Package media serves the MP4 videos of the object layer as HLS presentations: the playlists and the fMP4 (CMAF) segments are built on request from byte ranges of the object, without decoding or re-encoding it (docs/proposals/video-streaming.md). |
|
service/metrics
Package metrics is the metrics registry of a node.
|
Package metrics is the metrics registry of a node. |
|
service/object
Package object defines the object layer: the logical S3 API over buckets, objects, versions and multipart uploads.
|
Package object defines the object layer: the logical S3 API over buckets, objects, versions and multipart uploads. |
|
service/playback
Package playback issues and checks the playback tokens of the videos (docs/proposals/video-protection.md): a token is a capability to stream one video, signed by the deployment, that an application hands to a viewer without credentials.
|
Package playback issues and checks the playback tokens of the videos (docs/proposals/video-protection.md): a token is a capability to stream one video, signed by the deployment, that an application hands to a viewer without credentials. |
|
service/policy
Package policy is the policy engine: parsing and validation of AWS-format policy documents, evaluation of IAM policies, group policies, inline (session) policies and bucket policies, the policy simulator, the simplified anonymous-access presets and the store of named IAM policies with their attachments to users and groups.
|
Package policy is the policy engine: parsing and validation of AWS-format policy documents, evaluation of IAM policies, group policies, inline (session) policies and bucket policies, the policy simulator, the simplified anonymous-access presets and the store of named IAM policies with their attachments to users and groups. |
|
service/pools
Package pools runs the decommission of a server pool and the rebalance between pools (docs/03 §3.8) on top of object.PoolMover.
|
Package pools runs the decommission of a server pool and the rebalance between pools (docs/03 §3.8) on top of object.PoolMover. |
|
service/preflight
Package preflight validates the configuration of a node without starting anything nor writing to its drives: the checks of "nexo server --dry-run" (docs/08 §8.3, TM-12).
|
Package preflight validates the configuration of a node without starting anything nor writing to its drives: the checks of "nexo server --dry-run" (docs/08 §8.3, TM-12). |
|
service/quota
Package quota enforces the hard quotas of the buckets (docs/02 S-BKT-09, docs/05 T-7.7).
|
Package quota enforces the hard quotas of the buckets (docs/02 S-BKT-09, docs/05 T-7.7). |
|
service/ratelimit
Package ratelimit is the request rate limiter of a node (S-OPS-10, S-DST-08): token buckets keyed by client address, access key or user, bucket and distribution, and the concurrency limit of the S3 API (api.requests_max, api.requests_deadline).
|
Package ratelimit is the request rate limiter of a node (S-OPS-10, S-DST-08): token buckets keyed by client address, access key or user, bucket and distribution, and the concurrency limit of the S3 API (api.requests_max, api.requests_deadline). |
|
service/replication
Package replication replicates the versions of a bucket to buckets of other deployments (S-BKT-12, docs/03 §3.10): asynchronously, by the rules of the ReplicationConfiguration of the bucket, to replication targets (a remote S3 endpoint, its credentials and its bucket, sealed in the system store and named by an ARN the rules point to).
|
Package replication replicates the versions of a bucket to buckets of other deployments (S-BKT-12, docs/03 §3.10): asynchronously, by the rules of the ReplicationConfiguration of the bucket, to replication targets (a remote S3 endpoint, its credentials and its bucket, sealed in the system store and named by an ARN the rules point to). |
|
service/s3select
Package s3select evaluates the SQL queries of SelectObjectContent (S-OBJ-16) over the content of an object: CSV or JSON records, plain or compressed with GZIP or BZIP2, filtered and projected by a subset of the S3 Select SQL, written as CSV or JSON records.
|
Package s3select evaluates the SQL queries of SelectObjectContent (S-OBJ-16) over the content of an object: CSV or JSON records, plain or compressed with GZIP or BZIP2, filtered and projected by a subset of the S3 Select SQL, written as CSV or JSON records. |
|
service/scanner
Package scanner is the background scanner (docs/03 §3.7): a continuous cycle over every bucket and object of the deployment that computes the data usage (per bucket and per top-level prefix: objects, versions, delete markers, bytes) saved in .nexo.sys/usage.json and served to the Admin API, heals a sample of the objects (one every N, with a deep bitrot verification every M cycles), aborts the stale multipart uploads and hands every version to the lifecycle hook (ILM, M7).
|
Package scanner is the background scanner (docs/03 §3.7): a continuous cycle over every bucket and object of the deployment that computes the data usage (per bucket and per top-level prefix: objects, versions, delete markers, bytes) saved in .nexo.sys/usage.json and served to the Admin API, heals a sample of the objects (one every N, with a deep bitrot verification every M cycles), aborts the stale multipart uploads and hands every version to the lifecycle hook (ILM, M7). |
|
service/session
Package session manages console sessions: login with access/secret key yields a signed token stored by the transport in an HttpOnly cookie, plus a CSRF token, bound to the session, the browser sends back in a header.
|
Package session manages console sessions: login with access/secret key yields a signed token stored by the transport in an HttpOnly cookie, plus a CSRF token, bound to the session, the browser sends back in a header. |
|
service/settings
Package settings applies the dynamic configuration (config.Service) to the server: it reads the subsystems the server honors at every call, so that a change written through the Admin API takes effect on the next request without a restart (hot reload), and it decorates the services whose behavior depends on them.
|
Package settings applies the dynamic configuration (config.Service) to the server: it reads the subsystems the server honors at every call, so that a change written through the Admin API takes effect on the next request without a restart (hot reload), and it decorates the services whose behavior depends on them. |
|
service/share
Package share manages revocable share links (docs/09 §9.1 "Revoking shared links").
|
Package share manages revocable share links (docs/09 §9.1 "Revoking shared links"). |
|
service/siterepl
Package siterepl keeps several deployments in sync (site replication, S-STO-11, docs/03 §3.10): their users, groups, access keys and named policies, their buckets with their settings, and the replication of every bucket to the same bucket of every other site.
|
Package siterepl keeps several deployments in sync (site replication, S-STO-11, docs/03 §3.10): their users, groups, access keys and named policies, their buckets with their settings, and the replication of every bucket to the same bucket of every other site. |
|
service/storage
Package storage defines StorageAPI, the contract for accessing a single drive: metadata files (xl.meta), data parts and volume (bucket) directories.
|
Package storage defines StorageAPI, the contract for accessing a single drive: metadata files (xl.meta), data parts and volume (bucket) directories. |
|
service/storage/storagetest
Package storagetest is the behavior suite of storage.StorageAPI.
|
Package storagetest is the behavior suite of storage.StorageAPI. |
|
service/sysstore
Package sysstore keeps the system documents of a deployment (identities, named policies, dynamic configuration, bucket metadata, share links, session revocations) on the system volume of the drives of the first erasure set (.nexo.sys/config), whatever the deployment mode: the drives are storage.StorageAPI values, local or remote (internode RPC), so that every node of a cluster reads and writes the same documents (docs/03 §3.9: "bucket/IAM metadata: written with quorum").
|
Package sysstore keeps the system documents of a deployment (identities, named policies, dynamic configuration, bucket metadata, share links, session revocations) on the system volume of the drives of the first erasure set (.nexo.sys/config), whatever the deployment mode: the drives are storage.StorageAPI values, local or remote (internode RPC), so that every node of a cluster reads and writes the same documents (docs/03 §3.9: "bucket/IAM metadata: written with quorum"). |
|
service/tier
Package tier manages the remote tiers of the lifecycle (S-STO-12, docs/03 §3.12): S3 buckets of other deployments or of a cloud provider (an endpoint, a bucket, a prefix and credentials sealed in the system store) that the Transition actions of the lifecycle move the data of versions to.
|
Package tier manages the remote tiers of the lifecycle (S-STO-12, docs/03 §3.12): S3 buckets of other deployments or of a cloud provider (an endpoint, a bucket, a prefix and credentials sealed in the system store) that the Transition actions of the lifecycle move the data of versions to. |
|
service/topology
Package topology parses the server command line into a deployment layout.
|
Package topology parses the server command line into a deployment layout. |
|
service/trace
Package trace holds the request tracing of the server:
|
Package trace holds the request tracing of the server: |
|
service/update
Package update orchestrates the binary update and the coordinated restart and stop of a deployment (S-OPS-09, C-ADM-09, docs/03 §3.13).
|
Package update orchestrates the binary update and the coordinated restart and stop of a deployment (S-OPS-09, C-ADM-09, docs/03 §3.13). |
|
testutil
Package testutil starts Nexo in-process for integration tests: free ports, temporary drive directories and test credentials, in every deployment mode (docs/08 §8.1): a single drive (SNSD), several drives of one node (SNMD, Drives) or a distributed cluster of several nodes running in the test process (StartCluster), each on its own ports, in front of an in-process load balancer.
|
Package testutil starts Nexo in-process for integration tests: free ports, temporary drive directories and test credentials, in every deployment mode (docs/08 §8.1): a single drive (SNSD), several drives of one node (SNMD, Drives) or a distributed cluster of several nodes running in the test process (StartCluster), each on its own ports, in front of an in-process load balancer. |
|
testutil/dnstest
Package dnstest runs an authoritative DNS server in the tests of the ACME DNS-01 challenge.
|
Package dnstest runs an authoritative DNS server in the tests of the ACME DNS-01 challenge. |
|
testutil/redaction
Package redaction holds the request every redaction of the server is tested with (the stderr logs, the log stream, the audit, the access logs and the live trace): one table, one predicate (domain.IsSensitiveParam).
|
Package redaction holds the request every redaction of the server is tested with (the stderr logs, the log stream, the audit, the access logs and the live trace): one table, one predicate (domain.IsSensitiveParam). |
|
tools/traceability
Package traceability builds the traceability matrix of docs/06 §6.8: every feature of the catalog (docs/02-features.md) mapped to the tests that declare to cover it with a "covers:" tag (Go tests, testscript scripts, Vitest and Playwright specs, test scripts).
|
Package traceability builds the traceability matrix of docs/06 §6.8: every feature of the catalog (docs/02-features.md) mapped to the tests that declare to cover it with a "covers:" tag (Go tests, testscript scripts, Vitest and Playwright specs, test scripts). |
|
transport/http/admin
Package admin implements the Admin API transport (/api/v1): JSON in, JSON out, problem+json errors (RFC 9457) with a stable snake_case code.
|
Package admin implements the Admin API transport (/api/v1): JSON in, JSON out, problem+json errors (RFC 9457) with a stable snake_case code. |
|
transport/http/console
Package console serves the embedded React dashboard: static assets with long-lived caching, index.html with no-cache and a SPA fallback for every non-API path, plus baseline security headers.
|
Package console serves the embedded React dashboard: static assets with long-lived caching, index.html with no-cache and a SPA fallback for every non-API path, plus baseline security headers. |
|
transport/http/dist
Package dist is the HTTP transport of the distributions (docs/10 §10.2): the routing of the requests by Host (HostRouter), the website routes (WebsiteRoutes), the HTTP-01 challenges of ACME (ChallengeRoutes), the metrics and the access log of every distribution.
|
Package dist is the HTTP transport of the distributions (docs/10 §10.2): the routing of the requests by Host (HostRouter), the website routes (WebsiteRoutes), the HTTP-01 challenges of ACME (ChallengeRoutes), the metrics and the access log of every distribution. |
|
transport/http/httpx
Package httpx holds the HTTP helpers shared by every transport: response encoding (XML, JSON, problem+json, S3 errors), the S3 error table, request-id generation and x-amz-* header helpers.
|
Package httpx holds the HTTP helpers shared by every transport: response encoding (XML, JSON, problem+json, S3 errors), the S3 error table, request-id generation and x-amz-* header helpers. |
|
transport/http/middleware
Package middleware defines the Middleware contract and the cross-cutting HTTP middlewares: request ids, panic recovery, logging, CORS, metrics, authentication and body limits.
|
Package middleware defines the Middleware contract and the cross-cutting HTTP middlewares: request ids, panic recovery, logging, CORS, metrics, authentication and body limits. |
|
transport/http/s3
Package s3 implements the S3 API transport.
|
Package s3 implements the S3 API transport. |
|
transport/http/server
Package server implements the HTTP server service: it owns the listener, optional TLS, HTTP/2, graceful shutdown and the chi router on which the registered Routes and Middlewares are mounted.
|
Package server implements the HTTP server service: it owns the listener, optional TLS, HTTP/2, graceful shutdown and the chi router on which the registered Routes and Middlewares are mounted. |
|
transport/rpc
Package rpc is the internode transport of a distributed deployment (docs/03 §3.4): HTTP/2 on the S3 port under Prefix (cleartext h2c, or TLS when the server has certificates), msgpack bodies, binary streams with framing and checksums for the data, and short-lived HS256 JWTs signed with a key derived from the root credentials and the deployment id.
|
Package rpc is the internode transport of a distributed deployment (docs/03 §3.4): HTTP/2 on the S3 port under Prefix (cleartext h2c, or TLS when the server has certificates), msgpack bodies, binary streams with framing and checksums for the data, and short-lived HS256 JWTs signed with a key derived from the root credentials and the deployment id. |
|
transport/rpc/rpctest
Package rpctest runs a distributed deployment inside the test process: N nodes on 127.0.0.1 with their own port, drives in a temporary directory, internode RPC over cleartext HTTP/2 and the cluster services (bootstrap, distributed locks, notifier, leader, info) wired like the composition root wires them.
|
Package rpctest runs a distributed deployment inside the test process: N nodes on 127.0.0.1 with their own port, drives in a temporary directory, internode RPC over cleartext HTTP/2 and the cluster services (bootstrap, distributed locks, notifier, leader, info) wired like the composition root wires them. |
|
version
Package version exposes the build information injected at link time with -ldflags "-X github.com/r3n3r0/nexo/internal/version.Version=...".
|
Package version exposes the build information injected at link time with -ldflags "-X github.com/r3n3r0/nexo/internal/version.Version=...". |
|
pkg
|
|
|
nexoadmin
Package nexoadmin is the Go client of the Nexo Admin API (/api/v1, documented by api/openapi.yaml).
|
Package nexoadmin is the Go client of the Nexo Admin API (/api/v1, documented by api/openapi.yaml). |
|
sdk
|
|
|
js
Package jssdk embeds the browser files of the JavaScript SDK of Nexo (sdk/js/src), which the S3 listener serves under /nexo/media/sdk/ for the pages that load it without a bundler.
|
Package jssdk embeds the browser files of the JavaScript SDK of Nexo (sdk/js/src), which the S3 listener serves under /nexo/media/sdk/ for the pages that load it without a bundler. |
|
test
|
|
|
cluster
Package cluster holds the multi-process cluster tests of Nexo (docs/06 §6.3, TC-*): every test builds a deployment of several bin/nexo processes on 127.0.0.1, each on its own S3 and console ports with its drives in a temporary directory, and drives it through real clients (aws-sdk-go-v2 and the Admin API client) while it stops, pauses, kills and restarts the processes.
|
Package cluster holds the multi-process cluster tests of Nexo (docs/06 §6.3, TC-*): every test builds a deployment of several bin/nexo processes on 127.0.0.1, each on its own S3 and console ports with its drives in a temporary directory, and drives it through real clients (aws-sdk-go-v2 and the Admin API client) while it stops, pauses, kills and restarts the processes. |
|
compose
Package compose holds the tests of the Docker Compose deployments of deploy/docker (docs/08 §8.6): TM-06 (a container of the cluster stopped under load: no client error) and TM-09 (presigned and share links generated behind the nginx load balancer, downloaded from outside).
|
Package compose holds the tests of the Docker Compose deployments of deploy/docker (docs/08 §8.6): TM-06 (a container of the cluster stopped under load: no client error) and TM-09 (presigned and share links generated behind the nginx load balancer, downloaded from outside). |
|
proxy
Package proxy holds the tests of Nexo behind several reverse proxies (docs/10 §10.2 "Behind one or more proxies", §10.6 TCD-01..03, docs/11 §11.12 TCC-C-05, docs/09 TPS-19 on the custom domains of the distributions).
|
Package proxy holds the tests of Nexo behind several reverse proxies (docs/10 §10.2 "Behind one or more proxies", §10.6 TCD-01..03, docs/11 §11.12 TCC-C-05, docs/09 TPS-19 on the custom domains of the distributions). |
|
upgrade
Package upgrade holds the upgrade tests of Nexo (docs/05 T-9.8, docs/06 §6.1): the release under test takes over the drives written by the release before it, and the release before it may take them back.
|
Package upgrade holds the upgrade tests of Nexo (docs/05 T-9.8, docs/06 §6.1): the release under test takes over the drives written by the release before it, and the release before it may take them back. |
|
Package web embeds the compiled React console into the server binary when built with the "embedui" tag.
|
Package web embeds the compiled React console into the server binary when built with the "embedui" tag. |
Click to show internal directories.
Click to hide internal directories.














