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
El puerto de estado es una interfaz externa para monitorear y controlar el gatekeeper.
El gatekeeper arrojará mensajes sobre las llamadas actuales hacia todos
los clientes conectados y puede recibir comandos mediante esta interfaz.
Los mensajes enviados por el gatekeeper hacia el puerto de estado estan agrupados
dentro de tres Niveles de rastreo de salida:
- Nivel 0
Notificaciones de recarga (Reload) y respuesta directa a comandos ejecutados.
- Nivel 1
Notificaciones de recarga (Reload), respuesta directa a comandos ejecutados, CDRs y Route Requests.
- Nivel 2
Todas las salidas (Notificacione se recarga (Reload), respuesta directa a comandos ejecutados,
CDRs, Route Requests,RAS, ...). Éste es el nivel de salida por defecto.
El cliente que esté conectado hacia el puerto de estado puede seleccionar el nivel de salida (output level) que él desee.
La interfaz es un simple puerto TCP (por defecto: 7000), usted puede conectarse hacia éste mediante telnet u otro cliente.
Un ejemplo de un cliente es el Java GUI, aka GkGUI. Otro ejemplo es la aplicación Automatic Call Distribution, aka GnuGk ACD.
Áreas de aplicación.
Depende de usted lo que haga con el poder del puerto de estado, pero aqui hay algunas ideas:
- Monitoreo de llamadas
- Monitoreo de endpoints registrados
- Interfaz Gráfica de usuario (GUI)
Ver GkGUI.
- Ruteo de llamadas
Ver GnuGk ACD.
- Aplicaciones de facturación
Analice los mensajes CDR y adminístrelos luego desde una aplicación de facturación.
- Interfaz con aplicaciones externas
Si usted no desea publicar el código fuente de alguna característica adicional, simplemente publique la funcionalidad central y únalo mediante el puerto de estado y mantenga la parte externa como privada.
Ejemplos:
Supongamos que usted esta interesado en los CDRs (call details records) y quiere un proceso que trabaje en modo batch en intervalos regulares.
Aqui está un script simple escrito en Perl (gnugk_cdr.pl ) que inicia el gatekeeper y además conecta un simple cliente para la Status Interface y registra los CDRs dentro de un logfile. Usted debería modificar un poco este script para ajustarlo a sus necesidades.
#!/usr/bin/perl
# sample program that demonstrates how to write the CDRs to a log file
use strict;
use IO::Socket;
use IO::Handle;
my $logfile = "/home/jan/cdr.log"; # CHANGE THIS
my $gk_host = "localhost";
my $gk_port = 7000;
my $gk_pid;
if ($gk_pid = fork()) {
# parent will listen to gatekeeper status
sleep(1); # wait for gk to start
my $sock = IO::Socket::INET->new(PeerAddr => $gk_host, PeerPort => $gk_port, Proto => 'tcp');
if (!defined $sock) {
die "Can't connect to gatekeeper at $gk_host:$gk_port";
}
$SIG{HUP} = sub { kill 1, $gk_pid; }; # pass HUP to gatekeeper
$SIG{INT} = sub { close (CDRFILE); kill 2, $gk_pid; }; # close file when terminated
open (CDRFILE, ">>$logfile");
CDRFILE->autoflush(1); # don't buffer output
while (!$sock->eof()) {
my $msg = $sock->getline();
$msg = (split(/;/, $msg))[0]; # remove junk at end of line
my $msgtype = (split(/\|/, $msg))[0];
if ($msgtype eq "CDR") {
print CDRFILE "$msg\n";
}
}
close (CDRFILE);
} else {
# child starts gatekeeper
exec("gnugk");
}
Tenga siempre presente que éste es justamente un ejemplo para mostrar el uso del puerto de estado.
Usted puede utilizar el módulo FileAcct para registrar los CDRs en un sistema en producción.
GUI para el gatekeeper
Hay algunas Graphical User Interface (GUI) frontends para el Gatekeeper.
- Java GUI
Desarrollado por Jan Willamowius.
Usted puede monitorear los registros y llamadas que están en el gatekeeper.
Un clic derecho sobre un botón le muestra a usted un menú desplegable con información de dicho endpoint.
Esta GUI trabaja con Java 1.0 soportado por muchos navegadores web.
Por razones de seguridad en GUI debe ser ejecutado como una aplicación standalone
o administrada por un servidor web sobre el mismo número de IP del gatekeeper
(usted no puede ejecutar esta GUI como un applet mediante el archivo local).
La aplicación está disponible en
GnuGk Java GUI
- GkGUI
Una nueva aplicación standalone Java desarrollado por
Citron Network Inc.
Este requiere Java 1.4. Entre las nuevas características se incluyen:
- Monitorea múltiples gatekeepers simultáneamente.
- Dos modos de vista: Button List y Tree List.
- Call Detail Record(CDR) y estadísticas.
- GK Status Log.
- Colores diferentes para diferentes tipos de endpoints.
- Modifica la configuración del gatekeeper.
- Forza a desregistrar endpoints.
- Guarda e imprime el estado del log y del CDR.
El GkGUI está lanzada bajo GNU General Public License, disponible en
GnuGk Development
Esta sección muestra todos los comandos que usted puede enviar al puerto de estado (manualmente o mediante una aplicación externa). Todos los comandos son case-insensitive. Pero algunos parámetros pueden ser sensibles a mayúsculas.
El comando help o h le mostrará una lista de todos los comando disponibles.
Reload
Recarga o reinicia la configuración.
Version , v
Muestra la versión e información del Sistema Operativo donde está ejecutándose el gatekeeper.
Statistics , s
Muestra información estadística del gatekeeper.
- Ejemplo:
-
Statistics
-- Endpoint Statistics --Total Endpoints: 307 Terminals: 278 Gateways: 29 NATed: 0Cached Endpoints: 0 Terminals: 0 Gateways: 0-- Call Statistics --Current Calls: 7 Active: 7 From Neighbor: 4 From Parent: 0 Proxied: 3Total Calls: 1151 Successful: 485 From Neighbor: 836 From Parent: 0 Proxied: 193 Peak: 17 at Tue, 26 Nov 2013 19:32:04 +04:00Startup: Tue, 26 Nov 2013 18:45:35 +04:00 Running: 0 days 02:34:15;
PrintAllRegistrations , r , ?
Muestra todos los endpoints registrados.
- Formato:
-
AllRegistrations
RCF|IP:Port|Aliases|Terminal_Type|EndpointID
...
Number of Endpoints: n
;
- Ejemplo:
-
AllRegistrations
RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
RCF|10.0.1.43:1720|613:dialedDigits=Jacky Tsai:h323_ID|terminal|1328_endp
RCF|10.0.1.55:1720|705:dialedDigits=Sherry Liu:h323_ID|terminal|1333_endp
Number of Endpoints: 3
;
PrintAllRegistrationsVerbose , rv , ??
Muestra el detalle de todos los endpoints registrados.
- Formato:
-
AllRegistrations
RCF|IP:Port|Aliases|Terminal_Type|EndpointID
Registration_Time C(Active_Call/Connected_Call/Total_Call) <r>
[Prefixes: ##] (gateway only)
...
Number of Endpoints: n
;
- Ejemplo:
-
AllRegistrations
RCF|10.0.1.8:1720|Accel-GW2:h323_ID|gateway|1322_endp
Wed, 26 Jun 2002 16:40:03 +0800 C(1/5/33) <1>
Prefixes: 09,002
RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
Wed, 26 Jun 2002 16:40:55 +0800 C(0/32/39) <1>
RCF|10.0.1.66:1720|716:dialedDigits=Vicky:h323_ID|terminal|1425_endp
Wed, 26 Jun 2002 16:40:58 +0800 C(1/47/53) <1>
Number of Endpoints: 2
;
PrintCurrentCalls , c , !
Muestra todas las llamadas actuales utilizando la misma sintaxis de ACF como en el establecimiento de llamada.
- Formato:
-
CurrentCalls
Call No. # | CallID | Call_Duration | Left_Time
Dialed_Number
ACF|Caller_IP:Port|Caller_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
ACF|Callee_IP:Port|Callee_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
...
Number of Calls: Current_Call Active: Active_Call From Neighbor: Call_From_Neighbor \
From Parent: Call_From_Parent
;
- Ejemplo:
-
CurrentCalls
Call No. 29 | CallID bd c6 17 ff aa ea 18 10 85 95 44 45 53 54 77 77 | 109 | 491
Dial 0953378875:dialedDigits
ACF|10.0.1.49:1720|4048_CGK1|25263|frank:h323_ID|gunter:h323_ID|false;
ACF|10.1.1.1:1720|4037_CGK1|25263|gunter:h323_ID|frank:h323_ID|true;
Call No. 30 | CallID 70 0e dd c0 9a cf 11 5e 00 01 00 05 5d f9 28 4d | 37 | 563
Dial 0938736860:dialedDigits
ACF|10.0.1.48:1032|4041_CGK1|11896|sue:h323_ID|peter:h323_ID|false;
ACF|10.1.1.1:1720|4037_CGK1|11896|peter:h323_ID|sue:h323_ID|true;
Number of Calls: 2 Active: 2 From Neighbor: 0 From Parent: 0
;
PrintCurrentCallsVerbose , cv , !!
Muestra el detalle de todas las llamadas actuales.
- Formato:
-
CurrentCalls
Call No. # | CallID | Call_Duration | Left_Time
Dialed_Number
ACF|Caller_IP:Port|Caller_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
ACF|Callee_IP:Port|Callee_EPID|CRV|DestinationInfo|SrcInfo|IsAnswered;
# Caller_Aliases|Callee_Aliases|Bandwidth|Connected_Time <r>
...
Number of Calls: Current_Call Active: Active_Call From NB: Call_From_Neighbor
;
- Ejemplo:
-
CurrentCalls
Call No. 48 | CallID 7d 5a f1 0a ad ea 18 10 89 16 00 50 fc 3f 0c f5 | 30 | 570
Dial 0225067272:dialedDigits
ACF|10.0.1.200:1720|1448_endp|19618|frank:h323_ID|gunter:h323_ID|false;
ACF|10.0.1.7:1720|1325_endp|19618|gunter:h323_ID|frank:h323_ID|true;
# Sherry:h323_ID|Accel-GW1:h323_ID|200000|Wed, 26 Jun 2002 17:29:55 +0800 <2>
Number of Calls: 1 Active: 1 From NB: 0
;
Find , f newline>
Busca un endpoint registrado mediante el alias o un prefijo. Para buscar una alias
de un tipo específico (h323_ID, dialedDigits), anteponga el tipo de alias
(h323, e164, url, email) al alias, seguido por dos puntos (:).
- Formato:
-
Find Alias
RCF|IP:Port|Aliases|Terminal_Type|EndpointID
;
- Ejemplo:
-
f 800
RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
;
f 801
SoftPBX: alias 801 not found!
f h323:Wei
RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
;
FindVerbose , fv
Busca el detalle de un endpoint registrado mediante un alias o un prefijo. Para buscar una alias
de un tipo específico (h323_ID, dialedDigits), anteponga el tipo de alias
(h323, e164, url, email) al alias, seguido por dos puntos (:).
- Formato:
-
FindVerbose Alias
RCF|IP:Port|Aliases|Terminal_Type|EndpointID
Registration_Time C(Active_Call/Connected_Call/Total_Call) <r>
[Prefixes: ##] (gateway only)
;
- Ejemplo:
-
fv 02
RCF|10.0.1.100:1720|TFN:h323_ID|gateway|4037_CGK1
Wed, 26 Jun 2002 17:47:29 +0800 C(0/84/120) <1>
Prefixes: 02,09
;
UnregisterIP
Obliga a desregistrar un endpoint mediante su dirección IP y su puerto de señalización de llamada.
- Formato:
-
UnregisterIP IP[:Port]
- Ejemplo:
-
UnregisterIP 10.0.1.31:1720
URQ|10.0.1.31:1032|1326_endp|maintenance;
SoftPBX: Endpoint 10.0.1.31:1720 unregistered!
UnregisterAlias
Obliga a desregistrar un endpoint mediante uno de sus alias. Para emparejar un alias
de un tipo específico (h323_ID, dialedDigits), anteponga el nombre del tipo de alias
(h323, e164, url, email) al alias, seguido por dos puntos (:).
- Formato:
-
UnregisterAlias Alias
- Ejemplo:
-
UnregisterAlias 601
URQ|10.0.1.31:1032|1326_endp|maintenance;
SoftPBX: Endpoint 601 unregistered!
UnregisterAllEndpoints
Obliga a desregistrar todos los endpoints registrados.
- Formato:
-
- Ejemplo:
-
UnregisterAllEndpoints
URQ|10.0.1.7:1024|1325_endp|maintenance;
URQ|10.0.1.8:1024|1322_endp|maintenance;
URQ|10.0.1.32:1032|1324_endp|maintenance;
URQ|10.0.1.36:1032|1323_endp|maintenance;
URQ|10.0.1.42:1032|1318_endp|maintenance;
Done
;
DisconnectCall
Desconecta una llamada mediante su número.(interno, número de llamada asignada por el gatekeeper,
no el número de teléfono del emisor ni del receptor).
- Formato:
-
DisconnectCall Number
- Ejemplo:
-
DisconnectCall 1533
DisconnectIP
Desconecta todas las llamadas de un endpoint mediante su IP y su puerto de señalización de llamada.
- Formato:
-
DisconnectIP IP[:Port]
- Ejemplo:
-
DisconnectIP 10.0.1.31:1720
DisconnectAlias
Desconecta todas las llamadas de un endpoint mediante uno de sus alias. Para emparejar un alias
de un tipo específico (h323_ID, dialedDigits), anteponga el nombre del tipo de alias
(h323, e164, url, email) al alias, seguido de dos puntos (:).
- Formato:
-
DisconnectAlias Alias
- Ejemplo:
-
DisconnectAlias 601
ClearCalls
Desconecta todas las llamadas existentes en el gatekeeper.
GK
Muestra información del gatekeeper padre (parent gatekeeper).
Trace
Establece el nivel de rastreo de salida para la interfaz de estado. Éste controla qué mensajes
son enviados a este cliente:
trace 0 o trace min
Solamente respuestas directas a comandos y notificaciones de recarga (reload).
trace 1
CDRs, respuestas directas a comandos y notificaciones de recarga (reload).
trace 2 or trace max
Muestra todo (RAS, CDRs, respuestas directas a comandos y notificaciones de recarga (reload), etc).
Debug
Solamente utilizado para propósito de depuración. Opciones:
trc [+|-|n]
Muestra/modifica el nivel de rastreo.
cfg SEC PAR
Lee y muestra un parámetro de configuración de una sección.
set SEC PAR VAL
Escribe un valor a un parámetro de configuración de una sección.
remove SEC PAR
Remueve el valor de un parámetro de configuración de una sección.
remove SEC
Remueve una sección.
printrm VERBOSE
Muestra todos los registros de un endpoint removido.
- Ejemplos:
-
debug trc 3
debug set RoutedMode H245Routed 1
Who
Muestra todos las personas que se encuentran en el puerto de estado.
RouteReject
Termina esta llamada sobre una cola virtual.
Este comando es utilizado como respuesta a un evento RouteRequest (ver más adelante).
El CallingEndpointID y el CallRef deben ser devueltos tal como están en el correspondiente RouteRequest.
El parámetro CallID es opcional; si se dá, éste tiene que tener el mismo formato que el
señalado por el RouteRequest con el parámetro SignalCallID=1.
- Formato:
-
RouteReject CallingEndpointID CallRef [CallID]
- Ejemplo:
-
RouteReject endp_4711 1234
RouteToAlias , rta
Enruta esta llamada sobre una cola virtual hacia el alias especificado.
Este comando es utilizado como respuesta a un evento RouteRequest (ver más adelante).
El CallingEndpointID y el CallRef deben ser devueltos tal como están en el correspondiente RouteRequest.
El parámetro CallID es opcional; si se dá, éste tiene que tener el mismo formato que el
señalado por el RouteRequest con el parámetro SignalCallID=1.
- Formato:
-
RouteToAlias Alias CallingEndpointID CallRef [CallID]
- Ejemplo:
-
RouteToAlias Suzi endp_4711 1234
RouteToGateway , rtg
Enruta esta llamada sobre una cola virtual hacia un alias especificado y establece el destinationSignallAddress.
Este comando es utilizado como una respuesta al evento RouteRequest (ver más adelante).
Usted puede utilizar este comando para rutear llamadas hacia gateways fuera de la zona (out-of-zone) o MCUs no registrados con el gatekeeper. Asegúese que las políticas 'vqueue' y 'explicit' estén en efecto para esas llamadas.
El CallingEndpointID y el CallRef deben ser devueltos tal como están en el correspondiente RouteRequest.
El parámetro CallID es opcional; si se dá, éste tiene que tener el mismo formato que el
señalado por el RouteRequest con el parámetro SignalCallID=1.
- Formato:
-
RouteToGateway Alias IP:Port CallingEndpointID CallRef [CallID]
- Ejemplo:
-
RouteToGateway Suzi 192.168.0.50 endp_4711 1234
Exit , q
Cierra el puerto de estado.
TransferCall
Trasfiere una llamada establecida desde el alias A hacia el alias B. En un momento dado el alias A está hablando con el alias X, entonces el alias A está hablando con el alias B después del TransferCall.
Actualmente éste trabaja solamente con endpoints que soportan
mensajes Q.931 Facility (por consiguiente éste comando no funciona con Netmeeting).
- Formato:
-
TransferCall Source-Alias New-Destination-Alias
- Ejemplo:
-
TransferCall Frank Peter
Esta sección describe los mensajes de salida hacia la interfaz de estado.
GCF|IP|Aliases|Endpoint_Type;
El gatekeeper recibe un GatekeeperRequest (GRQ) y responde con
un GatekeeperConfirm (GCF).
GRJ|IP|Aliases|Endpoint_Type|RejectReason;
El gatekeeper recibe un GatekeeperRequest (GRQ) y responde con
un GatekeeperReject (GRJ).
RCF|IP:Port|Aliases|Endpoint_Type|EndpointID;
El gatekeeper recibe un RegistrationRequest (RRQ) y responde con
un RegistrationConfirm (RCF).
RRJ|IP|Aliases|Endpoint_Type|RejectReason;
El gatekeeper recibe un RegistrationRequest (RRQ) y responde con
a RegistrationReject (RRJ).
ACF|Caller_IP:Port|Caller_EndpointID|CRV|DestinationInfo|SrcInfo|IsAnswered[|CallID];
El gatekeeper recibe un AdmissionRequest (ARQ) y responde con
un AdmissionConfirm (ACF).
El CallID es solamente enviado cuando el SignalCallId=1 está configurado.
ARJ|Caller_IP:Port|DestinationInfo|SrcInfo|IsAnswered|RejectReason[|CallID];
El gatekeeper recibe un AdmissionRequest (ARQ) y responde con
un AdmissionReject (ARJ).
El CallID es solamente enviado cuando el SignalCallId=1 está configurado.
DCF|IP|EndpointID|CRV|DisengageReason[|CallID];
El gatekeeper recibe un DisengageRequest (DRQ) y responde con
un DisengageConfirm (DCF).
El CallID es solamente enviado cuando el SignalCallId=1 está configurado.
DRJ|IP|EndpointID|CRV|RejectReason[|CallID];
El gatekeeper recibe un DisengageRequest (DRQ) y responde con
un DisengageReject (DRJ).
El CallID es solamente enviado cuando el SignalCallId=1 está configurado.
LCF|IP|EndpointID|DestinationInfo|SrcInfo;
El gatekeeper recibe un LocationRequest (LRQ) y responde con
un LocationConfirm (LCF).
LRJ|IP|DestinationInfo|SrcInfo|RejectReason;
El gatekeeper recibe un LocationRequest (LRQ) y responde con
un LocationReject (LRJ).
BCF|IP|EndpointID|Bandwidth;
El gatekeeper recibe un BandwidthRequest (BRQ) y responde con
un BandwidthConfirm (BCF).
BRJ|IP|EndpointID|Bandwidth|RejectReason;
El gatekeeper recibe un BandwidthRequest (BRQ) y responde con
un BandwidthReject (BRJ).
UCF|IP|EndpointID;
El gatekeeper recibe un UnregistrationRequest (URQ) y responde con
un UnregistrationConfirm (UCF).
URJ|IP|EndpointID|RejectReason;
El gatekeeper recibe un UnregistrationRequest (URQ) y responde con
un UnregistrationReject (URJ).
IRQ|IP:Port|EndpointID;
El gatekeeper envía un InfoRequest (IRQ) hacia un endpoint para consultarle si éste
está aún en actividad. El endpoint debe responder con un InfoRequestResponse (IRR)
inmediatamente.
URQ|IP:Port|EndpointID|Reason;
El gatekeeper envía un UnregistrationRequest (URQ) hacia un endpoint para
cancelar su registro. El endpoint debe responder con
un UnregistrationConfirm (UCF).
CDR|CallNo|CallId|Duration|Starttime|Endtime|CallerIP|CallerEndId| \
CalledIP|CalledEndId|DestinationInfo|SrcInfo|GatekeeperID;
Después de una llamada desconectada, el registro de detalle de llamada (call detail record) es mostrado (en una línea).
RouteRequest|CallerIP:Port|CallerEndpointId|CallRef|VirtualQueue|CallerAlias[|CallID];
Petición para que una aplicación externa enrute una llamada entrante sobre una cola virtual.
Esto puede ser hecho con los comandos RouteToAlias o RouteReject.
El CallID es solamente enviado cuando el SignalCallId=1 está configurado.
Esta sección facilita el control de la cantidad y tipo de los mensajes de salida presentados al usuario final.
El Filtrado (Filtering) se realiza utilizando expresiones regulares, las mismas que son utilizadas para decidir si incluír (mostrar) o
excluír (ignorar) un mensaje de salida.
El control del Filtrado (Filtering) es realizado utilizando el siguiente conjunto de comandos:
addincludefilter REGEX
Agrega una expresión regular a la lista de lo que se va a incluír (include list)
addexcludefilter REGEX
Agrega una expresión regular a la lista de lo que se va a excluír (exclude list)
removeincludefilter INDEX
Quita el filtro dado INDEX de la lista de inclusiones (include list)
removeexcludefilter INDEX
Quita el filtro dado INDEX de la lista de exclusiones (exclude list)
filter 1|0
Habilita/Deshabilita el filtrado de Mensajes
printincludefilters
Presenta la lista de filtros incluídos (include filter list)
printexcludefilters
Presenta la lista de filtros excluídos (exclude filter list)
Para habilitar el uso de filtros predeterminados, se ha añadido la sección
[GkStatus::Filtering].
En esta sección, los usuarios pueden poner sus filtros predeterminados que serán cargados cuando se inicie el Puerto de estado.
- Ejemplo:
-
[GkStatus::Filtering]
IncludeFilter=.+
ExcludeFilter=.RQ
Cuando el Filtrado es activado, mediante el comando filter 1 , se mostrarán todos los mensajes, pero no aquellas líneas con ARQ, LRQ etc.
El mismo efecto puede lograrse utilizando el comando line:
addincludefilter .+
addexcludefilter .RQ
filter 1
Tenga en cuenta que habilitar el Filtrado cuando no se han definido filtros, automáticamente excluye todos los mensajes de salida.
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
|