This is the Spanish manual for GNU Gatekeeper 2.2.5.
A more recent (English) manual is in your GnuGk download archive.

Capítulos: Índice · Introducción · Instalacion · Empezando · Configuración Básica · Enrutado · RAS Config · Autenticación · Accounting · Vecinos · Configuración Por-Terminal · Configuración Avanzada · Monitoreando

9. Configuración de Accounting

Accounting se denomina a las operaciones que los usuarios realizarán en el gatekeeper: inicio de una llamada, detención y retroalimentación de la misma; e incluso el inicio y detención del propio gatekeeper.

Las secciones siguientes en el Archivo de Configuración pueden ser utilzadas para configurar el Accounting.

9.1 Sección [Gatekeeper::Acct]

Esta sección define una lista de módulos que serán los que realicen el accounting. El accounting es para registrar eventos de encendido/apagado del gatekeeper y eventos de inicio/detención/actualización de llamada. Cada módulo de accounting registra eventos recibidos a un módulo de almacenamiento específico. Dicho almacenamiento puede ser en texto plano o un servidor RADIUS y muchos más. La configuración es muy similar a la de autenticación de gatekeeper. Puede revisar la sección [Gatekeeper::Auth] para más detalle.

Todos los CDRs también serán enviados al puerto de estado y podrán ser utilizados por aplicaciones externas.

Sintaxis:

acctmod=acciones

 <acctmod>  := FileAcct | RadAcct | SQLAcct | StatusAcct | SyslogAcct | CapacityControl | ...
 <acciones> := <control>[;<evento>,<evento>,...]
 <control>  := optional | required | sufficient | alternative
 <evento>   := start | stop | connect | update | on | off

La lista de eventos le indica al gatekeeper cuales eventos debe capturar o registrar con el módulo de accounting dado (si un tipo de evento es soportado por el módulo):
  • start - Una llamada ha sido iniciada y un mensaje de Configuración ha sido recibido (solo disponible en modo enrutado),
  • connect - Una llamada ha sido establecida (solo disponible en modo enrutado),
  • update - Una llamada está activa y se realizó la actualización periódica para reflejar la duración de la nueva llamada. La Frecuencia de estas actualizaciones está determinada por el parámetro AcctUpdateInterval definido en la sección [CallTable],
  • stop - Una llamada ha sido desconectada o parada (eliminada de la tabla de llamadas de GK),
  • on - El gatekeeper ha sido iniciado,
  • off - El gatekeeper ha sido apagado.
Un evento registrado por un módulo puede resultar en uno de estos tres códigos: ok, fail, next.
  • ok - El evento ha sido registrado correctamente por este módulo,
  • fail - El módulo falló al registrar el evento,
  • next - El evento no ha sido registrado por este módulo, porque el módulo no está configurado para o no soporta este tipo de evento.
Los módulos de accounting pueden ser apilados para registrar eventos de multiples módulos o para crear configuraciones a prueba de fallos. La bandera control para cada módulo, junto con los códigos de resultado, definen lo que es el estado final del evento procesado por la pila completa de módulos. Si el resultado final es failure, pueden tener lugar algunas acciones especiales. Actualmente, si la anotación de un evento de inicio de llamada (start) falla, la llamada es desconectada inmediatamente. Los siguientes banderas control están reconocidas:
  • required - Si el módulo falla al aregistrar un evento, el estado final es establecido a "Fallo" y el evento es pasado a cualquiera de los módulos restantes,
  • optional - El módulo intenta registrar un evento, pero el estado final no es afectado por el éxito o fracaso (a excepción de cuando el módulo es el último en la lista). El evento es siempre pasado a cualquiera de los módulos restantes,
  • sufficient - El módulo determina el estado final. Si un evento es registrado satisfactoriamente, ningún módulo más es procesado. En caso contrario el estado final es establecido como un "Fallo" y el evento es pasado a cualquiera del resto de módulos,
  • alternative - Si el módulo registra un evento satisfactoriamente, ningún módulo más será procesado. En caso contrario el estado final no será modificado y el evento es pasado a cualquiera de los módulos restantes.

Módulos de acconting actualmente soportados:

  • FileAcct

    Un archivo de texto plano es el que registra los CDRs. Éste módulo escribe una línea de estado como una línea CDR en un archivo de texto especifico. Este modulo soporta solo el evento de accounting stop. Las opciones de configuración serán revisadas en la sección [FileAcct].

  • RadAcct

    Este módulo realiza accounting a través de RADIUS. Éste módulo soporta todos los tipos de eventos (start, stop, update, on, off). Revisar la sección [RadAcct] para detalles de configuración.

  • SQLAcct

    Este módulo realiza accounting a través de SQL. Éste módulo soporta los tipos de evento (start, connect, stop, update). Revisar la sección [SQLAcct] para detalles de configuración.

  • StatusAcct

    Este módulo registra todos los eventos de accounting en el puerto de estado. Puede ser utilizado como interfaz hacia aplicaciones externas en tiempo real. Este módulo soporta los tipos de evento (start, connect, stop, update). Revisar la sección [StatusAcct] para detalles de configuración.

  • SyslogAcct

    Este módulo registra todos los eventos de accounting en el registro del sistema Unix (syslog) Unix. Este módulo soporta los eventos (start, connect, stop, update). Revisar la sección [SyslogAcct] para detalles de configuración.

  • CapacityControl

    Este módulo realiza registro de volúmen de llamadas entrantes, es indispensable para que el módulo de autenticación CapacityControl funcione correctamente. Revisar la sección [CapacityControl] para mayor detalle.

  • default

    Este es un pseudo-módulo especial y es utilizado para configurar el estado final si los módulos precedentes no lo han determinado. El formato es como sigue:

    Sintaxis:

     default=<estado>[;<evento>,<evento>,...]
     <estado> := accept | fail
     <evento> := start | stop | update | on | off
    

El ejemplo de configuración 1 intenta registrar el inicio/fin de una llamada con un servidor RADIUS, y siempre escribe un CDR en un archivo de texto:

Ejemplo:

RadAcct=optional;start,stop
FileAcct=required

El ejemplo de configuración 2 intenta registrar el inicio/fin de una llamada con un servidor RADIUS, si ésto falla utiliza un archivo para registrar los CDRs:

Ejemplo:

RadAcct=alternative;start,stop
FileAcct=sufficient;stop
default=accept

La regla default es requerida aquí para prevenir que la llamada sea rechazada por si la anotación del evento de inicio de RadAcct falla. Si RadAcct retorna el código fail, se pasa al módulo FileAcct. El módulo FileAcct no soporta el evento start, así que retorna el código next. Si no estuviese la regla default, el estado final sería failure, porque ningún módulo ha sido capaz de anotar el evento.

El ejemplo de configuración 3 siempre anota los eventos de inicio y fin de llamada con un servidor RADIUS, si este falla para el evento de fin de llamada, utiliza un archivo CDR para almacenar la información de la llamada:

Ejemplo:

RadAcct=alternative;start,stop
FileAcct=sufficient;stop
default=fail;start

La regla default es opcional aquí. Si RadAcct retorna el código fail para el evento start, el código es pasado al módulo FileAcct. El módulo FileAcct no soporta el evento start, así que retorna el código next. La regla default se asegura de que la llamada está desconectada si el evento de inicio de llamada puede no haber sido anotado con RadAcct. Pero deseamos almacenar un CDR en un fichero de texto en caso de que el servidor RADIUS esté caído cuando la llamada se desconecte, así podemos extraer la duración de la llamada dentro del sistema de facturación más tarde.

9.2 Sección [FileAcct]

Este módulo de accounting escribe líneas CDR en un archivo de texto específico. El formato CDR puede ser uno estándar (el mismo que se puede ver por la interfaz de estado) o uno personalizado (usando una cadena de consulta parametrizada).

  • DetailFile=RUTA_COMPLETA_Y_NOMBRE_DE_ARCHIVO
    Default: N/A

    Defina la ruta completa para el fichero de texto plano CDR. Si un fichero con el nombre dado ya existe, los nuevos CDRs serán añadidos al final del fichero.

  • StandardCDRFormat=0
    Default: 1

    Utilice un formato CDR compatible con el formato de CDR de la interfaz de estado (1) o cree cadenas CDR personalizadas desde la cadena parametrizada CDRString.

  • CDRString=%s|%g|%u|%{Calling-Station-Id}|%{Called-Station-Id}|%d|%c
    Default: N/A

    Si StandardCDRFormat está desactivado (0) o no se especifica nada, esta cadena parametrizada le indica al gatekeeper cómo crear CDRs personalizados. Los parámetros son especificados usando el caracter % y pueden ser una letra (como %n) o más largos (como %{CallId}). Cualquier caracter restante que no sea nombre de parámetro será simplemente copiado al final de la cadena CDR. Los parámetros reconocidos son los siguientes:

    • %g - Nombre del gatekeeper.
    • %n - Número de llamada (no es único después del reinicio del gatekeeper).
    • %d - Duración de la llamada (segundos).
    • %t - Duración total de la llamada (desde Setup hasta Release Complete).
    • %c - Causa de desconexión Q.931 (entero decimal).
    • %r - Quién desconecto la llamada (-1 - desconocido, 0 - el gatekeeper, 1 - el emisor, 2 - el receptor).
    • %p - PDD (Post Dial Delay) en segundos.
    • %s - Identificador de sesión, único (para este gatekeeper) (Acct-Session-Id).
    • %u - H.323 ID de la parte llamada.
    • %{gkip} - Dirección IP address del gatekeeper.
    • %{CallId} - Identificador H.323 de la llamada (16 dígitos hex de 8-bits).
    • %{ConfId} - Identificador H.323 de la conferencia (16 dígitos hex de 8-bits).
    • %{setup-time} - Cadena de hora y fecha para el mensaje de Setup Q.931.
    • %{alerting-time} - Cadena de hora y fecha para el mensaje de Alerting Q.931.
    • %{connect-time} - Cadena de hora y fecha para un evento de llamada conectada.
    • %{disconnect-time} - Cadena de hora y fecha para un evento de llamada desconectada.
    • %{ring-time} - Tiempo que un teléfono remoto estuvo sonando (desde Alerting hasta Connect o Release Complete).
    • %{caller-ip} - Dirección IP del emisor.
    • %{caller-port} - Puerto de señalización por el que llama el emisor.
    • %{callee-ip} - Dirección IP del receptor
    • %{callee-port} - Puerto de señalización por el que recibe la llamada el receptor.
    • %{src-info} - Una lista separada por comas de alias del emisor.
    • %{dest-info} - Una lista separada por comas de alias del receptor.
    • %{Calling-Station-Id} - Número del emisor
    • %{Called-Station-Id} - Número del receptor (reescrito)
    • %{Dialed-Number} - Número marcado (como es recibido por la parte llamada).
    • %{caller-epid} - Identificador del endpoint del emisor.
    • %{callee-epid} - Identificador del endpoint del receptor.
    • %{call-attempts} - Número de intentos para establecer la llamada (con failover esta puede ser > 1).
    • %{last-cdr} - Éste es el último CDR para esta llamada ? (0 / 1) solamente cuando utilice failover éste puede ser 0.
    • %{media-oip} - Caller's RTP media IP (solamente para llamadas ruteadas o dirigidas con H.245).
    • %{codec} - Codec de audio utilizado durante la llamada (solamente para llamadas ruteadas o dirigidas H.245).

  • TimestampFormat=Cisco
    Default: N/A

    Formato de las cadenas de fecha y hora impresas en las cadenas CDR. Si esta configuración no se especifica, se aplicará una configuración global de la sección principal del gatekeeper.

  • Rotate=hourly | daily | weekly | monthly | L... | S...
    Default: N/A

    Si se configura, el archivo CDR será rotado basado en esta configuración. La rotación Hourly habilita una rotación por hora, la daily - una por día, weekly - una por semana y monthly - una por mes. El momento exacto de la rotación es determinado por una combinación de RotateDay y RotateTime. Durante la rotación, un fichero existente será renombrado a CURRENT_FILENAME.YYYYMMDD-HHMMSS, donde YYYYMMDD-HHMMSS es reemplazado con la hora y fecha actuales y nuevos CDRs son registrados a un archivo vacío.
    Además, la rotación por número de CDRs escritos (L...) y por tamaño de fichero (S...) están soportadas. El prefijo L especifica un número de líneas CDR escritas, el prefijo S especifica el tamaño de un fichero CDR. Los sufijos k y m pueden ser utilizados para especificar miles (kilobytes) y millones (megabytes) de bytes. Ver los ejemplos para más detalles.

    Ejemplo 1 - sin rotación:

    [FileAcct]
    DetailFile=/var/log/gk/cdr.log

    Ejemplo 2 - rotación cada hora (00:45, 01:45, ..., 23:45):

    [FileAcct]
    DetailFile=/var/log/gk/cdr.log
    Rotate=hourly
    RotateTime=45

    Ejemplo 3 - rota cada día a las 23:00 (11PM):

    [FileAcct]
    DetailFile=/var/log/gk/cdr.log
    Rotate=daily
    RotateTime=23:00

    Ejemplo 4 - rota cada Domingo a las 00:59:

    [FileAcct]
    DetailFile=/var/log/gk/cdr.log
    Rotate=weekly
    RotateDay=Sun
    RotateTime=00:59

    Ejemplo 5 - rota el último día de cada mes:

    [FileAcct]
    DetailFile=/var/log/gk/cdr.log
    Rotate=monthly
    RotateDay=31
    RotateTime=23:00

    Ejemplo 6 - rota cada 10000 CDRs:

    [FileAcct]
    DetailFile=/var/log/gk/cdr.log
    Rotate=L10000

    Ejemplo 7 - rota cada 10 kilobytes:

    [FileAcct]
    DetailFile=/var/log/gk/cdr.log
    Rotate=S10k

9.3 Sección [RadAcct]

Este módulo de accounting envía datos de accounting a un servidor RADIUS. La configuración del módulo es casi lo mismo que para los autenticadores RADIUS (ver [RadAuth] y [RadAliasAuth] para mayor detalles sobre los parámetros).

  • Servers=SERVER1[:AUTH_PORT:ACCT_PORT[:SECRET]];SERVER2[:AUTH_PORT:ACCT_PORT[:SECRET]];...
    Default: N/A

    Servidores RADIUS a los que se enviará los datos de accounting. Si no se especifica información sobre el puerto, el puerto utilizado se tomará del parámetro DefaultAcctPort. Si SECRET no está configurado, por defecto se usará el secret compartido de SharedSecret. El nombre del servidor puede ser tanto una dirección IP como un nombre DNS.

    Líneas de Servidores de ejemplo:

    Servers=192.168.1.1
    Servers=192.168.1.1:1645:1646
    Servers=192.168.1.1:1645:1646:secret1
    Servers=radius1.mycompany.com:1812:1813
    Servers=radius1.mycompany.com;radius2.mycompany.com
    Servers=radius1.mycompany.com:1812:1813:secret1;radius2.mycompany.com:1812:1813:secret2

  • LocalInterface=IP_OR_FQDN
    Default: N/A

    Interfaz de red local en particular que el cliente RADIUS deberá usar para comunicarse con los servidores RADIUS.

  • RadiusPortRange=10000-11000
    Default: N/A

    Por defecto (si esta opción no está establecida) el cliente RADIUS asigna los puertos dinámicamente como esté especificado por el sistema operativo. Si usted desea restringir al cliente RADIUS para que utilice puertos solamente desde un rango particular - active este parámetro.

  • DefaultAcctPort=PORT_NO
    Default: 1813

    El puerto por defecto que será utilizado para las peticiones de accounting de RADIUS, si no se superpone por el atributo Servers.

  • SharedSecret=SECRET
    Default: N/A (cadena vacía)

    Un "secret" utilizado para autenticar este GnuGK (cliente NAS) con el servidor RADIUS. Ésta debe ser una contraseña criptográficamente sólida. Éste es el valor utilizado por defecto, si no se especifica secret en Servers. Si EncryptAllPasswords está activado, o la variable KeyFilled está definida en esta sección, la contraseña está en forma encriptada y debe ser creada usando la herramienta addpasswd.

  • RequestTimeout=TIMEOUT_MS
    Default: 2000 (milisegundos)

    Tiempo de espera (milisegundos) para que un servidor RADIUS responda a una solicitud enviada por GnuGK. Si no se recibe una respuesta dentro de este periodo de tiempo, se consultará al siguiente servidor RADIUS.

  • IdCacheTimeout=TIMEOUT_MS
    Default: 9000 (milisegundos)

    Tiempo de espera (milisegundos) para que identificadores de petición RADIUS de 8-bits sean únicos.

  • SocketDeleteTimeout=TIMEOUT_MS
    Default: 60000 (milisegundos) - 60 s

    Tiempo que se espera para cerrar sockets RADIUS no utilizados.

  • RequestRetransmissions=NUMBER
    Default: 2

    Cuantas veces una simple solicitud RADIUS es transmitida a cada servidor RADIUS configurado (si no se recibe una respuesta).

  • RoundRobinServers=BOOLEAN
    Default: 1

    Método de retransmisión de solicitudes RADIUS.

  • AppendCiscoAttributes=BOOLEAN
    Default: 0

    Si está activa, los atributos RADIUS específicos de fabricante Cisco son incluídos en las solicitudes RADIUS (h323-conf-id,h323-call-origin,h323-call-type).

  • TimestampFormat=ISO8601
    Default: N/A

    Formato de las cadenas de fecha y hora enviadas en los atributos RADIUS. Si este atributo no está especificado, uno global de la sección principal de gatekeeper será aplicado.

  • UseDialedNumber=BOOLEAN
    Default: 0

    Selecciona el tipo de número Called-Station-Id entre el original (como fue marcado por el usuario) - UseDialedNumer=1 - y el reescrito - UseDialedNumer=0.

9.4 Sección [SQLAcct]

Este módulo de accounting almacena información de accounting directamente a una base de datos SQL. Muchas opciones de configuración son comunes con otros módulos SQL.

  • Driver=MySQL | PostgreSQL | Firebird
    Default: N/A

    El driver de base de datos SQL a usar. Actualmente, los manejadores implementados son MySQL, PostgreSQL y Firebird.

  • Host=DNS[:PORT] | IP[:PORT]
    Default: localhost

    Dirección de la máquina del servidor SQL. Puede estar en forma de DNS[:PORT] o IP[:PORT]. Como sql.mycompany.com o sql.mycompany.com:3306 o 192.168.3.100.

  • Database=billing
    Default: billing

    El nombre de la base de datos a la cual se realiza la conexión.

  • Username=gnugk

    El nombre de usuario utilizado para conectarse a la base de datos.

  • Password=secret

    La contraseña utilizada para conectarse a la base de datos. Si la contraseña no se especifica, se intentará una conexión a la base de datos sin ninguna contraseña. Si EncryptAllPasswords está activo, o una variable KeyFilled es definida en esta sección, la contraseña está en una forma encriptada y debe ser creada usando la herramienta addpasswd.

  • StartQuery=INSERT ...
    Default: N/A

    Define una consulta SQL, utilizada para insertar un nuevo registro de llamada a la base de datos. La consulta es parametrizada - eso significa que el reemplazo de parámetros se hace antes de que cada consulta sea ejecutada. Los parámetros son precedidos por el caracter % y pueden ser una letra (como %u) o cadenas enteras (como %{src-info}). Especificar %% para añadir un caracter de porcentaje dentro de la cadena de consulta (como %%). Para SQLAcct se pueden utilizar los siguientes parámetros:

    • %g - Nombre del gatekeeper.
    • %n - Número de llamada (no es único después del reinicio del gatekeeper).
    • %d - Duración de la llamada (segundos).
    • %t - Duración total de la llamada (desde Setup hasta Release Complete).
    • %c - Causa de desconexión Q.931 (entero decimal).
    • %r - Quién desconecto la llamada (-1 - desconocido, 0 - el gatekeeper, 1 - el emisor, 2 - el receptor).
    • %p - PDD (Post Dial Delay) en segundos.
    • %s - Identificador de sesión, único (para este gatekeeper) (Acct-Session-Id).
    • %u - H.323 ID de la parte llamada.
    • %{gkip} - Dirección IP address del gatekeeper.
    • %{CallId} - Identificador H.323 de la llamada (16 dígitos hex de 8-bits).
    • %{ConfId} - Identificador H.323 de la conferencia (16 dígitos hex de 8-bits).
    • %{setup-time} - Cadena de hora y fecha para el mensaje de Setup Q.931.
    • %{alerting-time} - Cadena de hora y fecha para el mensaje de Alerting Q.931.
    • %{connect-time} - Cadena de hora y fecha para un evento de llamada conectada.
    • %{disconnect-time} - Cadena de hora y fecha para un evento de llamada desconectada.
    • %{ring-time} - Tiempo que un teléfono remoto estuvo sonando (desde Alerting hasta Connect o Release Complete).
    • %{caller-ip} - Dirección IP del emisor.
    • %{caller-port} - Puerto de señalización por el que llama el emisor.
    • %{callee-ip} - Dirección IP del receptor
    • %{callee-port} - Puerto de señalización por el que recibe la llamada el receptor.
    • %{src-info} - Una lista separada por comas de alias del emisor.
    • %{dest-info} - Una lista separada por comas de alias del receptor.
    • %{Calling-Station-Id} - Número del emisor
    • %{Called-Station-Id} - Número del receptor (reescrito)
    • %{Dialed-Number} - Número marcado (como es recibido por la parte llamada).
    • %{caller-epid} - Identificador del endpoint del emisor.
    • %{callee-epid} - Identificador del endpoint del receptor.
    • %{call-attempts} - Número de intentos para establecer la llamada (con failover esta puede ser > 1).
    • %{last-cdr} - Éste es el último CDR para esta llamada ? (0 / 1) solamente cuando utilice failover éste puede ser 0.
    • %{media-oip} - Caller's RTP media IP (solamente para llamadas ruteadas o dirigidas con H.245).
    • %{codec} - Codec de audio utilizado durante la llamada (solamente para llamadas ruteadas o dirigidas H.245).

    Consulta de ejemplo:

    INSERT INTO call (gkname, sessid, username, calling, called) 
            VALUES ('%g', '%s', '%u', '%{Calling-Station-Id}', '%{Called-Station-Id}')
    

  • StartQueryAlt=INSERT ...
    Default: N/A

    Define una consulta SQL utilizada para insertar un nuevo registro de llamada en la base de datos en caso de que StartQuery falle por alguna razón (la llamada ya existe, por ejemplo). La sintaxis y parámetros son los mismos que para StartQuery.

  • UpdateQuery=UPDATE ...
    Default: N/A

    Define una consulta SQL utilizada para actualizar un registro de llamada en una base de datos con el estado actual de llamada. La sintaxis y parámetros son los mismos que para StartQuery.

    Ejemplo de consulta:

    UPDATE call SET duration = %d WHERE gkname = '%g' AND sessid = '%s'
    

  • StopQuery=UPDATE ...
    Default: N/A

    Define una consulta SQL utilizada para actualizar el registro de llamada en una base de datos cuando la llamada ha finalizado (disconnected). La sintaxis y parámetros son los mismos que para StartQuery.

    Ejemplo de consulta:

    UPDATE call SET duration = %d, dtime = '%{disconnect-time}' WHERE gkname = '%g' AND sessid = '%s'
    

  • StopQueryAlt=INSERT ...
    Default: N/A

    Define una consulta SQL utilizada para actualizar un registro de llamada en una base de datos cuando la llamada ha finalizado (disconnected) en caso de que StopQuery falle (porque el registro de llamada no exista ya, por ejemplo). La sintaxis y parámetros son los mismos que para StartQuery.

    Ejemplo de consulta:

    INSERT INTO call (gkname, sessid, username, calling, called, duration) 
            VALUES ('%g', '%s', '%u', '%{Calling-Station-Id}', '%{Called-Station-Id}', %d)
    

  • TimestampFormat=MySQL
    Default: N/A

    Formato de cadena de fecha y hora utilizada en las consultas. Si este atributo no es especificado, La confifuración global de la sección principal de gatekeeper será aplicada.

  • MinPoolSize=5
    Default: 1

    Número de conecciones SQL concurrentes dentro del pool de conexiones. La primera conexión disponible dentro del pool es utilizada pata almacenar datos de accounting.

9.5 Sección [StatusAcct]

Este módulo de accounting envía toda la información del proceso de accounting hacia el puerto de estado donde podrá ser utilizada por sistemas externos en tiempo real.

  • StartEvent=CALL|Start|%{CallId}
    Default: CALL|Start|%{caller-ip}:%{caller-port}|%{callee-ip}:%{callee-port}|%{CallId}

    Define el evento que se va a visualizar para una nueva llamada. La cadena está parametrizada con los mismos parámetros de otros módulos de accounting. (Revisar la sección [SQLAacct] para más detalle).

  • StopEvent=CALL|Stop|%{CallId}
    Default: CALL|Stop|%{caller-ip}:%{caller-port}|%{callee-ip}:%{callee-port}|%{CallId}

    Define el evento que se va a mostrar cuando una llamada finaliza (disconnected). La sitaxis y parámetros son los mismos que para StartEvent. Este evento es equivalente al antiguo evento CDR del puerto de estado, pero más fexible.

  • UpdateEvent=CALL|Update|%{CallId}
    Default: CALL|Update|%{caller-ip}:%{caller-port}|%{callee-ip}:%{callee-port}|%{CallId}

    Define el evento utilizado para actualizar el estado actual de la llamada. La sintáxis y parámetros son los mismos que para StartEvent.

  • ConnectEvent=CALL|Connect|%{CallId}
    Default: CALL|Connect|%{caller-ip}:%{caller-port}|%{callee-ip}:%{callee-port}|%{CallId}

    Define el evento cuando una llamada es establecida (connected). La sintaxis y parámetros son los mismos que para StartEvent.

  • TimestampFormat=MySQL
    Default: N/A

    Formato de la cadena de fecha y hora utilizada en cada evento. Si esta configuración no se especifica, se utilizará la configuración global establecida en la sección principal del gatekeeper.

9.6 Sección [SyslogAcct]

Este módulo de accounting envía la información del accounting hacia el registro del sistema de Unix (Unix syslog) por consiguiente no está disponible para Windows. El demonio local del "syslog" enrutará los mensajes de accounting de acuerdo a su configuración (generalmente /etc/syslog.conf).

  • SyslogFacility=LOG_LOCAL1
    Default: LOG_USER

    Establezca la facilidad del syslog a uno de los siguientes valores: LOG_USER, LOG_DAEMON, LOG_AUTH, LOG_LOCAL0, LOG_LOCAL1, LOG_LOCAL2, LOG_LOCAL3, LOG_LOCAL4, LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7.

  • SyslogLevel=LOG_NOTICE
    Default: LOG_INFO

    Establezca el nivel de syslog a uno de los siguientes valores: LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG.

  • StartEvent=CALL|Start|%{CallId}
    Default: CALL|Start|%{caller-ip}:%{caller-port}|%{callee-ip}:%{callee-port}|%{CallId}

    Define el evento mostrado para una nueva llamada. La cadena es parametrizada con las mismas variables utilizadas en otros módulos de accounting (Revisar [SQLAacct] para más detalle).

  • StopEvent=CALL|Stop|%{CallId}
    Default: CALL|Stop|%{caller-ip}:%{caller-port}|%{callee-ip}:%{callee-port}|%{CallId}

    Define el evento para cuando una llamada termina (disconnected). La sintaxis y parámetros son los mismos que para StartEvent. Este evento es equivalente al antiguo evento de puerto de estado CDR, pero más flexible.

  • UpdateEvent=CALL|Update|%{CallId}
    Default: CALL|Update|%{caller-ip}:%{caller-port}|%{callee-ip}:%{callee-port}|%{CallId}

    Define el evento utilizado para actualizar el estado actual de la llamada. La sintaxis y parámetros son los mismos que para StartEvent.

  • ConnectEvent=CALL|Connect|%{CallId}
    Default: CALL|Connect|%{caller-ip}:%{caller-port}|%{callee-ip}:%{callee-port}|%{CallId}

    Define el evento utilizado cuando una llamada es establecida (connected). La sintaxis y parámetros son los mismos que para StartEvent.

  • TimestampFormat=MySQL
    Default: N/A

    Formato de la cadena de fecha y hora utilizada en cada evento. Si esta configuración no se especifica, se utilizará la configuración global establecida en la sección principal del gatekeeper.

Ejemplo de un esquema MySQL para el módulo SQLAcct

El módulo SQLAcct está diseñado para ser adaptado a cualquier estructura de base de datos que usted ya tenga. Aquí se puede definir todas las consultas para que encajen en las tablas que se hayan definido. A continuación se presenta un ejemplo de cómo implementar éste módulo empleando el motor de base de datos MySQL y puede ser utilizado como punto de partida para su propia implementación.

Creamos una nueva base de datos; aquí utilizaremos el nombre 'GNUGK':

create database GNUGK;

Luego creamos una tabla dentro de esta base de datos para almacenar sus datos de accounting; llamaremos a esta tabla con el nombre de 'CDR'.

create table GNUGK.CDR (
        gatekeeper_name varchar(255),
        call_number int zerofill,
        call_duration mediumint unsigned zerofill,
                index duration_idx (call_duration),
        disconnect_cause smallint unsigned zerofill,
                index dcc_idx (disconnect_cause),
        acct_session_id varchar(255),
        h323_id varchar(255),
        gkip varchar(15),
        CallId varchar(255),
        ConfID varchar(255),
        setup_time datetime,
        connect_time datetime,
        disconnect_time datetime,
        caller_ip varchar(15),
                index srcip_idx (caller_ip),
        caller_port smallint unsigned zerofill,
        callee_ip varchar(15),
                index destip_idx (callee_ip),
        callee_port smallint unsigned zerofill,
        src_info varchar(255),
        dest_info varchar(255),
        Calling_Station_Id varchar(255),
        Called_Station_Id varchar(255),
                index dialednumber_idx (Called_Station_Id (20)),
        Dialed_Number varchar(255)
);

Luego creamos un usuario que se encargará de manipular esta base de datos.

GRANT delete,insert,select,update ON GNUGK.* TO 'NombreQueUstedDesee'@'localhost' IDENTIFIED BY 'UnPassword';

Con este comando estaremos permitiendo el acceso solamente a los datos del servidor local. Si usted necesita acceder a estos datos desde cualquier otra computadora, se deben establecer las opciones de seguridad apropiadas.

Luego agregamos la siguiente configuración al archivo gnugk.ini para que inserte y actualice el historial de las llamadas dentro de la base de datos.

[Gatekeeper::Acct]
SQLAcct=optional;start,stop,update
FileAcct=sufficient;stop

[FileAcct]
DetailFile=Agregue aquí la ruta deseada. Algo como /var/log/cdr.log
StandardCDRFormat=0
CDRString=%g|%n|%d|%c|%s|%u|%{gkip}|%{CallId}|%{ConfId}|%{setup-time}|%{connect-time}|%{disconnect-time}|%{caller-ip}|%{caller-port}|%{callee-ip}|%{callee-port}|%{src-info}|%{dest-info}|%{Calling-Station-Id}|%{Called-Station-Id}|%{Dialed-Number}
Rotate=daily
RotateTime=23:59

[SQLAcct]
Driver=MySQL
Database=GNUGK
Username=NombreQueUstedDesee
Password=UnPassword
StartQuery= insert into CDR (gatekeeper_name, call_number, call_duration, disconnect_cause, acct_session_id, h323_id, gkip, CallId, ConfId, setup_time, connect_time, disconnect_time, caller_ip, caller_port, callee_ip, callee_port, src_info, dest_info, Calling_Station_Id, Called_Station_Id, Dialed_Number) values ('%g', '%n', %d, %c, '%s', '%u', '%{gkip}', '%{CallId}', '%{ConfId}', '%{setup-time}', '%{connect-time}', '%{disconnect-time}', '%{caller-ip}', '%{caller-port}', '%{callee-ip}', '%{callee-port}', '%{src-info}', '%{dest-info}', '%{Calling-Station-Id}', '%{Called-Station-Id}', '%{Dialed-Number}')

StartQueryAlt= insert into CDR (gatekeeper_name, call_number, call_duration, disconnect_cause, acct_session_id, h323_id, gkip, CallId, ConfID, setup_time, connect_time, disconnect_time, caller_ip, caller_port, callee_ip, callee_port, src_info, dest_info, Calling_Station_Id, Called_Station_Id, Dialed_Number) values ('%g', '%n', %d, %c, '%s', '%u', '%{gkip}', '%{CallId}', '%{ConfID}', '%{setup-time}', '%{connect-time}', '%{disconnect-time}', '%{caller-ip}', '%{caller-port}', '%{callee-ip}', '%{callee-port}', '%{src-info}', '%{dest-info}', '%{Calling-Station-Id}', '%{Called-Station-Id}', '%{Dialed-Number}')

UpdateQuery= update CDR set call_duration=%d where gatekeeper_name='%g' and acct_session_id='%s'

StopQuery= update CDR set call_duration=%d, disconnect_cause=%c, disconnect_time='%{disconnect-time}' where gatekeeper_name='%g' and acct_session_id='%s'

StopQueryAlt= insert into CDR (gatekeeper_name, call_number, call_duration, disconnect_cause, acct_session_id, h323_id, gkip, CallId, ConfID, setup_time, connect_time, disconnect_time, caller_ip, caller_port, callee_ip, callee_port, src_info, dest_info, Calling_Station_Id, Called_Station_Id, Dialed_Number) values ('%g STOP Alt', '%n', %d, %c, '%s', '%u', '%{gkip}', '%{CallId}', '%{ConfID}', '%{setup-time}', '%{connect-time}', '%{disconnect-time}', '%{caller-ip}', '%{caller-port}', '%{callee-ip}', '%{callee-port}', '%{src-info}', '%{dest-info}', '%{Calling-Station-Id}', '%{Called-Station-Id}', '%{Dialed-Number}')

TimestampFormat=MySQL


Página siguiente Página anterior Índice general

Capítulos: Índice · Introducción · Instalacion · Empezando · Configuración Básica · Enrutado · RAS Config · Autenticación · Accounting · Vecinos · Configuración Por-Terminal · Configuración Avanzada · Monitoreando



Last updated: 20. Aug 2017
Page maintained by Jan Willamowius