Aller au contenu

uuid: Liens FFI LuaJIT pour libuuid, une bibliothèque d'identifiants universels uniques compatible DCE

Installation

Si vous n'avez pas configuré l'abonnement au dépôt RPM, inscrivez-vous. Ensuite, vous pouvez procéder avec les étapes suivantes.

CentOS/RHEL 7 ou Amazon Linux 2

yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-uuid

CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-uuid

Pour utiliser cette bibliothèque Lua avec NGINX, assurez-vous que nginx-module-lua est installé.

Ce document décrit lua-resty-uuid v1.2.0 publié le 07 mai 2026.


Liens FFI LuaJIT pour libuuid — une bibliothèque d'identifiants universels uniques (UUID/GUID) compatible DCE. Génère des UUID v1 (temps), v4 (aléatoire), v6 (temps réordonné) et v7 (époque Unix), plus analyse et inspecte les chaînes UUID existantes.

Démarrage rapide

local uuid = require "resty.uuid"

uuid.generate()         --> "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
uuid.generate_random()  --> "550e8400-e29b-41d4-a716-446655440000"  (v4)
uuid.generate_time()    --> "..."                                   (v1)
uuid.generate_time_v6() --> "..."                                   (v6)
uuid.generate_time_v7() --> "..."                                   (v7)

uuid()                  --> raccourci pour uuid.generate()

uuid.is_valid("not-a-uuid")  --> false
uuid.type(some_v4_id)        --> 4
uuid.variant(some_id)        --> 1   (DCE)
uuid.time(some_v1_id)        --> 1714867200, 123456

API

Le module est une table qui est également appelable. Appeler uuid() est un raccourci pour uuid.generate().

Générateurs

Fonction Retourne Description
uuid.generate() string Meilleur générateur disponible sur l'hôte (aléatoire si possible, sinon basé sur le temps).
uuid.generate_random() string UUID version 4 (aléatoire).
uuid.generate_time() string UUID version 1 (timestamp + identifiant de nœud).
uuid.generate_time_safe() string, boolean UUID version 1 et un indicateur indiquant si la génération a été synchronisée pour l'unicité.
uuid.generate_time_v6() string UUID version 6 — champs v1 réordonnés pour la triabilité lexicale.
uuid.generate_time_v7() string UUID version 7 — timestamp Unix en millisecondes + queue aléatoire.

Tous les générateurs retournent la forme hexadécimale canonique de 36 caractères 8-4-4-4-12, par exemple "f81d4fae-7dec-11d0-a765-00a0c91e6bf6".

Inspection

Fonction Retourne Description
uuid.is_valid(id) boolean Indique si id est un UUID valide.
uuid.type(id) int ou nil Version UUID (UUID_TYPE_* constant), ou nil si invalide.
uuid.variant(id) int ou nil Variante UUID (UUID_VARIANT_* constant), ou nil si invalide.
uuid.time(id) number, number ou nil Secondes depuis l'époque Unix et microsecondes dans cette seconde ; nil si id n'est pas un UUID valide. Significatif uniquement pour v1, v6 et v7.

Référence des constantes

uuid.type retourne l'un des :

Valeur Constante Signification
1 UUID_TYPE_DCE_TIME Basé sur le temps (v1)
2 UUID_TYPE_DCE_SECURITY Sécurité DCE (v2)
3 UUID_TYPE_DCE_MD5 Basé sur le nom MD5 (v3)
4 UUID_TYPE_DCE_RANDOM Aléatoire (v4)
5 UUID_TYPE_DCE_SHA1 Basé sur le nom SHA-1 (v5)
6 UUID_TYPE_DCE_TIME_V6 Temps réordonné (v6)
7 UUID_TYPE_DCE_TIME_V7 Temps d'époque Unix (v7)

uuid.variant retourne l'un des :

Valeur Constante Signification
0 UUID_VARIANT_NCS Héritage NCS / Apollo
1 UUID_VARIANT_DCE DCE 1.1 / RFC 4122
2 UUID_VARIANT_MICROSOFT GUID Microsoft
3 UUID_VARIANT_OTHER Réservé

Tests

make test          # pipeline complet : installer rock, exécuter busted, couverture, lint
make unit          # uniquement busted
make coverage      # rapport busted + luacov
make lint          # luacheck

Les tests se trouvent dans spec/ et exercent chaque fonction publique ainsi que le métaméthode __call.

Documentation

La référence API est construite avec LDoc et se trouve sous docs/ :

make docs

GitHub

Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-uuid.