Cette rubrique présente les fonctions utilitaires disponibles dans EdgeScript : encodage et décodage, génération de nombres aléatoires, sommes de contrôle, conversion de types et génération d'identifiants uniques.
Encodage et décodage Base64
EdgeScript propose deux variantes de Base64 : le Base64 standard (base64_enc / base64_dec) et le Base64 sécurisé pour les URL (base64_enc_safe / base64_dec_safe). Privilégiez la variante standard pour l'encodage général. Utilisez la variante sécurisée lorsque la chaîne encodée apparaît dans des URL ou des en-têtes HTTP.
base64_enc
Encode une chaîne au format Base64 standard.
Syntaxe
base64_enc(s [, no_padding])
Paramètres
|
Paramètre |
Description |
|
|
La chaîne à encoder. |
|
|
Indique s'il faut omettre les caractères de remplissage. Définissez ce paramètre sur |
Valeur de retour
Renvoie une chaîne encodée en Base64.
Exemple
if $http_data {
decdata = base64_dec($http_data)
say(concat('base64_decdata=', decdata))
say(concat('base64_encdata=', base64_enc('hello, dsl')))
}
En-tête de requête : data: aGVsbG8sIGRzbA==
Sortie :
base64_decdata=hello, dsl
base64_encdata=aGVsbG8sIGRzbA==
base64_dec
Décode une chaîne encodée en Base64.
Syntaxe
base64_dec(s)
Paramètres
|
Paramètre |
Description |
|
|
La chaîne encodée en Base64 à décoder. |
Valeur de retour
Renvoie la chaîne brute décodée.
Exemple
if $http_data {
decdata = base64_dec($http_data)
say(concat('base64_decdata=', decdata))
say(concat('base64_encdata=', base64_enc('hello, dsl')))
}
En-tête de requête : data: aGVsbG8sIGRzbA==
Sortie :
base64_decdata=hello, dsl
base64_encdata=aGVsbG8sIGRzbA==
base64_enc_safe
Encode une chaîne au format Base64 sécurisé pour les URL. Dans la sortie, le caractère + est remplacé par -, le caractère / est remplacé par _ et les caractères de remplissage = sont supprimés.
Syntaxe
base64_enc_safe(str)
Paramètres
|
Paramètre |
Description |
|
|
La chaîne à encoder. |
Valeur de retour
Renvoie une chaîne encodée en Base64 sécurisé pour les URL.
Exemple
add_rsp_header('X-RESPOND-OUTPUT', concat('base64_enc_safe=', base64_enc_safe('hello, dsl')), true)
En-tête de réponse :
X-RESPOND-OUTPUT: base64_enc_safe=aGVsbG8sIGRzbA
base64_dec_safe
Décode une chaîne encodée en Base64 sécurisé pour les URL. Avant le décodage, le caractère - est remplacé par + et le caractère _ est remplacé par /. Les caractères de remplissage (=) sont ajoutés si nécessaire pour que la longueur de la chaîne soit un multiple de quatre.
Syntaxe
base64_dec_safe(str)
Paramètres
|
Paramètre |
Description |
|
|
La chaîne encodée en Base64 sécurisé pour les URL à décoder. |
Valeur de retour
Renvoie la chaîne brute décodée.
Exemple
add_rsp_header('X-RESPOND-OUTPUT', concat('base64_dec_safe=', base64_dec_safe(base64_enc_safe('hello, dsl'))), true)
En-tête de réponse :
X-RESPOND-OUTPUT: base64_dec_safe=hello, dsl
Encodage et décodage d'URL
url_escape
Encode une chaîne au format URL (percent-encoding).
Syntaxe
url_escape(s)
Paramètres
|
Paramètre |
Description |
|
|
La chaîne à encoder. |
Valeur de retour
Renvoie une chaîne encodée pour les URL.
Exemple
raw = '/abc/123/ dd/file.m3u8'
esdata = url_escape(raw)
dsdata = url_unescape(esdata)
if eq(raw, dsdata) {
say(concat('raw=', raw))
say(concat('dsdata=', dsdata))
}
Sortie :
raw=/abc/123/ dd/file.m3u8
esdata=%2Fabc%2F123%2F%20dd%2Ffile.m3u8
dsdata=/abc/123/ dd/file.m3u8
url_unescape
Décode une chaîne encodée pour les URL.
Syntaxe
url_unescape(s)
Paramètres
|
Paramètre |
Description |
|
|
La chaîne encodée pour les URL à décoder. |
Valeur de retour
Renvoie la chaîne brute décodée.
Exemple
raw = '/abc/123/ dd/file.m3u8'
esdata = url_escape(raw)
dsdata = url_unescape(esdata)
if eq(raw, dsdata) {
say(concat('raw=', raw))
say(concat('dsdata=', dsdata))
}
Sortie :
raw=/abc/123/ dd/file.m3u8
esdata=%2Fabc%2F123%2F%20dd%2Ffile.m3u8
dsdata=/abc/123/ dd/file.m3u8
Génération de nombres aléatoires
randomseed
Initialise le générateur de nombres aléatoires. Appelez cette fonction avant rand afin de garantir des séquences aléatoires différentes pour chaque requête.
Syntaxe
randomseed()
Paramètres
Aucun.
Valeur de retour
Aucune.
Exemple
randomseed()
r = rand(1, 100)
rand
Renvoie un nombre aléatoire compris dans une plage spécifiée (bornes incluses).
Syntaxe
rand(n1, n2)
Paramètres
|
Paramètre |
Description |
|
|
La borne inférieure. |
|
|
La borne supérieure. |
La valeur renvoyée respecte la condition n1 <= result <= n2.
Valeur de retour
Renvoie un nombre aléatoire.
Exemple
r = rand(1, 100)
rand_hit
Renvoie true ou false selon la probabilité spécifiée. Cette fonction permet de mettre en œuvre une répartition du trafic ou un déploiement progressif de fonctionnalités basé sur un pourcentage.
Syntaxe
rand_hit(ratio)
Paramètres
|
Paramètre |
Description |
|
|
La probabilité de renvoyer |
Valeur de retour
Renvoie true ou false.
Exemple
rand_hit(80)
rand_bytes
Génère une chaîne numérique aléatoire de la longueur spécifiée.
Syntaxe
rand_bytes(len)
Paramètres
|
Paramètre |
Description |
|
|
La longueur de la chaîne numérique aléatoire à générer. |
Valeur de retour
Renvoie la chaîne numérique aléatoire générée.
Exemple
rand_bytes(16)
Somme de contrôle
crc
Calcule la valeur de contrôle de redondance cyclique (CRC) d'une chaîne.
Syntaxe
crc(s)
Paramètres
|
Paramètre |
Description |
|
|
La chaîne pour laquelle calculer la valeur CRC. |
Valeur de retour
Renvoie la valeur CRC de la chaîne d'entrée.
Exemple
crc('hello edgescript')
Conversion de type
tonumber
Convertit une chaîne en type numérique.
Syntaxe
tonumber(s [, base])
Paramètres
|
Paramètre |
Description |
|
|
La chaîne à convertir. |
|
|
La base utilisée pour la conversion numérique. Valeurs valides : |
Valeur de retour
Renvoie un nombre.
Exemple
n = tonumber('100')
say(concat('tonumber()=', n))
Sortie :
tonumber()=100
Identifiant unique
uuid
Renvoie une chaîne UUID générée de manière aléatoire.
Syntaxe
uuid()
Paramètres
Aucun.
Valeur de retour
Renvoie une chaîne UUID. Exemple : 16903a86-4173-4dea-842c-926c5860fe05.
Exemple
say(uuid())
Sortie :
16903a86-4173-4dea-842c-926c5860fe05