Este es el comando haproxy-lua que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
haproxy-lua - Haproxy-lua Documentación
FELIZ LUNA RUNNING CONTEXTOS
El código Lua ejecutado en HAProxy se puede procesar en 2 modos principales. El primero es el
inicialización modo, y el segundo es el tiempo de ejecución modo.
· En el inicialización modo, podemos realizar resoluciones de DNS, pero no podemos realizar E / S de socket.
En este modo de inicialización, HAProxy seguía bloqueado durante la ejecución de Lua
.
· En el tiempo de ejecución modo, no podemos realizar soluciones de DNS, pero podemos usar sockets. El
La ejecución del código Lua se multiplexa con el procesamiento de solicitudes, por lo que el código Lua
parece que se ejecuta en bloqueo, pero no es el caso.
El código Lua se carga en uno o más archivos. Estos archivos contienen código y funciones principales.
Lua tiene 6 contextos de ejecución.
1. El archivo Lua cuerpo contexto. Se ejecuta durante la carga del archivo Lua en el
HAProxy [global] sección con la directiva lua-carga. Se ejecuta en inicialización.
modo. Esta sección se utiliza para configurar enlaces Lua en HAProxy.
2. El Lua init contexto. Es una función de Lua que se ejecuta justo después de HAProxy
análisis de configuración. La ejecución está en modo de inicialización. En este contexto el
El entorno HAProxy ya está inicializado. Es útil para verificar la configuración, o
inicializar conexiones de socket o tareas. Estas funciones se declaran en el cuerpo
contexto con la función Lua core.register_init (). El prototipo de la función es un
función simple sin valor de retorno y sin parámetros, así: función fcn ().
3. El Lua tarea contexto. Es una función de Lua que se ejecuta después del inicio de HAProxy
programador, y justo después de la declaración de la tarea con la función Lua
core.register_task (). Este contexto puede coincidir con el procesamiento del tráfico. Está
ejecutado en modo runtime. El prototipo de la función es una función simple sin
valor de retorno y sin parámetros, así: función fcn ().
4. los DE ACTUAR! contexto. Es una función de Lua ejecutada condicionalmente. Estas acciones son
registrado por las directivas Lua "core.register_action ()". El prototipo del Lua
función llamada es una función que no devuelve nada y que toma un objeto de
clase TXN como entrada. función fcn (txn).
5. los muestra-búsqueda contexto. Esta función toma un objeto TXN como argumento de entrada y
devuelve una cadena. Estos tipos de funciones no pueden ejecutar ninguna función de bloqueo. Ellos
son útiles para agregar algunas de las recuperaciones de muestras de HAProxy originales y devolver el resultado.
El prototipo de la función es función cadena fcn (txn). Estas funciones pueden ser
registrado con la función Lua core.register_fetches (). Cada captura de muestra declarada es
prefijado por la cadena "lua.".
NOTA: Es posible que esta función no pueda encontrar los datos requeridos en el original.
HAProxy sample-fetches, en este caso, no puede devolver el resultado. Este caso aún no está
apoyadas
6. los convertidor contexto. Es una función de Lua que toma una cadena como entrada y devuelve
otra cadena como salida. Estos tipos de funciones son apátridas, no pueden acceder a
cualquier contexto. No ejecutan ninguna función de bloqueo. El prototipo de llamada es función
cadena fcn (cadena). Esta función se puede registrar con la función Lua
core.register_converters (). Cada convertidor declarado tiene el prefijo "lua".
FELIZ LUNA HOLA MUNDO
Archivo de configuración HAProxy (hola_mundo.conf):
global
lua-carga hola_mundo.lua
escuchar proxy
enlazar 127.0.0.1:10001
tcp-request inspeccionar-delay 1s
tcp-request contenido uso-servicio lua.hello_world
Archivo HAProxy Lua (hola_mundo.lua):
core.register_service ("hello_world", "tcp", función (subprograma)
subprograma: enviar ("hola mundo \ n")
fin)
Cómo iniciar HAProxy para probar esta configuración:
./haproxy -f hola_mundo.conf
En otra terminal, puede probar con telnet:
#: ~ telnet 127.0.0.1 10001
hola mundo
clase centro()
La clase "core" contiene todas las funciones básicas de HAProxy. Estas funciones son útiles
para controlar el flujo de ejecución, registrar hooks, manipular mapas globales
o ACL, ...
La clase "core" se proporciona básicamente con HAProxy. No exigir se requiere línea para
utiliza estas funciones.
La clase "core" es estática, no es posible crear un nuevo objeto de este tipo.
core.emerg
Returns
entero
Este atributo es un número entero, contiene el valor del nivel de registro "emergencia".
(0).
core.alerta
Returns
entero
Este atributo es un número entero, contiene el valor del nivel de registro "alerta" (1).
núcleo.crit
Returns
entero
Este atributo es un número entero, contiene el valor del loglevel "crítico" (2).
núcleo.err
Returns
entero
Este atributo es un número entero, contiene el valor del nivel de registro "error" (3).
núcleo.advertencia
Returns
entero
Este atributo es un número entero, contiene el valor del nivel de registro "advertencia" (4).
aviso.principal
Returns
entero
Este atributo es un número entero, contiene el valor del nivel logarítmico "aviso" (5).
núcleo.info
Returns
entero
Este atributo es un número entero, contiene el valor del loglevel "info" (6).
núcleo.depuración
Returns
entero
Este atributo es un número entero, contiene el valor del nivel de registro "debug" (7).
core.log (nivel de registro, mensaje)
contexto: cuerpo, inicio, tarea, acción, búsqueda de muestra, convertidor
Esta función envía un registro. El registro se envía, de acuerdo con el HAProxy.
archivo de configuración, en el servidor syslog predeterminado si está configurado y en el
stderr si está permitido.
Argumentos
· nivel de registro (entero) - Es el nivel de registro asociado con el mensaje. Es un
número entre 0 y 7.
· MSG (cadena) - El contenido del registro.
See núcleo.emerg, núcleo.alerta, núcleo.crítico, núcleo.err, núcleo.advertencia, núcleo.aviso,
core.info, core.debug (definiciones de nivel de registro)
See código.Depurar
See núcleo.Info
See núcleo.Advertencia
See core.Alerta
núcleo.Depuración(mensaje)
contexto: cuerpo, inicio, tarea, acción, búsqueda de muestra, convertidor
Argumentos
· MSG (cadena) - El contenido del registro.
See log
Hace el mismo trabajo que:
función Depurar(mensaje)
core.log (core.debug, msg)
final
núcleo.Info(mensaje)
contexto: cuerpo, inicio, tarea, acción, búsqueda de muestra, convertidor
Argumentos
· MSG (cadena) - El contenido del registro.
See log
función Info(mensaje)
core.log (core.info, msg)
final
núcleo.Advertencia(mensaje)
contexto: cuerpo, inicio, tarea, acción, búsqueda de muestra, convertidor
Argumentos
· MSG (cadena) - El contenido del registro.
See log
función advertencia(mensaje)
core.log (core.warning, msg)
final
core.Alerta(mensaje)
contexto: cuerpo, inicio, tarea, acción, búsqueda de muestra, convertidor
Argumentos
· MSG (cadena) - El contenido del registro.
See log
función Alertar(mensaje)
core.log (core.alert, msg)
final
core.add_acl (nombre de archivo, llave)
contexto: init, tarea, acción, búsqueda de muestra, convertidor
Agregar la ACL clave en la lista de ACL a la que hace referencia el archivo nombre de archivo.
Argumentos
· nombre de archivo (cadena): el nombre de archivo que hace referencia a las entradas de ACL.
· clave (cadena) - la clave que se agregará.
core.del_acl (nombre de archivo, llave)
contexto: init, tarea, acción, búsqueda de muestra, convertidor
Eliminar la entrada de ACL a la que hace referencia la clave clave en la lista de ACL a las que hace referencia
nombre de archivo.
Argumentos
· nombre de archivo (cadena): el nombre de archivo que hace referencia a las entradas de ACL.
· clave (cadena): la clave que se eliminará.
core.del_map (nombre de archivo, llave)
contexto: init, tarea, acción, búsqueda de muestra, convertidor
Eliminar la entrada del mapa indexada con la clave especificada en la lista de mapas referenciados
por su nombre de archivo.
Argumentos
· nombre de archivo (cadena): el nombre de archivo que hace referencia a las entradas del mapa.
· clave (cadena): la clave que se eliminará.
núcleo.msleep(milisegundos)
contexto: cuerpo, inicio, tarea, acción
El sistema core.msleep () detiene la ejecución de Lua entre milisegundos especificados.
Argumentos
· milisegundos (entero) - los milisegundos requeridos.
core.register_action (nombre, comportamiento, función)
contexto: cuerpo
Registra una función Lua ejecutada como acción. Toda la acción registrada se puede utilizar
en HAProxy con el prefijo "lua.". Una acción obtiene una clase de objeto TXN como entrada.
Argumentos
· nombre (cadena) - es el nombre del convertidor.
· acciones (mesa) - es una tabla de cadena que describe las acciones de HAProxy que
desea registrarse. Las acciones esperadas son 'tcp-req', 'tcp-res',
'http-req' o 'http-res'.
· divertida (función) - es la función Lua llamada para funcionar como convertidor.
El prototipo de la función Lua utilizada como argumento es:
función (txn)
·
txn (TXN clase): este vídeo is a TXN objeto usado for manipulando de la forma más
solicitud actual o flujo TCP.
Aquí, un ejemplo de registro de acciones. la acción solo envía un 'Hola mundo' en el
registros
core.register_action ("hola-mundo", {"tcp-req", "http-req"}, función (txn)
txn: Info ("Hola mundo")
fin)
Este código de ejemplo se utiliza en una configuración HAproxy como esta:
interfaz tcp_frt
modo tcp
tcp-solicitar contenido lua.hello-world
interfaz http_frt
modo http
http-solicitud lua.hola-mundo
core.register_converters (nombre, función)
contexto: cuerpo
Registra una función Lua ejecutada como convertidor. Todos los convertidores registrados pueden ser
usado en HAProxy con el prefijo "lua.". Un convertidor obtiene una cadena como entrada y
devuelve una cadena como salida. La función registrada puede tomar hasta 9 valores como
parámetro. Todo el valor son cadenas.
Argumentos
· nombre (cadena) - es el nombre del convertidor.
· divertida (función) - es la función Lua llamada para funcionar como convertidor.
El prototipo de la función Lua utilizada como argumento es:
función (str, [p1 [, p2 [, ... [, p5]]]])
· str (cadena): este es el valor de entrada convertido automáticamente en cadena.
· p1 .. p5 (cadena): esta es una lista de argumentos de cadena declarados en el haroxy
archivo de configuración. El número de argumentos no excede de 5. El orden y el
la naturaleza de estos la elige convencionalmente el desarrollador.
core.register_fetches (nombre, función)
contexto: cuerpo
Registre una función de Lua ejecutada como recuperación de muestra. Todas las recuperaciones de muestras registradas
se puede utilizar en HAProxy con el prefijo "lua". Una muestra de Lua recupera devuelve una cadena
como salida. La función registrada puede tomar hasta 9 valores como parámetro. Todos
el valor son cadenas.
Argumentos
· nombre (cadena) - es el nombre del convertidor.
· divertida (función) - es la función de Lua llamada para que funcione como recuperación de muestra.
El prototipo de la función Lua utilizada como argumento es:
función de cadena (txn, [p1 [, p2 [, ... [, p5]]]])
· txn (TXN clase): este es el objeto txn asociado con la solicitud actual.
· p1 .. p5 (cadena): esta es una lista de argumentos de cadena declarados en el haroxy
archivo de configuración. El número de argumentos no excede de 5. El orden y el
la naturaleza de estos la elige convencionalmente el desarrollador.
· Returns: Una cadena que contiene algunos datos, ot nil si el valor no se puede devolver ahora.
código de ejemplo de lua:
core.register_fetches ("hola", función (txn)
devolver "hola"
fin)
Configuración de ejemplo de HAProxy:
ejemplo de interfaz
ubicación de redirección de solicitud http /%[lua.hello]
core.register_service (nombre, modo, función)
contexto: cuerpo
Registre una función de Lua ejecutada como servicio. Todo el servicio registrado puede ser
usado en HAProxy con el prefijo "lua.". Un servicio obtiene una clase de objeto como entrada
de acuerdo con el modo requerido.
Argumentos
· nombre (cadena) - es el nombre del convertidor.
· modo (cadena): es una cadena que describe el modo requerido. Solo 'tcp' o
'http' están permitidos.
· divertida (función) - es la función Lua llamada para funcionar como convertidor.
El prototipo de la función Lua utilizada como argumento es:
función (subprograma)
· applet applet será una subprograma TCP clase o AppletHTTP clase. Depende del tipo
del subprograma registrado. Un subprograma registrado con el valor 'http' para el modo
el parámetro obtendrá un AppletHTTP clase. Si el modo el valor es 'tcp', el subprograma
obtiene un subprograma TCP clase.
advertencia: Los applets de tipo 'http' no se pueden llamar desde 'tcp-' conjuntos de reglas. Solo de la forma más 'http-'
Los conjuntos de reglas están autorizados, esto significa que no es posible llamar a un subprograma HTTP desde un
proxy en modo tcp. Los applets de tipo 'tcp' se pueden llamar desde cualquier lugar.
Aquí, un ejemplo de registro de servicio. el servicio simplemente envía un 'Hola mundo' como un
respuesta http.
core.register_service ("hola-mundo", "http", función (subprograma)
respuesta local = "¡Hola mundo!"
subprograma:establecer_status(200)
subprograma: add_header ("longitud de contenido", cadena.len (respuesta))
subprograma: add_header ("tipo de contenido", "texto / plano")
subprograma: start_response ()
subprograma: enviar (respuesta)
fin)
Este código de ejemplo se utiliza en una configuración HAproxy como esta:
ejemplo de interfaz
http-solicitud uso-servicio lua.hello-world
core.register_init (func)
contexto: cuerpo
Registre una función ejecutada después del análisis de la configuración. Esto es útil para
comprobar los parámetros.
Argumentos
· divertida (función) - es la función Lua llamada para funcionar como inicializador.
El prototipo de la función Lua utilizada como argumento es:
función()
No requiere entrada y no se espera salida.
core.register_task (func)
contexto: cuerpo, inicio, tarea, acción, búsqueda de muestra, convertidor
Regístrese y comience una tarea independiente. La tarea se inicia cuando el HAProxy principal
se inicia el planificador. Por ejemplo, este tipo de tareas se pueden ejecutar para realizar complejas
controles de salud.
Argumentos
· divertida (función) - es la función Lua llamada para funcionar como inicializador.
El prototipo de la función Lua utilizada como argumento es:
función()
No requiere entrada y no se espera salida.
core.set_nice (agradable)
contexto: tarea, acción, búsqueda de muestra, convertidor
Cambia el carácter agradable de la tarea actual o de la sesión actual.
Argumentos
· agradable (entero) - el valor agradable, debe estar entre -1024 y 1024.
core.set_map (nombre de archivo, llave, valor)
contexto: init, tarea, acción, búsqueda de muestra, convertidor
establecer el valor propuesta de asociado a la llave clave en el mapa al que hace referencia nombre de archivo.
Argumentos
· nombre de archivo (cadena) - la referencia del mapa
· clave (cadena) - la clave para establecer o reemplazar
· propuesta de (cadena) - el valor asociado
core.sleep (int segundos)
contexto: cuerpo, inicio, tarea, acción
El sistema core.sleep () Las funciones detienen la ejecución de Lua entre segundos especificados.
Argumentos
· segundos (entero) - los segundos requeridos.
core.tcp ()
contexto: init, tarea, acción
Esta función devuelve un nuevo objeto de un enchufe clase.
Returns
A Enchufe clase objeto.
core.done (datos)
contexto: cuerpo, inicio, tarea, acción, búsqueda de muestra, convertidor
Argumentos
· datos (any) - Devuelve algunos datos para la persona que llama. Es útil con
recuperaciones de muestras y convertidores de muestras.
Detiene inmediatamente la ejecución actual de Lua y vuelve a la persona que llama, que puede
una muestra de recuperación, un convertidor o una acción y devuelve el valor especificado (ignorado
para acciones). Se utiliza cuando el proceso LUA termina su trabajo y quiere dar
Vuelva a colocar el control en HAProxy sin ejecutar el código restante. Puede verse como
un "retorno" de varios niveles.
core.yield ()
contexto: tarea, acción, búsqueda de muestra, convertidor
Devuelva la mano al programador HAProxy. Se utiliza cuando el procesamiento LUA
consume mucho tiempo de procesamiento.
clase Obtiene ()
Esta clase contiene una gran cantidad de recuperaciones de muestras internas de HAProxy. Ver el HAProxy
Documentación "configuration.txt" para obtener más información sobre su uso. ellos son
los capítulos 7.3.2 al 7.3.6.
advertencia algunas recuperaciones de muestra no están disponibles en algún contexto. Estas limitaciones
se especifican en esta documentación cuando son útiles.
See TXN.f
See TXN.sf
Las recuperaciones son útiles para:
· Obtener la hora del sistema,
· Obtener la variable de entorno,
· Obtener números aleatorios,
· Estado de backend conocido como el número de usuarios en cola o el número de
conexiones establecidas,
· Información del cliente como origen o destino de IP,
· Lidiar con tablas de palo,
· Información SSL establecida,
· Información HTTP como encabezados o método.
función acción (txn)
- Obtener IP de origen
clientip local = txn.f: src ()
final
clase Convertidores ()
Esta clase contiene muchos convertidores de muestra internos de HAProxy. Ver el HAProxy
documentation "configuration.txt" para obtener más información sobre su uso. Es el
Capítulo 7.3.1.
See TXN.c
See TXN.sc
Converters proporciona una transformación completa. Son útiles para:
· Conversión de entrada a base64,
· Aplicar hash en la cadena de entrada (djb2, crc32, sdbm, wt6),
· Fecha de formato,
· Json escape,
· Extraer el idioma preferido comparando dos listas,
· Pasar a los caracteres inferiores o superiores,
· Lidiar con tablas de palo.
clase Canal()
HAProxy utiliza dos búferes para el procesamiento de las solicitudes. El primero se usa
con los datos de la solicitud (del cliente al servidor) y el segundo se utiliza para
los datos de respuesta (del servidor al cliente).
Cada búfer contiene dos tipos de datos. El primer tipo son los datos entrantes en espera
para un procesamiento. La segunda parte son los datos salientes ya procesados. Por lo general,
los datos entrantes se procesan, después de que se etiquetan como datos salientes, y finalmente
se ha enviado. Las siguientes funciones proporcionan herramientas para manipular estos datos en un
tampón.
El siguiente diagrama muestra dónde se aplica la función de clase de canal.
advertencia: No es posible leer de la respuesta en la acción de solicitud, y es
no es posible leer para el canal de solicitud en la acción de respuesta.
[imagen]
Channel.dup (canal)
Esta función devuelve una cadena que contiene todo el búfer. Los datos no son
quitar de la solución tampón y se puede reprocesar más tarde.
Si el búfer no puede recibir más datos, se devuelve un valor "nulo".
Argumentos
· canal (canal_clase) - El canal manipulado.
Returns
una cadena que contiene todos los datos disponibles o nil.
Channel.get (canal)
Esta función devuelve una cadena que contiene todo el búfer. Los datos se consumen
del búfer.
Si el búfer no puede recibir más datos, se devuelve un valor "nulo".
Argumentos
· canal (canal_clase) - El canal manipulado.
Returns
una cadena que contiene todos los datos disponibles o nil.
Channel.getline (canal)
Esta función devuelve una cadena que contiene la primera línea del búfer. Los datos
se consume. Si los datos devueltos no contienen una 'n' final, se asume que su
los últimos datos disponibles en el búfer.
Si el búfer no puede recibir más datos, se devuelve un valor "nulo".
Argumentos
· canal (canal_clase) - El canal manipulado.
Returns
una cadena que contiene la línea disponible o nil.
Channel.set (canal, cadena)
Esta función reemplaza el contenido del búfer por la cadena. La función regresa
la longitud copiada, de lo contrario, devuelve -1.
Los datos establecidos con esta función no se envían. Esperan el final de HAProxy
procesamiento, por lo que el búfer puede estar lleno.
Argumentos
· canal (canal_clase) - El canal manipulado.
· cadena (cadena) - Los datos que se enviarán.
Returns
un número entero que contiene la cantidad de bytes copiados o -1.
Channel.append (canal, cadena)
Esta función agrega el argumento de cadena al contenido del búfer. La función
devuelve la longitud copiada, de lo contrario, devuelve -1.
Los datos establecidos con esta función no se envían. Esperan el final de HAProxy
procesamiento, por lo que el búfer puede estar lleno.
Argumentos
· canal (canal_clase) - El canal manipulado.
· cadena (cadena) - Los datos que se enviarán.
Returns
un número entero que contiene la cantidad de bytes copiados o -1.
Channel.send (canal, cadena)
Esta función requería el envío inmediato de los datos. A menos que la conexión sea
cerrar, el búfer se vacía regularmente y se puede enviar toda la cadena.
Argumentos
· canal (canal_clase) - El canal manipulado.
· cadena (cadena) - Los datos que se enviarán.
Returns
un número entero que contiene la cantidad de bytes copiados o -1.
Channel.get_in_length (canal)
Esta función devuelve la longitud de la parte de entrada del búfer.
Argumentos
· canal (canal_clase) - El canal manipulado.
Returns
un número entero que contiene la cantidad de bytes disponibles.
Channel.get_out_length (canal)
Esta función devuelve la longitud de la parte de salida del búfer.
Argumentos
· canal (canal_clase) - El canal manipulado.
Returns
un número entero que contiene la cantidad de bytes disponibles.
Channel.forward (canal, En t)
Esta función transfiere bytes desde la parte de entrada del búfer a la parte de salida.
Argumentos
· canal (canal_clase) - El canal manipulado.
· int (entero): La cantidad de datos que se reenviarán.
clase HTTP ()
Esta clase contiene todas las funciones de manipulación HTTP.
HTTP.req_get_headers (http)
Devuelve una matriz que contiene todos los encabezados de la solicitud.
Argumentos
· http (clase_http): El objeto http relacionado.
Returns
matriz de encabezados.
See HTTP.res_get_headers ()
Esta es la forma de la matriz devuelta:
HTTP: req_get_headers () [' '] [ ] = " "
hdr local = HTTP: req_get_headers ()
hdr ["host"] [0] = "www.test.com"
hdr ["aceptar"] [0] = "audio / básico q = 1"
hdr ["aceptar"] [1] = "audio / *, q = 0.2"
hdr ["aceptar"] [2] = "* / *, q = 0.1"
HTTP.res_get_headers (http)
Devuelve una matriz que contiene todos los encabezados de respuesta.
Argumentos
· http (clase_http): El objeto http relacionado.
Returns
matriz de encabezados.
See HTTP.req_get_headers ()
Esta es la forma de la matriz devuelta:
HTTP: res_get_headers () [' '] [ ] = " "
hdr local = HTTP: req_get_headers ()
hdr ["host"] [0] = "www.test.com"
hdr ["aceptar"] [0] = "audio / básico q = 1"
hdr ["aceptar"] [1] = "audio / *, q = 0.2"
hdr ["aceptar"] [2] = "*. *, q = 0.1"
HTTP.req_add_header (http, nombre, valor)
Agrega un campo de encabezado HTTP en la solicitud cuyo nombre se especifica en "nombre" y
cuyo valor se define en "valor".
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
· propuesta de (cadena): El valor del encabezado.
See HTTP.res_add_header ()
HTTP.res_add_header (http, nombre, valor)
agrega un campo de encabezado HTTP en la respuesta cuyo nombre se especifica en "nombre" y
cuyo valor se define en "valor".
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
· propuesta de (cadena): El valor del encabezado.
See HTTP.req_add_header ()
HTTP.req_del_header (http, nombre)
Elimina todos los campos de encabezado HTTP en la solicitud cuyo nombre se especifica en "nombre".
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
See HTTP.res_del_header ()
HTTP.res_del_header (http, nombre)
Elimina todos los campos de encabezado HTTP en la respuesta cuyo nombre se especifica en "nombre".
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
See HTTP.req_del_header ()
HTTP.req_set_header (http, nombre, valor)
Esta variable reemplaza todas las apariciones de todos los "nombres" de encabezado, por solo uno que contenga
el valor".
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
· propuesta de (cadena): El valor del encabezado.
See HTTP.res_set_header ()
Esta función hace el mismo trabajo que el siguiente código:
función fcn (txn)
TXN.http: req_del_header ("encabezado")
TXN.http: req_add_header ("encabezado", "valor")
final
HTTP.res_set_header (http, nombre, valor)
Esta variable reemplaza todas las apariciones de todos los "nombres" de encabezado, por solo uno que contenga
el valor".
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
· propuesta de (cadena): El valor del encabezado.
See HTTP.req_rep_header ()
HTTP.req_rep_header (http, nombre, expresión regular, reemplazar)
Coincide con la expresión regular en todas las apariciones del campo de encabezado "nombre" según
a "regex", y los reemplaza con el argumento "reemplazar". El valor de reposición
puede contener referencias posteriores como 1, 2, ... Esta función trabaja con la solicitud.
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
· expresiones regulares (cadena): La expresión regular de coincidencia.
· reemplazar (cadena) - El valor de reposición.
See HTTP.res_rep_header ()
HTTP.res_rep_header (http, nombre, expresión regular, cadena)
Coincide con la expresión regular en todas las apariciones del campo de encabezado "nombre" según
a "regex", y los reemplaza con el argumento "reemplazar". El valor de reposición
puede contener referencias posteriores como 1, 2, ... Esta función trabaja con la solicitud.
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
· expresiones regulares (cadena): La expresión regular de coincidencia.
· reemplazar (cadena) - El valor de reposición.
See HTTP.req_replace_header ()
HTTP.req_replace_value (http, nombre, expresión regular, reemplazar)
Funciona como "HTTP.req_replace_header ()" excepto que hace coincidir la expresión regular con
cada valor delimitado por comas del campo de encabezado "nombre" en lugar de todo el
cabecera.
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
· expresiones regulares (cadena): La expresión regular de coincidencia.
· reemplazar (cadena) - El valor de reposición.
See HTTP.req_replace_header ()
See HTTP.res_replace_value ()
HTTP.res_replace_value (http, nombre, expresión regular, reemplazar)
Funciona como "HTTP.res_replace_header ()" excepto que hace coincidir la expresión regular con
cada valor delimitado por comas del campo de encabezado "nombre" en lugar de todo el
cabecera.
Argumentos
· http (clase_http): El objeto http relacionado.
· nombre (cadena): El nombre del encabezado.
· expresiones regulares (cadena): La expresión regular de coincidencia.
· reemplazar (cadena) - El valor de reposición.
See HTTP.res_replace_header ()
See HTTP.req_replace_value ()
HTTP.req_set_method (http, método)
Reescribe el método de solicitud con el parámetro "método".
Argumentos
· http (clase_http): El objeto http relacionado.
· Método (cadena) - El nuevo método.
HTTP.req_set_path (http, camino)
Vuelve a escribir la ruta de solicitud con el parámetro "ruta".
Argumentos
· http (clase_http): El objeto http relacionado.
· camino (cadena) - El nuevo camino.
HTTP.req_set_query (http, consulta)
Reescribe la cadena de consulta de la solicitud que aparece después del primer signo de interrogación.
("?") con el parámetro "consulta".
Argumentos
· http (clase_http): El objeto http relacionado.
· pregunta (cadena): La nueva consulta.
HTTP.req_set_uri (http, uri)
Reescribe el URI de la solicitud con el parámetro "uri".
Argumentos
· http (clase_http): El objeto http relacionado.
· uri (cadena) - El nuevo uri.
HTTP.res_set_status (http, estado)
Vuelve a escribir el código de estado de respuesta con el parámetro "código". Tenga en cuenta que la razón
se adapta automáticamente al nuevo código.
Argumentos
· http (clase_http): El objeto http relacionado.
· estado (entero): El nuevo código de estado de respuesta.
clase TXN ()
La clase txn contiene todas las funciones relativas a la transacción http o tcp
(Tenga en cuenta que un flujo tcp es lo mismo que una transacción tcp, pero una transacción HTTP
no es lo mismo que una secuencia tcp).
El uso de esta clase permite recuperar datos de las solicitudes, modificarlos y
reenvíelo.
Todas las funciones proporcionadas por esta clase están disponibles en el contexto
muestras-recuperaciones y acciones.
TXN.c
Returns
An Convertidores clase.
Este atributo contiene un objeto de clase Converters.
TXN.sc
Returns
An Convertidores clase.
Este atributo contiene un objeto de clase Converters. Las funciones de este objeto
devuelve siempre una cadena.
TXN.f
Returns
An Recupera clase.
Este atributo contiene un objeto de clase Fetches.
TXN.sf
Returns
An Recupera clase.
Este atributo contiene un objeto de clase Fetches. Las funciones de este objeto
devuelve siempre una cadena.
TXN.req
Returns
An Channel clase.
Este atributo contiene un objeto de clase de canal para el búfer de solicitud.
TXN.res
Returns
An Channel clase.
Este atributo contiene un objeto de clase de canal para el búfer de respuesta.
TXN.http
Returns
An HTTP clase.
Este atributo contiene un objeto de clase HTTP. Solo está disponible si el proxy tiene
el "modo http" habilitado.
TXN.log (TXN, nivel de registro, mensaje)
Esta función envía un registro. El registro se envía, de acuerdo con el HAProxy.
archivo de configuración, en el servidor syslog predeterminado si está configurado y en el
stderr si está permitido.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· nivel de registro (entero) - Es el nivel de registro asociado con el mensaje. Es un
número entre 0 y 7.
· MSG (cadena) - El contenido del registro.
See núcleo.emerg, núcleo.alerta, núcleo.crítico, núcleo.err, núcleo.advertencia, núcleo.aviso,
core.info, core.debug (definiciones de nivel de registro)
See TXN.deflog
See TXN.Depuración
See TXN.Info
See TXN.Advertencia
See TXN.Alerta
TXN.deflog (TXN, mensaje)
Envía una línea de registro con el nivel de registro predeterminado para el proxy asociado con el
transacción.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· MSG (cadena) - El contenido del registro.
See TXN.log
TXN.Debug (txn, mensaje)
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· MSG (cadena) - El contenido del registro.
See TXN.log
Hace el mismo trabajo que:
función Debug (txn, msg)
TXN.log (txn, core.debug, msg)
final
TXN.Info (txn, mensaje)
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· MSG (cadena) - El contenido del registro.
See TXN.log
función Debug (txn, msg)
TXN.log (txn, core.info, msg)
final
TXN.Warning (txn, mensaje)
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· MSG (cadena) - El contenido del registro.
See TXN.log
función Debug (txn, msg)
TXN.log (txn, core.warning, msg)
final
TXN.Alert (txn, mensaje)
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· MSG (cadena) - El contenido del registro.
See TXN.log
función Debug (txn, msg)
TXN.log (txn, core.alert, msg)
final
TXN.get_priv (txn)
Devuelve los datos de Lua almacenados en la transacción actual (con el TXN.set_priv ())
función. Si no se almacenan datos, devuelve un valor nulo.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
Returns
los datos opacos almacenados previamente, o nulo si no hay nada disponible.
TXN.set_priv (txn, datos)
Almacene cualquier dato en la transacción actual de HAProxy. Esta acción reemplaza la vieja
datos almacenados.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· datos (opaco) - Los datos que se almacenan en la transacción.
TXN.set_var (TXN, hay, valor)
Convierte un tipo Lua en un tipo HAProxy y lo almacena en una variable .
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· var (cadena) - El nombre de la variable de acuerdo con la variable HAProxy
sintaxis.
· propuesta de (opaco) - Los datos que se almacenan en la variable.
TXN.get_var (TXN, var)
Devuelve los datos almacenados en el convertidor de variables en tipo Lua.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· var (cadena) - El nombre de la variable de acuerdo con la variable HAProxy
sintaxis.
TXN.get_headers (txn)
Esta función devuelve una matriz de encabezados.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
Returns
una matriz de encabezados.
TXN.done (txn)
Esta función finaliza el procesamiento de la transacción y la sesión asociada.
Se puede utilizar cuando se detecta un error crítico o para finalizar el procesamiento después
algunos datos se han devuelto al cliente (por ejemplo: una redirección).
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
TXN.set_loglevel (txn, nivel de registro)
Se utiliza para cambiar el nivel de registro de la solicitud actual. El "loglevel" debe ser un
entero entre 0 y 7.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· nivel de registro (entero): El nivel de registro requerido. Esta variable puede ser una de
See centro.
TXN.set_tos (txn, tos)
Se utiliza para establecer el valor del campo TOS o DSCP de los paquetes enviados al cliente al
valor pasado en "tos" en plataformas que admiten esto.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· tos (entero) - El nuevo TOS os DSCP.
TXN.set_mark (txn, Marcos)
Se utiliza para establecer Netfilter MARK en todos los paquetes enviados al cliente al valor
pasó en "marca" en las plataformas que lo soportan.
Argumentos
· txn (clase_txn): El objeto de clase txn que contiene los datos.
· marca (entero) - El valor de la marca.
clase Enchufe()
Esta clase debe ser compatible con la clase Lua Socket. Solo el 'cliente'
las funciones están disponibles. Consulte la documentación de Lua Socket:
http://w3.impa.br/~diego/software/luasocket/tcp.html
Socket.close (enchufe)
Cierra un objeto TCP. El enchufe interno utilizado por el objeto está cerrado y el local
La dirección a la que estaba vinculado el objeto se pone a disposición de otras aplicaciones. No
Se permiten operaciones adicionales (excepto para llamadas adicionales al método de cierre) en un
Zócalo cerrado.
Argumentos
· enchufe (socket_clase) - Es el Socket manipulado.
Nota: Es importante cerrar todos los enchufes usados una vez que no sean necesarios, ya que, en
muchos sistemas, cada socket utiliza un descriptor de archivo, que son sistemas limitados
recursos. Los objetos recolectados de basura se cierran automáticamente antes de su destrucción,
sin embargo.
Enchufe.conectar (enchufe, habla a[, Puerto])
Intenta conectar un objeto de socket a un host remoto.
En caso de error, el método devuelve nil seguido de una cadena que describe el error.
En caso de éxito, el método devuelve 1.
Argumentos
· enchufe (socket_clase) - Es el Socket manipulado.
· dirección (cadena): puede ser una dirección IP o un nombre de host. Vea a continuación para
más información.
· Puerto (entero) - debe ser un número entero en el rango [1..64K].
Returns
1 o nulo.
una extensión de campo de dirección permite usar la función connect () para conectarse a
otro flujo que no sea TCP. La sintaxis que contiene una dirección ipv4 o ipv6 simple es la
formato básicamente esperado. Este formato requiere el puerto.
Otro formato aceptado es una ruta de socket como "/ socket / ruta", permite conectar
a un enchufe. los espacios de nombres abstractos se admiten con el prefijo "abns @", y finalmente
se puede pasar un filedescriotr con el prefijo "fd @". El prefijo "ipv4 @", "ipv6 @"
y "unix @" también son compatibles. El puerto se puede pasar dentro de la cadena. La sintaxis
"127.0.0.1:1234" es válido. en este caso, el parámetro Puerto se ignora.
Socket.connect_ssl (enchufe, dirección, puerto)
Mismo comportamiento que la función socket: connect, pero usa SSL.
Argumentos
· enchufe (socket_clase) - Es el Socket manipulado.
Returns
1 o nulo.
Socket.getpeername (socket)
Devuelve información sobre el lado remoto de un objeto cliente conectado.
Devuelve una cadena con la dirección IP del par, seguida del número de puerto que
peer está usando para la conexión. En caso de error, el método devuelve nil.
Argumentos
· enchufe (socket_clase) - Es el Socket manipulado.
Returns
una cadena que contiene la información del servidor.
Socket.getsockname (socket)
Devuelve la información de la dirección local asociada al objeto.
El método devuelve una cadena con la dirección IP local y un número con el puerto. En
En caso de error, el método devuelve nil.
Argumentos
· enchufe (socket_clase) - Es el Socket manipulado.
Returns
una cadena que contiene la información del cliente.
Socket.receive (socket [, patrón[, prefijo]])
Lee datos de un objeto cliente, de acuerdo con el patrón de lectura especificado. Patrones
siga el formato de E / S del archivo Lua y la diferencia de rendimiento entre todos
patrones es insignificante.
Argumentos
· enchufe (socket_clase) - Es el Socket manipulado.
· patrón (cadena | entero) - Describa lo que se requiere (ver más abajo).
· prefijo (cadena) - Una cadena que será el prefijo de los datos devueltos.
Returns
una cadena que contiene los datos requeridos o nil.
El patrón puede ser cualquiera de los siguientes:
·
`* a`: lee obtenidos de de la forma más enchufe hasta de la forma más conexión is cerrado. No
se realiza la traducción de final de línea;
·
`* l`: lee a línea of texto obtenidos de de la forma más Zócalo El sistema línea is finalizado by a
Carácter LF (ASCII 10), opcionalmente precedido por un carácter CR (ASCII 13).
Los caracteres CR y LF no se incluyen en la línea devuelta. De hecho,
todos los caracteres CR son ignorados por el patrón. Este es el patrón predeterminado.
·
número: causas de la forma más Método a read a especificado número of bytes obtenidos de de la forma más
Enchufe. El prefijo es una cadena opcional que se concatena al principio.
de cualquier dato recibido antes de la devolución.
· vacío: Si el patrón se deja vacío, la opción predeterminada es *l.
Si tiene éxito, el método devuelve el patrón recibido. En caso de error, el
El método devuelve nil seguido de un mensaje de error que puede ser la cadena 'cerrada' en
caso de que la conexión se cerró antes de que se completara la transmisión o la cadena
'tiempo de espera' en caso de que haya un tiempo de espera durante la operación. Además, después del error
mensaje, la función devuelve el resultado parcial de la transmisión.
Nota importante: esta función se modificó gravemente. Solía soportar múltiples
patrones (pero nunca he visto que se use esta función) y ahora ya no lo hace.
Los resultados parciales solían devolverse de la misma manera que los resultados exitosos. Esta
La última característica violó la idea de que todas las funciones deberían devolver cero en caso de error. Por lo tanto
también fue cambiado.
Socket.send (socket, datos[, comienzo[, fin]])
Envía datos a través del objeto del cliente.
Argumentos
· enchufe (socket_clase) - Es el Socket manipulado.
· datos (cadena) - Los datos que se enviarán.
· comienzo (entero) - La posición de inicio en el búfer de los datos que
ser enviado.
· final (entero) - La posición final en el búfer de los datos que serán
expedido.
Returns
vea abajo.
Los datos son la cadena que se enviará. Los argumentos opcionales i y j funcionan exactamente como el
función estándar string.sub Lua para permitir el envío de la selección de una subcadena.
Si tiene éxito, el método devuelve el índice del último byte dentro de [inicio, fin]
que ha sido enviado. Tenga en cuenta que, si el inicio es 1 o está ausente, este es efectivamente el
número total de bytes enviados. En caso de error, el método devuelve nil, seguido de
un mensaje de error, seguido del índice del último byte dentro de [inicio, fin] que
ha sido enviado. Es posible que desee volver a intentarlo desde el byte siguiente. El error
El mensaje se puede 'cerrar' en caso de que la conexión se haya cerrado antes de la transmisión
se completó o la cadena 'tiempo de espera' en caso de que hubiera un tiempo de espera durante el
operación.
Nota: La salida no se almacena en búfer. Para cadenas pequeñas, siempre es mejor concatenar
en Lua (con el operador '..') y envía el resultado en una llamada en lugar de
llamando al método varias veces.
Socket.setoption (socket, opción[, valor])
Simplemente implementado por compatibilidad, esta cal no hace nada.
Socket.settimeout (socket, valor[, modo])
Cambia los valores de tiempo de espera del objeto. Todas las operaciones de E / S están bloqueadas. Ese
es decir, cualquier llamada a los métodos enviar, recibir y aceptar se bloqueará indefinidamente,
hasta que finalice la operación. El método settimeout define un límite en la cantidad
tiempo que los métodos de E / S pueden bloquear. Cuando ha transcurrido un tiempo de espera, el
los métodos se dan por vencidos y fallan con un código de error.
La cantidad de tiempo de espera se especifica como el parámetro de valor, en segundos.
Los modos de tiempo de espera se implementan mediante bot, el único tiempo de espera configurable es la inactividad
tiempo de espera para completar el envío del búfer interno o esperando recibir datos.
Argumentos
· enchufe (socket_clase) - Es el Socket manipulado.
· propuesta de (entero): El valor del tiempo de espera.
clase Mapa()
Esta clase permite realizar búsquedas en mapas HAProxy. Los mapas declarados pueden ser
modificado durante el tiempo de ejecución a través del socket de administración HAProxy.
default = "usa"
- Crear y cargar mapa
geo = Map.new ("geo.map", Map.ip);
- Crear nueva recuperación que devuelva el país del usuario.
core.register_fetches ("país", función (txn)
src local;
locomotora local;
src = txn.f: fhdr ("x-reenviado-para");
si (src == nil) entonces
src = txn.f: src ()
si (src == nil) entonces
volver por defecto;
final
final
- Realizar búsqueda
loc = geo: buscar (src);
si (loc == nil) entonces
volver por defecto;
final
volver loc;
fin);
Mapa.int
Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Mapa.ip Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Mapa.str
Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Mapa.beg
Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Mapa.sub
Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Mapa.dir
Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Mapa.dom
Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Mapa.fin
Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Mapa.reg
Consulte el archivo HAProxy configuration.txt, capítulo "Uso de ACL y obtención de muestras"
ans subcapítulo "Conceptos básicos de ACL" para comprender este método de coincidencia de patrones.
Map.new (archivo, método)
Crea y carga un mapa.
Argumentos
· presentar (cadena): Es el archivo que contiene el mapa.
· Método (entero): Es el método de coincidencia de patrones de mapa. Ver los atributos
de la clase Map.
Returns
un objeto Map de clase.
See Los atributos del mapa.
Map.lookup (mapa, calle)
Realice una búsqueda en un mapa.
Argumentos
· mapa (mapa_clase) - Es el objeto Map de la clase.
· str (cadena) - Es la cadena que se utiliza como clave.
Returns
una cadena que contiene el resultado o nulo si no coincide.
Map.slookup (mapa, calle)
Realice una búsqueda en un mapa.
Argumentos
· mapa (mapa_clase) - Es el objeto Map de la clase.
· str (cadena) - Es la cadena que se utiliza como clave.
Returns
una cadena que contiene el resultado o una cadena vacía si no coincide.
clase AppletHTTP ()
Esta clase se usa con applets que requieren el modo 'http'. El subprograma http puede
estar registrado con el core.register_service () función. Se utilizan para
procesando una solicitud http como un servidor en la parte posterior de HAProxy.
Este es un código de muestra de hola mundo:
core.register_service ("hola-mundo", "http", función (subprograma)
respuesta local = "¡Hola mundo!"
subprograma:establecer_status(200)
subprograma: add_header ("longitud de contenido", cadena.len (respuesta))
subprograma: add_header ("tipo de contenido", "texto / plano")
subprograma: start_response ()
subprograma: enviar (respuesta)
fin)
AppletHTTP.c
Returns
A Convertidores clase
Este atributo contiene un objeto de clase Converters.
AppletHTTP.sc
Returns
A Convertidores clase
Este atributo contiene un objeto de clase Converters. Las funciones de este objeto
devuelve siempre una cadena.
AppletHTTP.f
Returns
A Recupera clase
Este atributo contiene un objeto de clase Fetches. Tenga en cuenta que la ejecución del subprograma
lugar no puede acceder a una transacción HTTP núcleo de HAProxy válida, por lo que algunos ejemplos
Los datos relacionados con los valores dependientes de HTTP (hdr, ruta, ...) no están disponibles.
AppletHTTP.sf
Returns
A Recupera clase
Este atributo contiene un objeto de clase Fetches. Las funciones de este objeto
devuelve siempre una cadena. Tenga en cuenta que el lugar de ejecución del subprograma no puede acceder a un
transacción HTTP del núcleo de HAProxy válida, por lo que algunos elementos de muestra relacionados con HTTP
los valores dependientes (hdr, ruta, ...) no están disponibles.
Método AppletHTTP.
Returns
cadena
El método de atributo devuelve una cadena que contiene el método HTTP.
AppletHTTP.versión
Returns
cadena
La versión del atributo devuelve una cadena que contiene la versión de la solicitud HTTP.
AppletHTTP.ruta
Returns
cadena
La ruta del atributo devuelve una cadena que contiene la ruta de la solicitud HTTP.
AppletHTTP.qs
Returns
cadena
El atributo qs devuelve una cadena que contiene la cadena de consulta de solicitud HTTP.
AppletHTTP.longitud
Returns
entero
La longitud del atributo devuelve un número entero que contiene la longitud del cuerpo HTTP.
AppletHTTP.encabezados
Returns
matriz
Los encabezados de atributo devuelven una matriz que contiene los encabezados HTTP. El encabezado
los nombres siempre están en minúsculas. Como el nombre del encabezado se puede encontrar más de
una vez en cada solicitud, el valor se indexa con 0 como primer valor de índice. La matriz
tener esta forma:
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.encabezados
Contiene una matriz que contiene todos los encabezados de la solicitud.
AppletHTTP.set_status (subprograma, código)
Esta función establece el código de estado HTTP para la respuesta. El código permitido es de
100 599 a.
Argumentos
· applet (clase_AppletHTTP) -- Un AppletHTTP clase
· código (entero): el código de estado devuelto al cliente.
AppletHTTP.add_header (subprograma, nombre, valor)
Esta función agrega un encabezado en la respuesta. Los encabezados duplicados no se contraen.
El encabezado especial largancia de contenido se utiliza para determinar la duración de la respuesta. Si se
no existe, un codificación de transferencia: troceado está configurado, y toda la escritura desde la función
AppletHTTP: enviar () convertirse en un trozo.
Argumentos
· applet (clase_AppletHTTP) -- Un AppletHTTP clase
· nombre (cadena) - el nombre del encabezado
· propuesta de (cadena) - el valor del encabezado
AppletHTTP.start_response (subprograma)
Esta función indica al motor HTTP que puede procesar y enviar el
encabezados de respuesta. Después de esta llamada, no podemos agregar encabezados a la respuesta; Nosotros
no puede usar el AppletHTTP: enviar () funcionar si el AppletHTTP: respuesta_inicial () no es
llamado.
Argumentos
· applet (clase_AppletHTTP) -- Un AppletHTTP clase
AppletHTTP.getline (subprograma)
Esta función devuelve una cadena que contiene una línea del cuerpo http. Si los datos
devuelto no contiene un '\ n' final, se supone que son los últimos datos disponibles
antes del final de la secuencia.
Argumentos
· applet (clase_AppletHTTP) -- Un AppletHTTP clase
Returns
una cuerda. La cadena puede estar vacía si llegamos al final de la secuencia.
AppletHTTP.receive (subprograma [, Talla])
Lee datos del cuerpo HTTP, de acuerdo con la lectura especificada tamaño. Si el tamaño is
falta, la función intenta leer todo el contenido de la secuencia hasta el final. Si
de la forma más tamaño es más grande que el cuerpo http, devuelve la cantidad de datos disponibles.
Argumentos
· applet (clase_AppletHTTP) -- Un AppletHTTP clase
· tamaño (entero) - el tamaño de lectura requerido.
Returns
Siempre devuelve una cadena, la cadena puede estar vacía si la conexión está cerrada.
AppletHTTP.send (subprograma, mensaje)
Enviar el mensaje MSG en el cuerpo de la solicitud http.
Argumentos
· applet (clase_AppletHTTP) -- Un AppletHTTP clase
· MSG (cadena): el mensaje a enviar.
clase AppletTCP ()
Esta clase se usa con applets que requieren el modo 'tcp'. El subprograma tcp puede ser
registrado con el core.register_service () función. Se utilizan para procesar
una secuencia tcp como un servidor en la parte posterior de HAProxy.
AppletTCP.c
Returns
A Convertidores clase
Este atributo contiene un objeto de clase Converters.
AppletTCP.sc
Returns
A Convertidores clase
Este atributo contiene un objeto de clase Converters. Las funciones de este objeto
devuelve siempre una cadena.
AppletTCP.f
Returns
A Recupera clase
Este atributo contiene un objeto de clase Fetches.
AppletTCP.sf
Returns
A Recupera clase
Este atributo contiene un objeto de clase Fetches.
AppletTCP.getline (subprograma)
Esta función devuelve una cadena que contiene una línea de la secuencia. Si los datos
devuelto no contiene un '\ n' final, se supone que son los últimos datos disponibles
antes del final de la secuencia.
Argumentos
· applet (clase_AppletTCP) -- Un subprograma TCP clase
Returns
una cuerda. La cadena puede estar vacía si llegamos al final de la secuencia.
AppletTCP.receive (subprograma [, Talla])
Lee datos de la secuencia TCP, de acuerdo con la lectura especificada tamaño. Si el tamaño
falta, la función intenta leer todo el contenido del flujo hasta el final.
Argumentos
· applet (clase_AppletTCP) -- Un subprograma TCP clase
· tamaño (entero) - el tamaño de lectura requerido.
Returns
Siempre devuelve una cadena, la cadena puede estar vacía si la conexión está cerrada.
AppletTCP.send (appletmsg)
Envíe el mensaje en la secuencia.
Argumentos
· applet (clase_AppletTCP) -- Un subprograma TCP clase
· MSG (cadena): el mensaje a enviar.
Aquí se pueden encontrar muchas bibliotecas lua útiles:
· https://lua-toolbox.com/
Acceso a Redis:
· https://github.com/nrk/redis-lua
Este es un ejemplo sobre el uso de la biblioteca de Redis con HAProxy. Tenga en cuenta que cada llamada
de cualquier función de esta biblioteca puede generar un error si falla la conexión del socket.
- cargar la biblioteca de redis
local redis = require ("redis");
función hacer_algo (txn)
- crear y conectar un nuevo conector tcp
tcp local = core.tcp ();
TCP:establecer el tiempo de espera(1);
tcp: conectar ("127.0.0.1", 6379);
- use la biblioteca redis con este nuevo socket
cliente local = redis.connect ({socket = tcp});
cliente: ping ();
final
Abrir SSL:
· http://mkottman.github.io/luacrypto/index.html
· https://github.com/brunoos/luasec/wiki
Use haproxy-lua en línea usando los servicios de onworks.net