|
|
Ceci est le manuel Français pour GNU Gatekeeper 2.2.1.
Une version plus récente (Anglais) du manuel se trouve dans l'archive téléchargée de GnuGk.
Chapitres:
Contenu ·
Introduction ·
Installation ·
Pour commencer ·
Config basique ·
Routage ·
Config RAS ·
Authentification ·
Accounting ·
Voisins ·
Config par terminal ·
Config avancée ·
Surveillance
Le port d'état est l'interface externe pour surveiller et contrôler le
gatekeeper.
Via cette interface, le gatekeeper enverra des messages à propos des appels en
cours de tous les clients connectés et recevra des commandes.
Les messages envoyés par le gatekeeper au port d'état sont regroupés
en trois niveaux de trace de sortie:
- Niveau 0
Notifications de rechargement et réponses directes aux commandes saisies.
- Niveau 1
Notifications de rechargement, réponses directes aux commandes saisies, CDRs
et Requêtes de Routage.
- Niveau 2
Trace tout (notification des rechargement, réponses directes aux commandes
saisies, CDRs, Requêtes de Routage, RAS, ...). Il s'agit du niveau de
trace par défaut.
Le client connecté au port d'état peut choisir le niveau de trace par lequel
il est intéressé.
L'interface est un simple port TCP (par défaut: 7000), vous pouvez vous connecter
avec telnet ou un autre client. Une exemple d'autre client est l'IHM Java, connue sous
le nom de GnuGk ACD.
Domaines d'Application
Ce que vous faîtes avec les pouvoirs de l'Interface d'Etat dépend de vous,
mais voici quelques idées:
- Surveillance d'Appel
- Surveillande des terminaux enregistrés
- Interface Utilisateur Graphique
Voir GkGUI.
- Routage d'Appel
Voir GnuGk ACD.
- Applications de Facturation
Analyser les messages CDR et les transmettre à l'application de facturation.
- Interfacer des extensions externes
Si vous ne voulez pas publier le code source de ces fonctions supplémentaires,
publiez juste le noyau de la fonction et interfacez vous avec au travers de
l'interface d'état et conservez les parties externes privées.
Exemples
Supposons que vous êtes juste intéressés par les CDRs (enregistrement
des détails des appels) et vous voulez les traiter en lot à intervalles
réguliers.
Voici un script Perl simple (gnugk_cdr.pl) qui lance le gatekeeper et un client
très simple pour l'Interface d'Etat et écrit juste les CDRs dans un fichier
de log. Vous aurez besoin de le modifier un peu pour qu'il corresponde à vos
besoins.
#!/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");
}
Rappelez-vous qu'il ne s'agit que d'un exemple pour montrer l'utilisation du port
d'état.
Vous pouvez utiliser le module FileAcct pour tracer les CDRs dans un système
de production.
IHM pour le Gatekeeper
Il y a plusieurs Interfaces Home Machine (IHM - GUI) pour le gatekeeper.
- Java GUI
Développé par Jan Willamowius.
Vous pouvez surveiller les enregistrements et les appels qui passent par le gatekeeper.
Un clic droit sur un bouton vous donne un menu déroulant pour ce terminal.
Cette IHM fonctionne avec Java 1.0 présent dans la plupart des navigateurs web.
Pour des raisons de sécurité l'IHM doit fonctionner comme une application
autonome ou être mise à disposition par un serveur web sur le même
numéro IP que le gatekeeper (vous ne pouvez pas le lancer en tant qu'applet
depuis un fichier local).
Le programme est disponible à
GnuGk Java GUI
- GkGUI
Un nouveau programme Java autonome développé par
Citron Network Inc.
Il nécessite Java 1.4. Les nouvelles fonctions comprennent:
- Surveillance de plusieurs gatekeeper simultanément.
- Deux modes d'affichage: Liste de Boutons ou Arbre.
- Enregistrement des Détails d'Appel (CDR) et statistiques.
- GK Status Log.
- Couleurs différentes pour différents types de terminaux.
- Modification de la configuration du gatekeeper.
- Désenregistrement forcé de terminaux.
- Sauvegarde et imprime le log d'état et CDR.
Le GkGUI est distribué sous GNU General Public License, disponible à
GnuGk Development
Cette section liste toutes les commandes que vous pouvez émettre sur le port
d'état (manuellement ou avec une application externe). Les commandes ne tiennent
pas compte de la casse (majuscules / minuscules). Mais certains paramètres
peuvent en tenir compte.
La commande help ou h affichera la liste de toutes les commandes disponibles.
Reload
Recharge la configuration.
Version, v
Afficher la version et des informations sur l'OS du gatekeeper.
Statistics, s
Affiche des informations statistiques du gatekeeper.
- Exemple:
Statistics
-- Endpoint Statistics --
Total Endpoints: 21 Terminals: 17 Gateways: 4 NATed: 2
Cached Endpoints: 1 Terminals: 1 Gateways: 0
-- Call Statistics --
Current Calls: 1 Active: 1 From Neighbor: 0 From Parent: 0
Total Calls: 1539 Successful: 1076 From Neighbor: 60 From Parent: 5
Startup: Fri, 21 Jun 2002 10:50:22 +0800 Running: 11 days 04:22:59
;
PrintAllRegistrations, r, ?
Affiche tous les terminaux enregistrés.
- Format:
AllRegistrations
RCF|IP:Port|Aliases|Terminal_Type|EndpointID
...
Number of Endpoints: n
;
- Exemple:
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, ??
Affiche des détails sur tous les terminaux enregistrés.
- Format:
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
;
- Exemple:
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, !
Affiche tous les appels en cours en utilisant la même syntaxe ACF que lors de
l'établissement de l'appel.
- Format:
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
;
- Exemple:
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, !!
Affiche des détails sur tous les appels en cours.
- Format:
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
;
- Exemple:
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
Trouve un terminal enregistré par un alias ou un préfixe.
- Format:
Find Alias
RCF|IP:Port|Aliases|Terminal_Type|EndpointID
;
- Exemple:
f 800
RCF|10.1.1.10:1720|800:dialedDigits=Wei:h323_ID|terminal|1289_endp
;
f 801
SoftPBX: alias 801 not found!
FindVerbose, fv
Trouve des détails d'un terminal enregistré par un alias ou un préfixe.
- Format:
FindVerbose Alias
RCF|IP:Port|Aliases|Terminal_Type|EndpointID
Registration_Time C(Active_Call/Connected_Call/Total_Call) <r>
[Prefixes: ##] (gateway only)
;
- Exemple:
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
Force l'annulation de l'enregistrement d'un terminal en fonction de son IP et
appelle le port de signalisation.
- Format:
UnregisterIP IP[:Port]
- Exemple:
UnregisterIP 10.0.1.31:1720
URQ|10.0.1.31:1032|1326_endp|maintenance;
SoftPBX: Endpoint 10.0.1.31:1720 unregistered!
UnregisterAlias
Force l'annulation de l'enregistrement d'un terminal en fonction d'un de ses alias.
- Format:
UnregisterAlias Alias
- Exemple:
UnregisterAlias 601
URQ|10.0.1.31:1032|1326_endp|maintenance;
SoftPBX: Endpoint 601 unregistered!
UnregisterAllEndpoints
Force l'annulation de l'enregistrement de tous les terminaux enregistrés.
- Format:
- Exemple:
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
Déconnecte un appel avec le numéro donné.
- Format:
DisconnectCall Number
- Exemple:
DisconnectCall 1533
DisconnectIP
Déconnecte tous les appels d'un terminal en fonction de son IP et appelle le
port de signalisation.
- Format:
DisconnectIP IP[:Port]
- Exemple:
DisconnectIP 10.0.1.31:1720
DisconnectAlias
Déconnecte tous les appels d'un terminal en fonction d'un de ses alias.
- Format:
DisconnectAlias Alias
- Exemple:
DisconnectAlias 601
ClearCalls
Déconnecte tous les appels sur le gatekeeper.
GK
Affiche les informations sur le gatekeeper parent.
Trace
Règle le niveau de trace de sortie de l'interface d'état. Il contrôle
quels messages sont envoyés à ce client:
trace 0 ou trace min
Seulement les réponses directes aux commandes et les notifications de
rechargement
trace 1
CDRs, réponses directes aux commandes et notifications de rechargement.
trace 2 ou trace max
Affiche tout (RAS, CDRs, réponses directes aux commandes, notifications de
rechargement, etc).
Debug
Utilisé uniquement à de buts de debug. Options:
trc [+|-|n]
Affiche/modifie le niveau de trace.
cfg SEC PAR
Lit et imprime un paramètre de configuration dans une section.
set SEC PAR VAL
Ecrit une valeur de paramètre de configuration dans une section.
remove SEC PAR
Supprime une valeur de paramètre de configuration dans une section.
remove SEC
Supprime une section.
printrm VERBOSE
Imprime tous les enregistrements de terminaux supprimès.
- Exemple:
debug trc 3
debug set RoutedMode H245Routed 1
Who
Affiche toutes les personnes sur le port d'ètat.
RouteReject
Termine cette appel sur une file virtuelle.
Cette commande est utilisée comme réponse à un événement
RouteRequest (voir ci-dessous).
- Format:
RouteReject CallingEndpointID CallRef
- Exemple:
RouteReject endp_4711 1234
RouteToAlias, rta
Route cet appel sur une file virtuel vers un alias donné.
Cette commande est utilisée en réponse à un événement
RouteRequest (voir ci-dessous).
- Format:
RouteToAlias Alias CallingEndpointID CallRef
- Exemple:
RouteToAlias Suzi endp_4711 1234
RouteToGateway, rtg
Route cet appel sur une file virtuelle vers l'alias donné et positionne le
destinationSignallAddress.
Cette commande est utilisée en réponse à un événement
RouteRequest (voir ci-dessous).
Vous pouvez utiliser cette commande pour router des appels vers des passerelles hors
de la zone ou des MCUs non enregistrés auprès du gatekeeper. Assurez-vous
que la politique 'vqueue' et 'explicit' est en cours pour ces appels.
- Format:
RouteToGateway Alias IP:Port CallingEndpointID CallRef
- Exemple:
RouteToGateway Suzi 192.168.0.50 endp_4711 1234
Exit, q
Quitte le port d'ètat.
TransferCall
Transfère un appel étable d'un alias A vers un alias B. Quand l'alias A
parlait avec l'alias X, alors l'alias A parle avec l'alias B après le TransferCall.
Actuellement, ceci ne fonctionne qu'avec les terminaux qui supportent correctement
les messages du mécanisme Q.931 (il ne fonctionne donc pas avec Netmeeting).
- Format:
TransferCall Source-Alias New-Destination-Alias
- Exemple:
TransferCall Frank Peter
Cette section décrit la sortie des messages sur l'interface d'état.
GCF|IP|Aliases|Endpoint_Type;
Le gatekeeper reçoit un GatekeeperRequest (GRQ) et répond avec un
GatekeeperConfirm (GCF).
GRJ|IP|Aliases|Endpoint_Type|RejectReason;
Le gatekeeper reçoit un GatekeeperRequest (GRQ) et répond avec un
GatekeeperReject (GRJ).
RCF|IP:Port|Aliases|Endpoint_Type|EndpointID;
Le gatekeeper reçoit un RegistrationRequest (RRQ) et répond avec un
RegistrationConfirm (RCF).
RRJ|IP|Aliases|Endpoint_Type|RejectReason;
Le gatekeeper reçoit un RegistrationRequest (RRQ) et répond avec un
RegistrationReject (RRJ).
ACF|Caller_IP:Port|Caller_EndpointID|CRV|DestinationInfo|SrcInfo|IsAnswered[|CallID];
Le gatekeeper reçoit un AdmissionRequest (ARQ) et répond avec un
AdmissionConfirm (ACF).
Le CallID est envoyé seulement quand SignalCallId=1.
ARJ|Caller_IP:Port|DestinationInfo|SrcInfo|IsAnswered|RejectReason[|CallID];
Le gatekeeper reçoit un AdmissionRequest (ARQ) et répond avec un
AdmissionReject (ARJ).
Le CallID est envoyé seulement quand SignalCallId=1.
DCF|IP|EndpointID|CRV|DisengageReason[|CallID];
Le gatekeeper reçoit un DisengageRequest (DRQ) et répond avec un
DisengageConfirm (DCF).
Le CallID est envoyé seulement quand SignalCallId=1.
DRJ|IP|EndpointID|CRV|RejectReason[|CallID];
Le gatekeeper reçoit un DisengageRequest (DRQ) et répond avec un
DisengageReject (DRJ).
Le CallID est envoyé seulement quand SignalCallId=1.
LCF|IP|EndpointID|DestinationInfo|SrcInfo;
Le gatekeeper reçoit un LocationRequest (LRQ) et répond avec un
LocationConfirm (LCF).
LRJ|IP|DestinationInfo|SrcInfo|RejectReason;
Le gatekeeper reçoit un LocationRequest (LRQ) et répond avec un
LocationReject (LRJ).
BCF|IP|EndpointID|Bandwidth;
Le gatekeeper reçoit un BandwidthRequest (BRQ) et répond avec un
BandwidthConfirm (BCF).
BRJ|IP|EndpointID|Bandwidth|RejectReason;
Le gatekeeper reçoit un BandwidthRequest (BRQ) et répond avec un
BandwidthReject (BRJ).
UCF|IP|EndpointID;
Le gatekeeper reçoit un UnregistrationRequest (URQ) et répond avec un
UnregistrationConfirm (UCF).
URJ|IP|EndpointID|RejectReason;
Le gatekeeper reçoit un UnregistrationRequest (URQ) et répond avec un
UnregistrationReject (URJ).
IRQ|IP:Port|EndpointID;
Le gatekeeper envoie un InfoRequest (IRQ) à un terminal pour lui demander si
il est toujours en vie. Le terminal doit répondre avec un InfoRequestResponse (IRR)
immédiatement.
URQ|IP:Port|EndpointID|Reason;
Le gatekeeper envoie un UnregistrationRequest (URQ) à un terminal pour
annuler son enregistrement. Le terminal doit répondre avec un
UnregistrationConfirm (UCF).
CDR|CallNo|CallId|Duration|Starttime|Endtime|CallerIP|CallerEndId| \
CalledIP|CalledEndId|DestinationInfo|SrcInfo|GatekeeperID;
Après un appel déconnecté, l'enregistrement du détail de
l'appel est affiché (sur une ligne).
RouteRequest|CallerIP:Port|CallerEndpointId|CallRef|VirtualQueue|CallerAlias[|CallID];
Demande à une application externe de router un appel arrivant sur une file
virtuelle. Ceci peut être fait avec une commande RouteToAlias ou RouteReject.
Le CallID est envoyé seulement quand SignalCallId=1.
Page suivante
Page précédente
Table des matières
Chapitres:
Contenu ·
Introduction ·
Installation ·
Pour commencer ·
Config basique ·
Routage ·
Config RAS ·
Authentification ·
Accounting ·
Voisins ·
Config par terminal ·
Config avancée ·
Surveillance
|