AnglaisFrançaisEspagnol

Ad


Icône de favori OnWorks

haproxy-lua - En ligne dans le Cloud

Exécutez haproxy-lua dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande haproxy-lua qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

Nom


haproxy-lua - Documentation haproxy-lua

HAPROXIE MOON RUNNING CONTEXTES


Le code Lua exécuté dans HAProxy peut être traité selon 2 modes principaux. Le premier est le
initialisation mode, et le second est le d'exécution mode.

· Dans le initialisation mode, nous pouvons effectuer des résolutions DNS, mais nous ne pouvons pas effectuer d'E/S de socket.
Dans ce mode d'initialisation, HAProxy toujours bloqué lors de l'exécution de la Lua
.

· Dans le d'exécution mode, nous ne pouvons pas effectuer de résolutions DNS, mais nous pouvons utiliser des sockets. Les
l'exécution du code Lua est multiplexée avec le traitement des requêtes, donc le code Lua
semble fonctionner en bloquant, mais ce n'est pas le cas.

Le code Lua est chargé dans un ou plusieurs fichiers. Ces fichiers contiennent le code principal et les fonctions.
Lua a 6 contextes d'exécution.

1. Le fichier Lua corps contexte. Il est exécuté lors du chargement du fichier Lua dans le
HAProxy [global] section avec la directive lua-charge. Il est exécuté en initialisation
mode. Cette section est utilisée pour configurer les liaisons Lua dans HAProxy.

2. Le Lua init contexte. C'est une fonction Lua exécutée juste après le HAProxy
analyse de configuration. L'exécution est en mode d'initialisation. Dans ce contexte le
L'environnement HAProxy est déjà initialisé. Il est utile de vérifier la configuration, ou
l'initialisation des connexions de socket ou des tâches. Ces fonctions sont déclarées dans le corps
contexte avec la fonction Lua core.register_init(). Le prototype de la fonction est un
fonction simple sans valeur de retour et sans paramètres, comme ceci : fonction fcn().

3. Le Lua tâche contexte. C'est une fonction Lua exécutée après le démarrage du HAProxy
scheduler, et juste après la déclaration de la tâche avec la fonction Lua
core.register_task(). Ce contexte peut être concomitant au traitement du trafic. Il est
exécuté en mode d'exécution. Le prototype de la fonction est une fonction simple sans
valeur de retour et sans paramètres, comme ceci : fonction fcn().

4. le action contexte. C'est une fonction Lua exécutée de manière conditionnelle. Ces actions sont
enregistré par les directives Lua "core.register_action()". Le prototype de la Lua
fonction appelée est une fonction qui ne renvoie rien et qui prend un objet de
classe TXN comme entrée. fonction fcn(txn).

5. le extrait-récupérer contexte. Cette fonction prend un objet TXN comme argument d'entrée et
renvoie une chaîne. Ces types de fonction ne peuvent exécuter aucune fonction de blocage. Ils
sont utiles pour agréger certains des extraits d'échantillons HAProxy d'origine et renvoyer le résultat.
Le prototype de la fonction est fonction un magnifique fcn(txn). Ces fonctions peuvent être
enregistré avec la fonction Lua core.register_fetches(). Chaque prélèvement d'échantillon déclaré est
préfixé par la chaîne "lua.".

REMARQUE: Il est possible que cette fonction ne trouve pas les données requises dans l'original
L'échantillon HAProxy récupère, dans ce cas, il ne peut pas renvoyer le résultat. Cette affaire n'est pas encore
soutenu

6. le convertisseur contexte. C'est une fonction Lua qui prend une chaîne en entrée et renvoie
une autre chaîne en sortie. Ces types de fonction sont sans état, il ne peut pas accéder à
n'importe quel contexte. Ils n'exécutent aucune fonction de blocage. Le prototype d'appel est fonction
un magnifique fcn(chaîne). Cette fonction peut être enregistrée avec la fonction Lua
core.register_converters(). Chaque convertisseur déclaré est préfixé par la chaîne "lua.".

HAPROXIE MOON SALUT MONDE


Fichier de configuration HAProxy (bonjour_monde.conf):

de défis
lua-load hello_world.lua

écouter proxy
lier 127.0.0.1:10001
tcp-request inspecter-délai 1s
tcp-request content use-service lua.hello_world

Fichier HAProxy Lua (hello_world.lua):

core.register_service("hello_world", "tcp", fonction(applet)
applet:send("bonjour tout le monde\n")
fin)

Comment démarrer HAProxy pour tester cette configuration :

./haproxy -f bonjour_monde.conf

Sur un autre terminal, vous pouvez tester avec telnet :

# :~ telnet 127.0.0.1 10001
bonjour tout le monde

classe coeur()
La classe "core" contient toutes les fonctions principales de HAProxy. Ces fonctions sont utiles
pour le contrôle du flux d'exécution, l'enregistrement des crochets, la manipulation des cartes globales
ou ACL, ...

La classe "core" est essentiellement fournie avec HAProxy. Non exigent la ligne est nécessaire pour
utilise ces fonctions.

La classe "core" est statique, il n'est pas possible de créer un nouvel objet de ce type.

core.emerg

Retours
entier

Cet attribut est un entier, il contient la valeur du niveau de log "emergency"
(0).

core.alerte

Retours
entier

Cet attribut est un entier, il contient la valeur du loglevel "alert" (1).

core.crit

Retours
entier

Cet attribut est un entier, il contient la valeur du niveau de log "critical" (2).

core.err

Retours
entier

Cet attribut est un entier, il contient la valeur du loglevel "error" (3).

noyau.avertissement

Retours
entier

Cet attribut est un entier, il contient la valeur du niveau de log "warning" (4).

avis de base

Retours
entier

Cet attribut est un entier, il contient la valeur du niveau de log "notice" (5).

core.info

Retours
entier

Cet attribut est un entier, il contient la valeur du niveau de log "info" (6).

core.debug

Retours
entier

Cet attribut est un entier, il contient la valeur du niveau de log "debug" (7).

core.log(niveau de log, message)
contexte: corps, initialisation, tâche, action, récupération d'échantillon, convertisseur

Cette fonction envoie un journal. Le log est envoyé, selon le HAProxy
fichier de configuration, sur le serveur syslog par défaut s'il est configuré et sur le
stderr si cela est autorisé.

Arguments

· loglevel (entier) -- Le niveau de journalisation est-il associé au message. C'est un
nombre entre 0 et 7.

· msg (un magnifique) -- Le contenu du journal.

See core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (définitions au niveau du journal)

See code.Debug

See core.Info

See noyau.Avertissement

See core.Alerte

core.Debug(messages)
contexte: corps, initialisation, tâche, action, récupération d'échantillon, convertisseur

Arguments

· msg (un magnifique) -- Le contenu du journal.

See enregistrer

Fait le même travail que :

fonction Déboguer(messages)
core.log(core.debug, msg)
fin

core.Info(messages)
contexte: corps, initialisation, tâche, action, récupération d'échantillon, convertisseur

Arguments

· msg (un magnifique) -- Le contenu du journal.

See enregistrer

fonction Info(messages)
core.log(core.info, msg)
fin

noyau.Avertissement(messages)
contexte: corps, initialisation, tâche, action, récupération d'échantillon, convertisseur

Arguments

· msg (un magnifique) -- Le contenu du journal.

See enregistrer

fonction (messages)
core.log(core.warning, msg)
fin

core.Alerte(messages)
contexte: corps, initialisation, tâche, action, récupération d'échantillon, convertisseur

Arguments

· msg (un magnifique) -- Le contenu du journal.

See enregistrer

fonction Alerte(messages)
core.log(core.alert, msg)
fin

core.add_acl(nom de fichier, clé)
contexte: init, tâche, action, extraction d'échantillon, convertisseur

Ajouter l'ACL key dans la liste des ACL référencée par le fichier nom de fichier.

Arguments

· nom de fichier (un magnifique) -- le nom de fichier qui fait référence aux entrées ACL.

· key (un magnifique) -- la clé qui sera ajoutée.

core.del_acl(nom de fichier, clé)
contexte: init, tâche, action, extraction d'échantillon, convertisseur

Supprimer l'entrée ACL référencée par la clé key dans la liste des ACL référencées par
nom de fichier.

Arguments

· nom de fichier (un magnifique) -- le nom de fichier qui fait référence aux entrées ACL.

· key (un magnifique) -- la clé qui sera supprimée.

core.del_map(nom de fichier, clé)
contexte: init, tâche, action, extraction d'échantillon, convertisseur

Supprimer l'entrée de carte indexée avec la clé spécifiée dans la liste des cartes référencées
par son nom de fichier.

Arguments

· nom de fichier (un magnifique) -- le nom de fichier qui fait référence aux entrées de la carte.

· key (un magnifique) -- la clé qui sera supprimée.

core.msleep(millisecondes)
contexte: corps, init, tâche, action

La core.msleep() arrête l'exécution de Lua entre les millisecondes spécifiées.

Arguments

· millisecondes (entier) -- les millisecondes requises.

core.register_action(nom, Actions, fonction)
contexte: corps

Enregistrez une fonction Lua exécutée en tant qu'action. Toutes les actions enregistrées peuvent être utilisées
dans HAProxy avec le préfixe "lua.". Une action obtient une classe d'objet TXN en entrée.

Arguments

· prénom (un magnifique) -- est le nom du convertisseur.

· actes (table) -- est un tableau de chaînes décrivant les actions HAProxy qui
souhaitez vous inscrire. Les actions attendues sont 'tcp-req', 'tcp-res',
'http-req' ou 'http-res'.

· fonction (fonction) -- est la fonction Lua appelée pour fonctionner comme convertisseur.

Le prototype de la fonction Lua utilisé comme argument est :

fonction (txn)

·

txn (TXN classe): this is a TXN objet d'utiliser en manipuler le
requête actuelle ou flux TCP.

Ici, un exemple d'enregistrement d'action. l'action envoie juste un 'Hello world' dans le
journaux.

core.register_action("hello-world", { "tcp-req", "http-req" }, function(txn)
txn:Info("Bonjour tout le monde")
fin)
Cet exemple de code est utilisé dans la configuration HAproxy comme ceci :

tcp_frt
mode TCP
contenu de demande TCP lua.hello-world

interface http_frt
http
http-requête lua.hello-world

core.register_converters(nom, fonction)
contexte: corps

Enregistrez une fonction Lua exécutée en tant que convertisseur. Tous les convertisseurs enregistrés peuvent être
utilisé dans HAProxy avec le préfixe "lua.". Un convertisseur obtient une chaîne en entrée et
renvoie une chaîne en sortie. La fonction enregistrée peut prendre jusqu'à 9 valeurs comme
paramètre. Toutes les valeurs sont des chaînes.

Arguments

· prénom (un magnifique) -- est le nom du convertisseur.

· fonction (fonction) -- est la fonction Lua appelée pour fonctionner comme convertisseur.

Le prototype de la fonction Lua utilisé comme argument est :

fonction(str, [p1 [, p2 [, ... [, p5]]]])

· str (un magnifique) : il s'agit de la valeur d'entrée convertie automatiquement en chaîne.

· p1 .. p5 (un magnifique): c'est une liste d'arguments de chaîne déclarés dans le haroxy
fichier de configuration. Le nombre d'arguments ne dépasse pas 5. L'ordre et le
la nature de ceux-ci est classiquement choisie par le développeur.

core.register_fetches(nom, fonction)
contexte: corps

Enregistrez une fonction Lua exécutée comme extraction d'échantillon. Tous les extraits d'échantillons enregistrés
peut être utilisé dans HAProxy avec le préfixe "lua.". Une extraction d'échantillon Lua renvoie une chaîne
comme sortie. La fonction enregistrée peut prendre jusqu'à 9 valeurs en paramètre. Tous les
valeur sont des chaînes.

Arguments

· prénom (un magnifique) -- est le nom du convertisseur.

· fonction (fonction) -- est la fonction Lua appelée pour fonctionner comme récupération d'échantillon.

Le prototype de la fonction Lua utilisé comme argument est :

fonction chaîne(txn, [p1 [, p2 [, ... [, p5]]]])

· txn (TXN classe) : c'est l'objet txn associé à la requête en cours.

· p1 .. p5 (un magnifique): c'est une liste d'arguments de chaîne déclarés dans le haroxy
fichier de configuration. Le nombre d'arguments ne dépasse pas 5. L'ordre et le
la nature de ceux-ci est classiquement choisie par le développeur.

· Retours: Une chaîne contenant des données, ot nil si la valeur ne peut pas être retournée maintenant.

Exemple de code lua :

core.register_fetches("bonjour", fonction(txn)
retour "bonjour"
fin)
Exemple de configuration HAProxy :

exemple d'interface
Emplacement de redirection http-requête /%[lua.hello]

core.register_service(nom, Mode, fonction)
contexte: corps

Enregistrez une fonction Lua exécutée en tant que service. Tous les services enregistrés peuvent être
utilisé dans HAProxy avec le préfixe "lua.". Un service obtient une classe d'objets en entrée
selon le mode requis.

Arguments

· prénom (un magnifique) -- est le nom du convertisseur.

· mode (un magnifique) -- est une chaîne décrivant le mode requis. Seulement 'tcp' ou
'http' sont autorisés.

· fonction (fonction) -- est la fonction Lua appelée pour fonctionner comme convertisseur.

Le prototype de la fonction Lua utilisé comme argument est :

fonction (applet)

· Applet Applet sera un AppletTCP classe ou AppletHTTP classe. ça dépend du genre
de l'applet enregistré. Une applet enregistrée avec la valeur 'http' pour le mode
paramètre obtiendra un AppletHTTP classe. Si l' mode la valeur est 'tcp', l'applet
Obtient un AppletTCP classe.

avertissement: Les applets de type 'http' ne peuvent pas être appelées depuis 'tcp-' ensembles de règles. Seulement le 'http-'
les ensembles de règles sont autorisés, cela signifie qu'il n'est pas possible d'appeler une applet HTTP à partir d'un
proxy en mode tcp. Les applets de type 'tcp' peuvent être appelées de n'importe où.

Ici, un exemple d'inscription au service. le service envoie simplement un « Hello world » en tant que
réponse http.

core.register_service("hello-world", "http", fonction(applet)
réponse locale = "Hello World !"
applet :set_status(200)
applet:add_header("content-length", string.len(response))
applet:add_header("content-type", "text/plain")
applet : start_response()
applet:envoyer (réponse)
fin)
Cet exemple de code est utilisé dans la configuration HAproxy comme ceci :

exemple d'interface
requête http utilisation-service lua.hello-world

core.register_init(fonc)
contexte: corps

Enregistrez une fonction exécutée après l'analyse de la configuration. Ceci est utile pour
vérifier tous les paramètres.

Arguments

· fonction (fonction) -- est la fonction Lua appelée pour fonctionner comme initialiseur.

Le prototype de la fonction Lua utilisé comme argument est :

une fonction()
Il ne prend aucune entrée et aucune sortie n'est attendue.

core.register_task(fonc)
contexte: corps, initialisation, tâche, action, récupération d'échantillon, convertisseur

Enregistrez-vous et démarrez une tâche indépendante. La tâche est démarrée lorsque le HAProxy main
le planificateur démarre. Par exemple, ce type de tâches peut être exécuté pour effectuer des tâches complexes
bilans de santé.

Arguments

· fonction (fonction) -- est la fonction Lua appelée pour fonctionner comme initialiseur.

Le prototype de la fonction Lua utilisé comme argument est :

une fonction()
Il ne prend aucune entrée et aucune sortie n'est attendue.

core.set_nice(sympa)
contexte: tâche, action, extraction d'échantillon, convertisseur

Changer le nice de la tâche ou de la session en cours.

Arguments

· agréable (entier) -- la valeur sympa, elle doit être comprise entre -1024 et 1024.

core.set_map(nom de fichier, clé, valeur)
contexte: init, tâche, action, extraction d'échantillon, convertisseur

définir la valeur Plus-value associé à la clé key sur la carte référencée par nom de fichier.

Arguments

· nom de fichier (un magnifique) -- la référence de la carte

· key (un magnifique) -- la clé pour régler ou remplacer

· Plus-value (un magnifique) -- la valeur associée

core.sleep(entier secondes)
contexte: corps, init, tâche, action

La core.sleep() Les fonctions arrêtent l'exécution de Lua entre les secondes spécifiées.

Arguments

· secondes (entier) -- les secondes requises.

core.tcp()
contexte: init, tâche, action

Cette fonction renvoie un nouvel objet d'un douille classe.

Retours
A Douille classe objet.

core.done(données)
contexte: corps, initialisation, tâche, action, récupération d'échantillon, convertisseur

Arguments

· données (tous) -- Renvoie des données pour l'appelant. C'est utile avec
extraits d'échantillons et convertisseurs d'échantillons.

Arrête immédiatement l'exécution Lua en cours et revient à l'appelant qui peut être
une extraction d'échantillon, un convertisseur ou une action et renvoie la valeur spécifiée (ignorée
pour les actes). Il est utilisé lorsque le processus LUA termine son travail et veut donner
remettez le contrôle à HAProxy sans exécuter le code restant. Il peut être vu comme
un "retour" à plusieurs niveaux.

core.rendement()
contexte: tâche, action, extraction d'échantillon, convertisseur

Rendre la main au planificateur HAProxy. Il est utilisé lorsque le traitement LUA
consomme beaucoup de temps de traitement.

classe Extractions()
Cette classe contient de nombreux extraits d'échantillons HAProxy internes. Voir le HAProxy
la documentation "configuration.txt" pour plus d'informations sur son utilisation. elles sont
les chapitres 7.3.2 à 7.3.6.

avertissement certains exemples de récupération ne sont pas disponibles dans certains contextes. Ces limites
sont spécifiés dans cette documentation lorsqu'ils sont utiles.

See TXN.f

See TXN.sf

Les récupérations sont utiles pour :

· obtenir l'heure système,

· obtenir la variable d'environnement,

· obtenir des nombres aléatoires,

· statut backend connu comme le nombre d'utilisateurs en file d'attente ou le nombre de
connexions établies,

· des informations client telles que la source ou la destination IP,

· s'occuper des tables de bâton,

· Informations SSL établies,

· Informations HTTP comme les en-têtes ou la méthode.

fonction action (txn)
-- Obtenir l'IP source
ip client local = txn.f:src()
fin

classe Convertisseurs()
Cette classe contient de nombreux convertisseurs d'échantillons internes HAProxy. Voir le HAProxy
documentation "configuration.txt" pour plus d'informations sur son utilisation. C'est le
chapitre 7.3.1.

See TXN.c

See TXN.sc

Les convertisseurs fournissent une transformation avec état. Ils sont utiles pour :

· convertir l'entrée en base64,

· appliquer un hachage sur la chaîne d'entrée (djb2, crc32, sdbm, wt6),

· formater la date,

· json évasion,

· extraction de la langue préférée en comparant deux listes,

· tourner vers les caractères inférieurs ou supérieurs,

· s'occuper des tables de bâton.

classe Canaliser()
HAProxy utilise deux tampons pour le traitement des requêtes. Le premier est utilisé
avec les données de la requête (du client au serveur) et la seconde est utilisée pour
les données de réponse (du serveur au client).

Chaque tampon contient deux types de données. Le premier type est les données entrantes en attente
pour un traitement. La deuxième partie correspond aux données sortantes déjà traitées. D'habitude,
les données entrantes sont traitées, après avoir été étiquetées comme données sortantes, et enfin elles
est envoyé. Les fonctions suivantes fournissent des outils pour manipuler ces données dans un
un tampon.

Le diagramme suivant montre où la fonction de classe de canal est appliquée.

: Il n'est pas possible de lire à partir de la réponse dans l'action de requête, et il est
pas possible de lire pour le canal de demande dans l'action de réponse.
[image]

Canal.dup(canal)
Cette fonction renvoie une chaîne qui contient l'intégralité du tampon. Les données ne sont pas
retirer de la mémoire tampon et peut être retraité plus tard.

Si le tampon ne peut pas recevoir plus de données, une valeur « nil » est renvoyée.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

Retours
une chaîne contenant toutes les données disponibles ou nil.

Canal.get(canal)
Cette fonction renvoie une chaîne qui contient l'intégralité du tampon. Les données sont consommées
du tampon.

Si le tampon ne peut pas recevoir plus de données, une valeur « nil » est renvoyée.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

Retours
une chaîne contenant toutes les données disponibles ou nil.

Canal.getline(canal)
Cette fonction renvoie une chaîne qui contient la première ligne du tampon. Les données
est consommé. Si les données renvoyées ne contiennent pas de 'n' final, il est supposé que leur
les dernières données disponibles dans le tampon.

Si le tampon ne peut pas recevoir plus de données, une valeur « nil » est renvoyée.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

Retours
une chaîne contenant la ligne disponible ou nil.

Channel.set(canal, chaîne)
Cette fonction remplace le contenu du buffer par la chaîne. La fonction renvoie
la longueur copiée, sinon, elle renvoie -1.

Les jeux de données avec cette fonction ne sont pas envoyés. Ils attendent la fin de HAProxy
traitement, de sorte que la mémoire tampon peut être pleine.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

· un magnifique (un magnifique) -- Les données qui seront envoyées.

Retours
un entier contenant le nombre d'octets copiés ou -1.

Canal.append(canal, chaîne)
Cette fonction ajoute l'argument chaîne au contenu du tampon. La fonction
renvoie la longueur copiée, sinon, elle renvoie -1.

Les jeux de données avec cette fonction ne sont pas envoyés. Ils attendent la fin de HAProxy
traitement, de sorte que la mémoire tampon peut être pleine.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

· un magnifique (un magnifique) -- Les données qui seront envoyées.

Retours
un entier contenant le nombre d'octets copiés ou -1.

Canal.send(canal, chaîne)
Cette fonction nécessitait l'envoi immédiat des données. Sauf si la connexion est
close, le buffer est vidé régulièrement et toute la chaîne peut être envoyée.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

· un magnifique (un magnifique) -- Les données qui seront envoyées.

Retours
un entier contenant le nombre d'octets copiés ou -1.

Canal.get_in_length(canal)
Cette fonction renvoie la longueur de la partie d'entrée du tampon.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

Retours
un entier contenant le nombre d'octets disponibles.

Canal.get_out_length(canal)
Cette fonction renvoie la longueur de la partie de sortie du tampon.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

Retours
un entier contenant le nombre d'octets disponibles.

Channel.forward(canal, entier)
Cette fonction transfère les octets de la partie entrée du tampon vers la partie sortie.

Arguments

· chaine (classe_canal) -- Le canal manipulé.

· int (entier) -- La quantité de données qui seront transmises.

classe HTTP()
Cette classe contient toutes les fonctions de manipulation HTTP.

HTTP.req_get_headers(http)
Renvoie un tableau contenant tous les en-têtes de requête.

Arguments

· http (classe_http) -- L'objet http associé.

Retours
tableau d'en-têtes.

See HTTP.res_get_headers()

Voici la forme du tableau renvoyé :

HTTP:req_get_headers()[' '][ ] = " "

hdr local = HTTP:req_get_headers()
hdr["hôte"][0] = "www.test.com"
hdr["accepter"][0] = "audio/basique q=1"
hdr["accepter"][1] = "audio/*, q=0.2"
hdr["accepter"][2] = "*/*, q=0.1"

HTTP.res_get_headers(http)
Renvoie un tableau contenant tous les en-têtes de réponse.

Arguments

· http (classe_http) -- L'objet http associé.

Retours
tableau d'en-têtes.

See HTTP.req_get_headers()

Voici la forme du tableau renvoyé :

HTTP:res_get_headers()[' '][ ] = " "

hdr local = HTTP:req_get_headers()
hdr["hôte"][0] = "www.test.com"
hdr["accepter"][0] = "audio/basique q=1"
hdr["accepter"][1] = "audio/*, q=0.2"
hdr["accepter"][2] = "*.*, q=0.1"

HTTP.req_add_header(http, prénom, valeur)
Ajoute un champ d'en-tête HTTP dans la requête dont le nom est spécifié dans "name" et
dont la valeur est définie dans "valeur".

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

· Plus-value (un magnifique) -- La valeur de l'en-tête.

See HTTP.res_add_header()

HTTP.res_add_header(http, prénom, valeur)
ajoute un champ d'en-tête HTTP dans la réponse dont le nom est spécifié dans "nom" et
dont la valeur est définie dans "valeur".

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

· Plus-value (un magnifique) -- La valeur de l'en-tête.

See HTTP.req_add_header()

HTTP.req_del_header(http, prénom)
Supprime tous les champs d'en-tête HTTP dans la requête dont le nom est spécifié dans "nom".

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

See HTTP.res_del_header()

HTTP.res_del_header(http, prénom)
Supprime tous les champs d'en-tête HTTP dans la réponse dont le nom est spécifié dans "nom".

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

See HTTP.req_del_header()

HTTP.req_set_header(http, prénom, valeur)
Cette variable remplace toutes les occurrences de tous les en-têtes "nom", par une seule contenant
la valeur".

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

· Plus-value (un magnifique) -- La valeur de l'en-tête.

See HTTP.res_set_header()

Cette fonction fait le même travail que le code suivant :

fonction fcn(txn)
TXN.http:req_del_header("en-tête")
TXN.http:req_add_header("en-tête", "valeur")
fin

HTTP.res_set_header(http, prénom, valeur)
Cette variable remplace toutes les occurrences de tous les en-têtes "nom", par une seule contenant
la valeur".

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

· Plus-value (un magnifique) -- La valeur de l'en-tête.

See HTTP.req_rep_header()

HTTP.req_rep_header(http, prénom, expression régulière, remplacer)
Correspond à l'expression régulière dans toutes les occurrences du champ d'en-tête "nom" selon
à "regex", et les remplace par l'argument "replace". La valeur de remplacement
peut contenir des références arrière comme 1, 2, ... Cette fonction fonctionne avec la requête.

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

· regex (un magnifique) -- L'expression régulière de correspondance.

· remplacer (un magnifique) -- La valeur de remplacement.

See HTTP.res_rep_header()

HTTP.res_rep_header(http, prénom, expression régulière, chaîne)
Correspond à l'expression régulière dans toutes les occurrences du champ d'en-tête "nom" selon
à "regex", et les remplace par l'argument "replace". La valeur de remplacement
peut contenir des références arrière comme 1, 2, ... Cette fonction fonctionne avec la requête.

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

· regex (un magnifique) -- L'expression régulière de correspondance.

· remplacer (un magnifique) -- La valeur de remplacement.

See HTTP.req_replace_header()

HTTP.req_replace_value(http, prénom, expression régulière, remplacer)
Fonctionne comme "HTTP.req_replace_header()" sauf qu'il correspond à l'expression régulière
chaque valeur délimitée par des virgules du champ d'en-tête "nom" au lieu de l'intégralité
en-tête.

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

· regex (un magnifique) -- L'expression régulière de correspondance.

· remplacer (un magnifique) -- La valeur de remplacement.

See HTTP.req_replace_header()

See HTTP.res_replace_value()

HTTP.res_replace_value(http, prénom, expression régulière, remplacer)
Fonctionne comme "HTTP.res_replace_header()" sauf qu'il correspond à l'expression régulière
chaque valeur délimitée par des virgules du champ d'en-tête "nom" au lieu de l'intégralité
en-tête.

Arguments

· http (classe_http) -- L'objet http associé.

· prénom (un magnifique) -- Le nom de l'en-tête.

· regex (un magnifique) -- L'expression régulière de correspondance.

· remplacer (un magnifique) -- La valeur de remplacement.

See HTTP.res_replace_header()

See HTTP.req_replace_value()

HTTP.req_set_method(http, méthode)
Réécrit la méthode de requête avec le paramètre "method".

Arguments

· http (classe_http) -- L'objet http associé.

· méthode (un magnifique) -- La nouvelle méthode.

HTTP.req_set_path(http, Chemin)
Réécrit le chemin de la requête avec le paramètre "path".

Arguments

· http (classe_http) -- L'objet http associé.

· chemin (un magnifique) -- Le nouveau chemin.

HTTP.req_set_query(http, mettre en doute)
Réécrit la chaîne de requête de la requête qui apparaît après le premier point d'interrogation
("?") avec le paramètre "query".

Arguments

· http (classe_http) -- L'objet http associé.

· question (un magnifique) -- La nouvelle requête.

HTTP.req_set_uri(http, uri)
Réécrit l'URI de la requête avec le paramètre "uri".

Arguments

· http (classe_http) -- L'objet http associé.

· Links (un magnifique) -- Le nouvel uri.

HTTP.res_set_status(http, statut)
Réécrit le code d'état de la réponse avec le paramètre "code". Notez que la raison
est automatiquement adapté au nouveau code.

Arguments

· http (classe_http) -- L'objet http associé.

· statuts (entier) -- Le nouveau code d'état de la réponse.

classe TXN()
La classe txn contient toutes les fonctions relatives à la transaction http ou tcp
(Notez qu'un flux TCP est identique à une transaction TCP, mais une transaction HTTP
n'est pas la même chose qu'un flux tcp).

L'utilisation de cette classe permet de récupérer les données des requêtes, de les modifier et
le transférer.

Toutes les fonctions fournies par cette classe sont disponibles dans le contexte
extraits-échantillons ainsi que actes.

TXN.c

Retours
An Convertisseurs classe.

Cet attribut contient un objet de classe Converters.

TXN.sc

Retours
An Convertisseurs classe.

Cet attribut contient un objet de classe Converters. Les fonctions de cet objet
renvoie toujours une chaîne.

TXN.f

Retours
An Extractions classe.

Cet attribut contient un objet de classe Fetchs.

TXN.sf

Retours
An Extractions classe.

Cet attribut contient un objet de classe Fetchs. Les fonctions de cet objet
renvoie toujours une chaîne.

TXN.req

Retours
An Développement classe.

Cet attribut contient un objet de classe de canal pour le tampon de demande.

TXN.res

Retours
An Développement classe.

Cet attribut contient un objet de classe de canal pour le tampon de réponse.

TXN.http

Retours
An HTTP classe.

Cet attribut contient un objet de classe HTTP. Il n'est disponible que si le proxy a
le "mode http" activé.

TXN.log(TXN, niveau de journalisation, message)
Cette fonction envoie un journal. Le log est envoyé, selon le HAProxy
fichier de configuration, sur le serveur syslog par défaut s'il est configuré et sur le
stderr si cela est autorisé.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· loglevel (entier) -- Le niveau de journalisation est-il associé au message. C'est un
nombre entre 0 et 7.

· msg (un magnifique) -- Le contenu du journal.

See core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (définitions au niveau du journal)

See TXN.deflog

See TXN.Debug

See TXN.Info

See TXN.Avertissement

See Alerte TXN

TXN.deflog(TXN, message)
Envoie une ligne de journal avec le niveau de journalisation par défaut pour le proxy associé au
transaction.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· msg (un magnifique) -- Le contenu du journal.

See TXN.log

TXN.Debug(txn, message)

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· msg (un magnifique) -- Le contenu du journal.

See TXN.log

Fait le même travail que :

fonction Debug (txn, msg)
TXN.log (txn, core.debug, msg)
fin

TXN.Info(txn, message)

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· msg (un magnifique) -- Le contenu du journal.

See TXN.log

fonction Debug (txn, msg)
TXN.log (txn, core.info, msg)
fin

TXN.Avertissement(txn, message)

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· msg (un magnifique) -- Le contenu du journal.

See TXN.log

fonction Debug (txn, msg)
TXN.log(txn, core.warning, msg)
fin

TXN.Alerte(txn, message)

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· msg (un magnifique) -- Le contenu du journal.

See TXN.log

fonction Debug (txn, msg)
TXN.log (txn, core.alert, msg)
fin

TXN.get_priv(txn)
Renvoyer les données Lua stockées dans la transaction en cours (avec le TXN.set_priv())
fonction. Si aucune donnée n'est stockée, elle renvoie une valeur nulle.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

Retours
les données opaques préalablement stockées, ou nulle si rien n'est disponible.

TXN.set_priv(txn, Les données)
Stockez toutes les données dans la transaction HAProxy en cours. Cette action remplace l'ancienne
les données stockées.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· données (opaque) -- Les données qui sont stockées dans la transaction.

TXN.set_var(TXN, il y a, valeur)
Convertit un type Lua en type HAProxy et le stocke dans une variable .

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· var (un magnifique) -- Le nom de la variable selon la variable HAProxy
syntaxe.

· Plus-value (opaque) -- Les données qui sont stockées dans la variable.

TXN.get_var(TXN, var)
Renvoie les données stockées dans le convertisseur de variables de type Lua.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· var (un magnifique) -- Le nom de la variable selon la variable HAProxy
syntaxe.

TXN.get_headers(txn)
Cette fonction renvoie un tableau d'en-têtes.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

Retours
un tableau d'en-têtes.

TXN.fait(txn)
Cette fonction termine le traitement de la transaction et de la session associée.
Il peut être utilisé lorsqu'une erreur critique est détectée ou pour terminer le traitement après
certaines données ont été retournées au client (ex : une redirection).

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

TXN.set_loglevel(txn, niveau de journalisation)
Est utilisé pour modifier le niveau de journalisation de la requête en cours. Le "loglevel" doit être un
entier compris entre 0 et 7.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· loglevel (entier) -- Le niveau de journalisation requis. Cette variable peut être l'une des

See coeur.

TXN.set_tos(txn, tos)
Est utilisé pour définir la valeur du champ TOS ou DSCP des paquets envoyés au client au
valeur passée dans "tos" sur les plates-formes qui le prennent en charge.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· tousser (entier) -- Le nouveau TOS os DSCP.

TXN.set_mark(txn, marque)
Est utilisé pour définir le Netfilter MARK sur tous les paquets envoyés au client à la valeur
passé en "marque" sur les plateformes qui le supportent.

Arguments

· txn (classe_txn) -- L'objet txn de classe contenant les données.

· marque (entier) -- La valeur de la marque.

classe Prise()
Cette classe doit être compatible avec la classe Lua Socket. Seul le "client"
les fonctions sont disponibles. Voir la documentation Lua Socket :

http://w3.impa.br/~diego/software/luasocket/tcp.html

Socket.close(socket)
Ferme un objet TCP. Le socket interne utilisé par l'objet est fermé et le local
l'adresse à laquelle l'objet était lié est rendue disponible pour d'autres applications. Non
d'autres opérations (sauf pour d'autres appels à la méthode close) sont autorisées sur un
Prise fermée.

Arguments

· douille (classe_socket) -- Est le Socket manipulé.

Remarque : il est important de fermer toutes les prises utilisées une fois qu'elles ne sont plus nécessaires, car, dans
de nombreux systèmes, chaque socket utilise un descripteur de fichier, qui est limité au système
Ressources. Les objets récupérés sont automatiquement fermés avant destruction,
cependant.

Socket.connect(prise, adresse[, Port])
Tente de connecter un objet socket à un hôte distant.

En cas d'erreur, la méthode retourne nil suivi d'une chaîne décrivant l'erreur.
En cas de succès, la méthode renvoie 1.

Arguments

· douille (classe_socket) -- Est le Socket manipulé.

· propos (un magnifique) -- peut être une adresse IP ou un nom d'hôte. Voir ci-dessous pour
pour en savoir davantage.

· port (entier) -- doit être un nombre entier compris dans la plage [1..64K].

Retours
1 ou nul.

une extension de champ d'adresse permet d'utiliser la fonction connect() pour se connecter
autre flux que TCP. La syntaxe contenant une adresse simpleipv4 ou ipv6 est la
format essentiellement attendu. Ce format nécessite le port.

Un autre format accepté est un chemin de socket comme "/socket/path", il permet de se connecter
à une prise. les espaces de noms abstraits sont pris en charge avec le préfixe "abns@", et enfin
un filedescriotr peut être passé avec le préfixe "fd@". Le préfixe "ipv4@", "ipv6@"
et "unix@" sont également pris en charge. Le port peut être passé dans la chaîne. La syntaxe
"127.0.0.1:1234" est valide. dans ce cas, le paramètre port est ignoré.

Socket.connect_ssl(prise, adresse, port)
Même comportement que la fonction socket:connect, mais utilise SSL.

Arguments

· douille (classe_socket) -- Est le Socket manipulé.

Retours
1 ou nul.

Socket.getpeername(socket)
Renvoie des informations sur le côté distant d'un objet client connecté.

Renvoie une chaîne avec l'adresse IP de l'homologue, suivie du numéro de port qui
pair utilise pour la connexion. En cas d'erreur, la méthode renvoie nil.

Arguments

· douille (classe_socket) -- Est le Socket manipulé.

Retours
une chaîne contenant les informations du serveur.

Socket.getsockname(socket)
Renvoie les informations d'adresse locale associées à l'objet.

La méthode renvoie une chaîne avec l'adresse IP locale et un numéro avec le port. Dans
en cas d'erreur, la méthode renvoie nil.

Arguments

· douille (classe_socket) -- Est le Socket manipulé.

Retours
une chaîne contenant les informations du client.

Socket.recevoir(socket[, modèle[, préfixe]])
Lit les données d'un objet client, selon le modèle de lecture spécifié. Motifs
suivre le format d'E/S de fichier Lua, et la différence de performance entre tous
modèles est négligeable.

Arguments

· douille (classe_socket) -- Est le Socket manipulé.

· modèle (chaîne|entier) -- Décrivez ce qui est requis (voir ci-dessous).

· préfixe (un magnifique) -- Une chaîne qui sera le préfixe des données renvoyées.

Retours
une chaîne contenant les données requises ou nil.

Le motif peut être l'un des suivants :

·

`*a` : lit de le douille jusqu'à le connexion is mis la clé sous la porte. Non
la traduction de fin de ligne est effectuée ;

·

`*l` : lit a en ligne of texte de le Prise de courant La en ligne is fin by a
Caractère LF (ASCII 10), éventuellement précédé d'un caractère CR (ASCII 13).
Les caractères CR et LF ne sont pas inclus dans la ligne renvoyée. En réalité,
tous les caractères CR sont ignorés par le modèle. C'est le modèle par défaut.

·

nombre: les causes le méthode à lire a spécifié nombre of octets de le
Prise. Le préfixe est une chaîne facultative à concaténer au début
de toutes les données reçues avant le retour.

· vide: Si le motif est laissé vide, l'option par défaut est *l.

En cas de succès, la méthode renvoie le modèle reçu. En cas d'erreur, le
la méthode renvoie nil suivi d'un message d'erreur qui peut être la chaîne "fermée" dans
dans le cas où la connexion a été fermée avant la fin de la transmission ou la chaîne
'timeout' au cas où il y aurait eu un timeout pendant l'opération. Aussi, après l'erreur
message, la fonction renvoie le résultat partiel de la transmission.

Remarque importante : cette fonction a été sévèrement modifiée. Il supportait plusieurs
patterns (mais je n'ai jamais vu cette fonctionnalité utilisée) et maintenant ce n'est plus le cas.
Les résultats partiels étaient renvoyés de la même manière que les résultats positifs. Cette
La dernière fonctionnalité violait l'idée que toutes les fonctions devraient renvoyer nil en cas d'erreur. Ainsi
ça a été changé aussi.

Socket.send(socket, Les données[, début[, finir]])
Envoie des données via l'objet client.

Arguments

· douille (classe_socket) -- Est le Socket manipulé.

· données (un magnifique) -- Les données qui seront envoyées.

· Commencer (entier) -- La position de départ dans la mémoire tampon des données qui seront
être envoyé.

· fin (entier) -- La position de fin dans le buffer des données qui seront
envoyé.

Retours
voir ci-dessous.

Les données sont la chaîne à envoyer. Les arguments optionnels i et j fonctionnent exactement comme le
string.sub fonction Lua standard pour permettre la sélection d'une sous-chaîne à envoyer.

En cas de succès, la méthode renvoie l'index du dernier octet dans [début, fin]
qui a été envoyé. Notez que, si start est 1 ou absent, c'est effectivement le
nombre total d'octets envoyés. En cas d'erreur, la méthode retourne nil, suivi de
un message d'erreur, suivi de l'index du dernier octet dans [début, fin] qui
a été envoyé. Vous voudrez peut-être réessayer à partir de l'octet suivant. L'erreur
le message peut être 'fermé' au cas où la connexion a été fermée avant la transmission
a été terminé ou la chaîne 'timeout' au cas où il y aurait eu un délai d'attente pendant le
fonctionnement.

Remarque : la sortie n'est pas mise en mémoire tampon. Pour les petites chaînes, il est toujours préférable de concaténer
les en Lua (avec l'opérateur '..') et envoyer le résultat en un seul appel au lieu de
appeler la méthode plusieurs fois.

Socket.setoption(prise, option[, valeur])
Juste implémenté pour la compatibilité, ce cal ne fait rien.

Socket.settimeout(socket, valeur[, mode])
Modifie les valeurs de délai d'attente de l'objet. Toutes les opérations d'E/S sont bloquantes. Cette
c'est-à-dire que tout appel aux méthodes send, receive et accept sera bloqué indéfiniment,
jusqu'à la fin de l'opération. La méthode settimeout définit une limite sur le montant
de temps que les méthodes d'E/S peuvent bloquer. Lorsqu'un délai d'attente s'est écoulé, le
les méthodes abandonnent et échouent avec un code d'erreur.

Le temps d'attente est spécifié comme paramètre de valeur, en secondes.

Les modes de délai d'attente sont implémentés par des robots, le seul délai d'attente réglable est l'inactivité
temps d'attente pour terminer la mémoire tampon interne envoyer ou en attente de recevoir des données.

Arguments

· douille (classe_socket) -- Est le Socket manipulé.

· Plus-value (entier) -- La valeur du délai d'attente.

classe Carte()
Cette classe permet de faire des recherches dans les cartes HAProxy. Les cartes déclarées peuvent être
modifié pendant l'exécution via le socket de gestion HAProxy.

par défaut = "États-Unis"

-- Créer et charger la carte
geo = Map.new("geo.map", Map.ip);

-- Créer un nouveau fetch qui renvoie le pays de l'utilisateur
core.register_fetches("pays", fonction(txn)
src locale;
loc local;

src = txn.f:fhdr("x-transmis-pour");
si (src == nil) alors
src = txn.f:src()
si (src == nil) alors
retourner la valeur par défaut ;
fin
fin

- Effectuer une recherche
loc = géo:lookup(src);

si (loc == nil) alors
retourner la valeur par défaut ;
fin

retour loc;
fin);

Carte.int
Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Carte.ip Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Carte.str
Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Carte.beg
Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Carte.sub
Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Rép.carte
Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Carte.dom
Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Carte.end
Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Carte.reg
Voir le fichier HAProxy configuration.txt, chapitre "Utilisation des ACL et récupération des exemples"
ans le sous-chapitre "Les bases de l'ACL" pour comprendre cette méthode de filtrage de motif.

Map.new(fichier, méthode)
Crée et charge une carte.

Arguments

· filet (un magnifique) -- Est le fichier contenant la carte.

· méthode (entier) -- Est la méthode de correspondance de modèle de carte. Voir les attributs
de la classe Map.

Retours
un objet Map de classe.

See Les attributs de la carte.

Map.lookup(carte, chaîne)
Effectuer une recherche dans une carte.

Arguments

· Localisation (carte_classe) -- Est l'objet Map de classe.

· str (un magnifique) -- Est la chaîne utilisée comme clé.

Retours
une chaîne contenant le résultat ou nil si aucune correspondance.

Map.slookup(carte, chaîne)
Effectuer une recherche dans une carte.

Arguments

· Localisation (carte_classe) -- Est l'objet Map de classe.

· str (un magnifique) -- Est la chaîne utilisée comme clé.

Retours
une chaîne contenant le résultat ou une chaîne vide si aucune correspondance.

classe AppletHTTP()
Cette classe est utilisée avec des applets qui nécessitent le mode 'http'. L'applet http peut
être inscrit auprès du core.register_service() fonction. Ils sont utilisés pour
traiter une requête http comme un serveur derrière HAProxy.

Voici un exemple de code hello world :

core.register_service("hello-world", "http", fonction(applet)
réponse locale = "Hello World !"
applet :set_status(200)
applet:add_header("content-length", string.len(response))
applet:add_header("content-type", "text/plain")
applet : start_response()
applet:envoyer (réponse)
fin)

AppletHTTP.c

Retours
A Convertisseurs classe

Cet attribut contient un objet de classe Converters.

AppletHTTP.sc

Retours
A Convertisseurs classe

Cet attribut contient un objet de classe Converters. Les fonctions de cet objet
renvoie toujours une chaîne.

AppletHTTP.f

Retours
A Extractions classe

Cet attribut contient un objet de classe Fetchs. Notez que l'exécution de l'applet
place ne peut pas accéder à une transaction HTTP de base HAProxy valide, donc quelques exemples
Les fichiers liés aux valeurs dépendantes de HTTP (hdr, path, ...) ne sont pas disponibles.

AppletHTTP.sf

Retours
A Extractions classe

Cet attribut contient un objet de classe Fetchs. Les fonctions de cet objet
renvoie toujours une chaîne. Notez que le lieu d'exécution de l'applet ne peut pas accéder à un
transaction HTTP de base HAProxy valide, donc quelques exemples de fethes liés au HTTP
les valeurs dépendantes (hdr, path, ...) ne sont pas disponibles.

Méthode AppletHTTP.

Retours
un magnifique

La méthode d'attribut renvoie une chaîne contenant la méthode HTTP.

AppletHTTP.version

Retours
un magnifique

L'attribut version renvoie une chaîne contenant la version de la requête HTTP.

AppletHTTP.path

Retours
un magnifique

Le chemin d'attribut renvoie une chaîne contenant le chemin de la requête HTTP.

AppletHTTP.qs

Retours
un magnifique

L'attribut qs renvoie une chaîne contenant la chaîne de requête de la requête HTTP.

AppletHTTP.longueur

Retours
entier

L'attribut longueur renvoie un entier contenant la longueur du corps HTTP.

AppletHTTP.headers

Retours
tableau

Les en-têtes d'attribut renvoient un tableau contenant les en-têtes HTTP. L'en-tête
les noms sont toujours en minuscules. Comme le nom d'en-tête peut être rencontré plus de
une fois dans chaque requête, la valeur est indexée avec 0 comme première valeur d'index. Le tableau
avoir cette forme :

AppletHTTP.headers[' '][ ] = " "

AppletHTTP.headers["host"][0] = "www.test.com"
AppletHTTP.headers["accept"][0] = "audio/basic q=1"
AppletHTTP.headers["accept"][1] = "audio/*, q=0.2"
AppletHTTP.headers["accept"][2] = "*/*, q=0.1"

AppletHTTP.headers
Contient un tableau contenant tous les en-têtes de requête.

AppletHTTP.set_status(applet, code)
Cette fonction définit le code d'état HTTP pour la réponse. Le code autorisé est de
100 à 599.

Arguments

· Applet (classe_AppletHTTP) -- Un AppletHTTP classe

· code (entier) -- le code d'état renvoyé au client.

AppletHTTP.add_header(applet, prénom, valeur)
Cette fonction ajoute un en-tête dans la réponse. Les en-têtes dupliqués ne sont pas réduits.
L'en-tête spécial longueur-contenu est utilisé pour déterminer la longueur de la réponse. Si ça
n'existe pas, un transfert-encodage : chunked est défini, et toutes les écritures de la fonction
AppletHTTP:envoyer() devenir un morceau.

Arguments

· Applet (classe_AppletHTTP) -- Un AppletHTTP classe

· prénom (un magnifique) -- le nom de l'en-tête

· Plus-value (un magnifique) -- la valeur de l'en-tête

AppletHTTP.start_response(applet)
Cette fonction indique au moteur HTTP qu'il peut traiter et envoyer le
en-têtes de réponse. Après cet appel, nous ne pouvons pas ajouter d'en-têtes à la réponse ; Nous
ne peut pas utiliser le AppletHTTP:envoyer() fonction si le AppletHTTP:start_response() n'est pas
appelé.

Arguments

· Applet (classe_AppletHTTP) -- Un AppletHTTP classe

AppletHTTP.getline(applet)
Cette fonction renvoie une chaîne contenant une ligne du corps http. Si les données
renvoyé ne contient pas de '\n' final, il est supposé que ce sont les dernières données disponibles
avant la fin du flux.

Arguments

· Applet (classe_AppletHTTP) -- Un AppletHTTP classe

Retours
un string. La chaîne peut être vide si nous atteignons la fin du flux.

AppletHTTP.receive(applet[, Taille])
Lit les données du corps HTTP, selon la lecture spécifiée taille. Si l' taille is
manquant, la fonction essaie de lire tout le contenu du flux jusqu'à la fin. Si
le taille est plus grand que le corps http, il renvoie la quantité de données disponibles.

Arguments

· Applet (classe_AppletHTTP) -- Un AppletHTTP classe

· taille (entier) -- la taille de lecture requise.

Retours
renvoie toujours une chaîne, la chaîne peut être vide si la connexion est fermée.

AppletHTTP.send(applet, message)
Envoyez le message msg sur le corps de la requête http.

Arguments

· Applet (classe_AppletHTTP) -- Un AppletHTTP classe

· msg (un magnifique) -- le message à envoyer.

classe AppletTCP()
Cette classe est utilisée avec des applets qui nécessitent le mode 'tcp'. L'applet tcp peut être
enregistré auprès du core.register_service() fonction. Ils sont utilisés pour le traitement
un flux tcp comme un serveur derrière HAProxy.

AppletTCP.c

Retours
A Convertisseurs classe

Cet attribut contient un objet de classe Converters.

AppletTCP.sc

Retours
A Convertisseurs classe

Cet attribut contient un objet de classe Converters. Les fonctions de cet objet
renvoie toujours une chaîne.

AppletTCP.f

Retours
A Extractions classe

Cet attribut contient un objet de classe Fetchs.

AppletTCP.sf

Retours
A Extractions classe

Cet attribut contient un objet de classe Fetchs.

AppletTCP.getline(applet)
Cette fonction renvoie une chaîne contenant une ligne du flux. Si les données
renvoyé ne contient pas de '\n' final, il est supposé que ce sont les dernières données disponibles
avant la fin du flux.

Arguments

· Applet (classe_AppletTCP) -- Un AppletTCP classe

Retours
un string. La chaîne peut être vide si nous atteignons la fin du flux.

AppletTCP.receive(applet[, Taille])
Lit les données du flux TCP, selon la lecture spécifiée taille. Si l' taille
est manquant, la fonction essaie de lire tout le contenu du flux jusqu'à la fin.

Arguments

· Applet (classe_AppletTCP) -- Un AppletTCP classe

· taille (entier) -- la taille de lecture requise.

Retours
renvoie toujours une chaîne, la chaîne peut être vide si la connexion est fermée.

AppletTCP.send(appletmsg)
Envoyez le message sur le flux.

Arguments

· Applet (classe_AppletTCP) -- Un AppletTCP classe

· msg (un magnifique) -- le message à envoyer.

De nombreuses bibliothèques lua utiles peuvent être trouvées ici :

· https://lua-toolbox.com/

Accès Redis :

· https://github.com/nrk/redis-lua

Ceci est un exemple d'utilisation de la bibliothèque Redis avec HAProxy. Notez que chaque appel
de n'importe quelle fonction de cette bibliothèque peut générer une erreur si la connexion socket échoue.

-- charger la bibliothèque redis
local redis = require("redis");

fonction do_quelquechose(txn)

-- créer et connecter une nouvelle socket TCP
tcp local = core.tcp();
TCP :délai d'attente(1);
tcp:connect("127.0.0.1", 6379);

-- utiliser la bibliothèque redis avec ce nouveau socket
client local = redis.connect({socket=tcp});
client:ping();

fin

OpenSSL :

· http://mkottman.github.io/luacrypto/index.html

· https://github.com/brunoos/luasec/wiki

Utilisez haproxy-lua en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

  • 1
    LAMPÉE
    LAMPÉE
    SWIG est un outil de développement logiciel
    qui relie les programmes écrits en C et
    C++ avec une variété de
    langages de programmation. SWIG est utilisé avec
    différent...
    Télécharger SWIG
  • 2
    Thème de réaction WooCommerce Nextjs
    Thème de réaction WooCommerce Nextjs
    Thème React WooCommerce, construit avec
    Suivant JS, Webpack, Babel, Node et
    Express, en utilisant GraphQL et Apollo
    Client. Boutique WooCommerce dans React (
    contient : Produits...
    Télécharger le thème WooCommerce Nextjs React
  • 3
    archlabs_repo
    archlabs_repo
    Repo de paquets pour ArchLabs Ceci est un
    application qui peut également être récupérée
    de
    https://sourceforge.net/projects/archlabs-repo/.
    Il a été hébergé dans OnWorks en...
    Télécharger archlabs_repo
  • 4
    Projet Zéphyr
    Projet Zéphyr
    Le projet Zephyr est une nouvelle génération
    système d'exploitation en temps réel (RTOS) qui
    prend en charge plusieurs matériels
    architecturales. Il est basé sur un
    noyau à faible encombrement...
    Télécharger le projet Zéphyr
  • 5
    SCons
    SCons
    SCons est un outil de construction de logiciels
    c'est une alternative supérieure à la
    outil de construction classique "Make" qui
    nous connaissons et aimons tous. SCons est
    mis en place un...
    Télécharger SCons
  • 6
    PSeInt
    PSeInt
    PSeInt est un interpréteur de pseudo-code pour
    étudiants en programmation hispanophones.
    Son objectif principal est d'être un outil pour
    apprendre et comprendre les bases
    conception...
    Télécharger PSeInt
  • Plus "

Commandes Linux

  • 1
    7z
    7z
    7z - Un archiveur de fichiers avec le niveau le plus élevé
    ratio de compression ...
    Exécutez 7z
  • 2
    7za
    7za
    7za - Un archiveur de fichiers avec le plus haut
    ratio de compression ...
    Exécutez 7za
  • 3
    terrifiant
    terrifiant
    CREEPY - Une information de géolocalisation
    agrégateur DESCRIPTION : creepy est un
    application qui vous permet de rassembler
    informations relatives à la géolocalisation
    utilisateurs de...
    Courez effrayant
  • 4
    cricket-compiler
    cricket-compiler
    cricket - Un programme pour gérer le
    collecte et affichage de séries chronologiques
    Les données ...
    Exécutez la compilation de cricket
  • 5
    g-wrap-config
    g-wrap-config
    g-wrap-config - script à obtenir
    informations sur la version installée
    de G-Wrap...
    Exécutez g-wrap-config
  • 6
    g.accessgrass
    g.accessgrass
    g.access - Contrôle l'accès au
    jeu de cartes actuel pour les autres utilisateurs sur le
    système. Si aucune option n'est donnée, imprime
    statut actuel. MOTS CLÉS : général, carte
    gestion, p...
    Exécutez g.accessgrass
  • Plus "

Ad