I provide consulting, development and support related to H.323 and WebRTC VoIP and video conferencing, the GNU Gatekeeper and H323Plus.
💬 Ask me about your next H.323, WebRTC or GStreamer project.
GNU Gatekeeper - H.323 server for VoIP and videoconferencing
Home Page: https://www.gnugk.org
License: GNU General Public License v2.0
i use avaya 1608, and set the gnugk as gateway.when is start, the telephon send and udp pkg port 1719(tcpdump and see) to gnuk,but gnugk do not listen 1719
I have implemented the registration of the avaya phone, but currently the phone cannot use the number key, and the function key on the left is responding.
I have do it avaya-support. If there's anything missing from me, please contact me.
gnugk
; this is a basic startup configuration for GnuGk with Avaya support
[Gatekeeper::Main]
Name=DEFINITY-GK
TimeToLive=600
CompareAliasType=0
CompareAliasCase=0
EndpointIDSuffix=
Home=192.168.1.101
; restrict access to the status port by an IP address
[GkStatus::Auth]
rule=explicit
; allow local access
127.0.0.1=allow
default=forbid
Shutdown=allow
[RoutedMode]
GKRouted=1
H245Routed=1
CallSignalPort=1720
AcceptUnregisteredCalls=1
DropCallsByReleaseComplete=1
SupportNATedEndpoints=1
EnableH46018=1
PregrantARQ=1
GenerateCallProceeding=1
H245TunnelingTranslation=1
Q931PortRange=20000-29999
[Proxy]
Enable=1
ProxyAlways=0
; GWID must unique identify Asterisk OOH323 registration (ACE is a default)
; see Asterisk "ooh323.conf" for example
AsteriskGWID=ACE
; GWDN must unique identify automatically dialed digits into context with
; DISA application, for providing emulation of Avaya switch functionality
; see Asterisk "extensions.ael" for example
AsteriskGWDN=1999
[RoutingPolicy]
default=explicit,internal,srv,dns
[LogFile]
Rotate=Daily
RotateTime=23:59
[Gatekeeper::Auth]
SimplePasswordAuth=alternative;RRQ
FileIPAuth=required;RRQ
default=allow
[SimplePasswordAuth]
KeyFilled=123
PasswordTimeout=0
; this entry will be automatically added by addpwd application from GnuGk
; it enciphers password for subsciber with extension 1000 (auth UserID)
1000=UbvtLZfPtQw=
[FileIPAuth]
; permit anything from local host
192.168.1.101/32=allow
[RasSrv::GWPrefixes]
; route all traffic for prefix 19 to our Asterisk GWID (ACE)
ACE=19:=1
[RasSrv::RRQFeatures]
OverwriteEPOnSameAddress=allow
[H235]
UseEndpointIdentifier=0
RequireGeneralID=0
FullQ931Checking=0
CheckSendersID=0
VerifyRandomNumber=0
TimestampGracePeriod=7210
ooh323.conf
[general]
;Define the asterisk server h323 endpoint
; Using port 1820 because 1720 already bind in GnuGk
port=1820
; Living on the same address with GnuGk
bindaddr=192.168.1.101
gateway=yes
h245tunneling=no
mediawaitforconnect=yes
; Our GWID and prefix for DISA application
h323id=ACE
e164=1999
callerid=Asterisk
aniasdni=yes
gatekeeper = 192.168.1.101
;logfile=/var/log/asterisk/h323_log
context=default
rtptimeout=12 ; Terminate call if 60 seconds of no RTP activity
; when we're not on hold
;Default - none (lowdelay, thoughput, reliability, mincost, none)
;tos=lowdelay
;amaflags = default
;accountcode=h3230101
disallow=all ;Note order of disallow/allow is important.
allow=ulaw
dtmfmode=q931keypad
faxdetect = no
directmedia=no
directrtpsetup=no
; set this to your variant
tracelevel=6
2023/09/21 17:42:05.524 5 ProxyChannel.cxx(1641) Q931s Reading from 192.168.1.33:6362
2023/09/21 17:42:05.524 3 ProxyChannel.cxx(2295) Q931s Received: Information CRV=1 from 192.168.1.33:6362
2023/09/21 17:42:05.524 4 ProxyChannel.cxx(2204) Q931 Received: {
q931pdu = {
protocolDiscriminator = 8
callReference = 1
from = originator
messageType = Information
IE: User-User = {
28 10 01 00 10 a0 01 00 18 01 00 0a 60 86 48 01 (...........`.H.
86 f8 72 04 02 0a 0a 0a 38 47 00 c0 0b 36 60 08 ..r.....8G...6`.
40 00 @.
}
}
h225pdu = {
h323_uu_pdu = {
h323_message_body = empty <<null>>
h245Tunneling = false
nonStandardControl = 1 entries {
[0]={
nonStandardIdentifier = object 2.16.840.1.113778.4.2.10
data = 10 octets {
0a 38 47 00 c0 0b 36 60 08 40 .8G...6`.@
}
}
}
}
}
}
2023/09/21 17:42:05.524 3 gkauth.cxx(1021) GKAUTH default Q931 check ok
2023/09/21 17:42:05.524 3 ProxyChannel.cxx(7603) Q931s Avaya: INFO+CCMS
2023/09/21 17:42:05.524 3 ProxyChannel.cxx(8391) Q931s Avaya: CCMS EP TERM ID
192.168.1.33:6362|1000:dialedDigits|terminal|3117827206|Onhook
Thu, 21 Sep 2023 17:42:04 +08:00 C(1/1/1) <3> bw:0/-1 vendor:IP_Phone 1.3120 specific:Onhook CCMS:
Call No. 0 | CallID 00 00 00 00 00 00 10 00 00 00 00 00 c0 a8 01 21 | 0 | 0
Dial invalid address
ACF|192.168.1.33:6362|3117827206|1|invalid address||false|00-00-00-00-00-00-10-00-00-00-00-00-c0-a8-01-21|Direct;
ACF|0.0.0.0:0| |32769|invalid address||true|00-00-00-00-00-00-10-00-00-00-00-00-c0-a8-01-21|Direct;
I have poor understand of h323. Anyone can give me some advice?
Hi, and thanks a lot for your effort!
I recently got an old avaya 1616i phone (as an odd present) and thought of making it work along with asterisk and gnugk. (I'm okay with very limited functionality, still better than the dumpster). I followed the tutorial in avaya-support.txt, but got stuck after a while. After entering the extension number and authorizing in gnugk the phone just reboots. I'm very sorry to bother you, but could you point me in the right direction? Here's the log from the gnugk and nginx stack (I use the following options to start gnugk: "/usr/bin/gnugk", "-c", "/etc/gatekeeper.ini", "-ttttttttt", "-rr"). I'm using the current master branch of gnugk, tried 5_10_STABLE, but it seems that it works the same.
gatekeeper_1 | 2024/01/04 09:03:19.557 7 tlibthrd.cxx(1176) PTLib PThread::PXBlockOnIO(25,0)
gatekeeper_1 | 2024/01/04 09:03:19.557 2 RasSrv.cxx(185) RAS Read from 192.168.143.132:49300
gatekeeper_1 | 2024/01/04 09:03:19.557 3 RasSrv.cxx(262) RAS
gatekeeper_1 | gatekeeperRequest {
gatekeeper_1 | requestSeqNum = 2
gatekeeper_1 | protocolIdentifier = 0.0.8.2250.0.2
gatekeeper_1 | nonStandardData = {
gatekeeper_1 | nonStandardIdentifier = object 2.16.840.1.113778.4.2.1
gatekeeper_1 | data = 3 octets {
gatekeeper_1 | 85 01 40 ..@
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | rasAddress = ipAddress {
gatekeeper_1 | ip = 4 octets {
gatekeeper_1 | c0 a8 8f 84 ....
gatekeeper_1 | }
gatekeeper_1 | port = 49300
gatekeeper_1 | }
gatekeeper_1 | endpointType = {
gatekeeper_1 | terminal = {
gatekeeper_1 | }
gatekeeper_1 | mc = false
gatekeeper_1 | undefinedNode = false
gatekeeper_1 | }
gatekeeper_1 | endpointAlias = 1 entries {
gatekeeper_1 | [0]=dialedDigits "1000"
gatekeeper_1 | }
gatekeeper_1 | tokens = 1 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | tokenOID = 2.16.840.1.114187.1.6.2
gatekeeper_1 | dhkey = {
gatekeeper_1 | halfkey = Hex {
gatekeeper_1 | 2f 41 10 27 50 21 e7 ce 14 ba f6 ab 9d 4f 8d 88
gatekeeper_1 | 5d e8 3e 35 a1 14 7e a2 ae 0c a6 6d 91 3c 76 ac
gatekeeper_1 | ed 83 d0 5c f2 f9 be 5d f5 3a 59 c7 ab 64 ac 79
gatekeeper_1 | ca 5a 5d 2e 94 b4 0d 82 04 25 ff b5 30 11 87 0e
gatekeeper_1 | 41 dc eb bc 40 c5 06 5e 14 cc 8d 7e ee cb 35 18
gatekeeper_1 | b8 61 59 18 1b 36 74 d3 7f fa c3 26 26 9a b7 81
gatekeeper_1 | 81 7b 39 07 09 cc 7f 3d 9a c2 dd 08 f2 ec 0f 93
gatekeeper_1 | 10 af 30 f8 dd da 1c f9 c9 dd e7 59 0c 1d 82 d0 }
gatekeeper_1 | modSize =
gatekeeper_1 | generator =
gatekeeper_1 | }
gatekeeper_1 | profileInfo = 2 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | elementID = 2
gatekeeper_1 | element = octets 4 octets {
gatekeeper_1 | 00 00 3c 4c ..<L
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | [1]={
gatekeeper_1 | elementID = 1
gatekeeper_1 | element = octets 12 octets {
gatekeeper_1 | 0a 63 00 00 38 37 00 00 04 b1 0a 64 .c..87.....d
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | authenticationCapability = 2 entries {
gatekeeper_1 | [0]=pwdSymEnc <<null>>
gatekeeper_1 | [1]=keyExch 2.16.840.1.114187.1.6.2
gatekeeper_1 | }
gatekeeper_1 | algorithmOIDs = 2 entries {
gatekeeper_1 | [0]=1.3.14.3.2.6
gatekeeper_1 | [1]=2.16.840.1.114187.1.3
gatekeeper_1 | }
gatekeeper_1 | featureSet = {
gatekeeper_1 | replacementFeatureSet = false
gatekeeper_1 | supportedFeatures = 1 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | id = oid 2.16.840.1.114187.1.10
gatekeeper_1 | parameters = 8 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | id = standard 5
gatekeeper_1 | }
gatekeeper_1 | [1]={
gatekeeper_1 | id = standard 9
gatekeeper_1 | }
gatekeeper_1 | [2]={
gatekeeper_1 | id = standard 10
gatekeeper_1 | }
gatekeeper_1 | [3]={
gatekeeper_1 | id = standard 11
gatekeeper_1 | }
gatekeeper_1 | [4]={
gatekeeper_1 | id = standard 13
gatekeeper_1 | }
gatekeeper_1 | [5]={
gatekeeper_1 | id = standard 14
gatekeeper_1 | }
gatekeeper_1 | [6]={
gatekeeper_1 | id = standard 15
gatekeeper_1 | }
gatekeeper_1 | [7]={
gatekeeper_1 | id = standard 16
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | 2024/01/04 09:03:19.558 5 job.cxx(342) JOB Worker threads: 10 total - 10 busy, 0 idle
gatekeeper_1 | 2024/01/04 09:03:19.558 5 job.cxx(185) JOB Starting Job GRQ at Worker thread 140036037080768
gatekeeper_1 | 2024/01/04 09:03:19.558 1 RasSrv.cxx(401) RAS GRQ Received from 192.168.143.132:49300
gatekeeper_1 | 2024/01/04 09:03:19.558 3 gkauth.h(1148) GKAUTH default GRQ check ok
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(1184) H460 Create FeatureSet from FeatureSet PDU
gatekeeper_1 | 2024/01/04 09:03:19.558 4 h4601.cxx(1266) H460 Loaded OID 2.16.840.1.114187.1.10
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(1184) H460 Create FeatureSet from FeatureSet PDU
gatekeeper_1 | 2024/01/04 09:03:19.558 4 h4601.cxx(1266) H460 Loaded OID 2.16.840.1.114187.1.10
gatekeeper_1 | 2024/01/04 09:03:19.558 5 RasSrv.cxx(2046) GRQ Avaya: CCMS discoveryRequest
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 1
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 2
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 3
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 5
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 6
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 7
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 9
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 10
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 11
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 17
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 18
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 19
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(527) H460 Add ID: standard 1 content number8 1
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 1
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(527) H460 Add ID: standard 2 content number16 60
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 2
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(527) H460 Add ID: standard 3 content number16 0
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 3
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(527) H460 Add ID: standard 4 content bool true
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 4
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(527) H460 Add ID: standard 5 content bool true
gatekeeper_1 | 2024/01/04 09:03:19.558 6 h4601.cxx(516) H460 Add ID: standard 5
gatekeeper_1 | 2024/01/04 09:03:19.558 5 RasSrv.cxx(2108) GCF Avaya: Added featureSets
gatekeeper_1 | 2024/01/04 09:03:19.558 2 RasSrv.cxx(454) GCF|192.168.143.132|1000|terminal;
gatekeeper_1 | 2024/01/04 09:03:19.558 3 RasSrv.cxx(274) RAS Send to 192.168.143.132:49300
gatekeeper_1 | gatekeeperConfirm {
gatekeeper_1 | requestSeqNum = 2
gatekeeper_1 | protocolIdentifier = 0.0.8.2250.0.2
gatekeeper_1 | rasAddress = ipAddress {
gatekeeper_1 | ip = 4 octets {
gatekeeper_1 | c0 a8 8f b0 ....
gatekeeper_1 | }
gatekeeper_1 | port = 1719
gatekeeper_1 | }
gatekeeper_1 | featureSet = {
gatekeeper_1 | replacementFeatureSet = true
gatekeeper_1 | desiredFeatures = 3 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | id = oid 2.16.840.1.114187.1.10
gatekeeper_1 | parameters = 12 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | id = standard 1
gatekeeper_1 | }
gatekeeper_1 | [1]={
gatekeeper_1 | id = standard 2
gatekeeper_1 | }
gatekeeper_1 | [2]={
gatekeeper_1 | id = standard 3
gatekeeper_1 | }
gatekeeper_1 | [3]={
gatekeeper_1 | id = standard 5
gatekeeper_1 | }
gatekeeper_1 | [4]={
gatekeeper_1 | id = standard 6
gatekeeper_1 | }
gatekeeper_1 | [5]={
gatekeeper_1 | id = standard 7
gatekeeper_1 | }
gatekeeper_1 | [6]={
gatekeeper_1 | id = standard 9
gatekeeper_1 | }
gatekeeper_1 | [7]={
gatekeeper_1 | id = standard 10
gatekeeper_1 | }
gatekeeper_1 | [8]={
gatekeeper_1 | id = standard 11
gatekeeper_1 | }
gatekeeper_1 | [9]={
gatekeeper_1 | id = standard 17
gatekeeper_1 | }
gatekeeper_1 | [10]={
gatekeeper_1 | id = standard 18
gatekeeper_1 | }
gatekeeper_1 | [11]={
gatekeeper_1 | id = standard 19
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | [1]={
gatekeeper_1 | id = oid 2.16.840.1.114187.1.9
gatekeeper_1 | parameters = 5 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | id = standard 1
gatekeeper_1 | content = number8 1
gatekeeper_1 | }
gatekeeper_1 | [1]={
gatekeeper_1 | id = standard 2
gatekeeper_1 | content = number16 60
gatekeeper_1 | }
gatekeeper_1 | [2]={
gatekeeper_1 | id = standard 3
gatekeeper_1 | content = number16 0
gatekeeper_1 | }
gatekeeper_1 | [3]={
gatekeeper_1 | id = standard 4
gatekeeper_1 | content = bool true
gatekeeper_1 | }
gatekeeper_1 | [4]={
gatekeeper_1 | id = standard 5
gatekeeper_1 | content = bool true
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | [2]={
gatekeeper_1 | id = standard 6
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | supportedFeatures = 3 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | id = oid 2.16.840.1.114187.1.10
gatekeeper_1 | parameters = 12 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | id = standard 1
gatekeeper_1 | }
gatekeeper_1 | [1]={
gatekeeper_1 | id = standard 2
gatekeeper_1 | }
gatekeeper_1 | [2]={
gatekeeper_1 | id = standard 3
gatekeeper_1 | }
gatekeeper_1 | [3]={
gatekeeper_1 | id = standard 5
gatekeeper_1 | }
gatekeeper_1 | [4]={
gatekeeper_1 | id = standard 6
gatekeeper_1 | }
gatekeeper_1 | [5]={
gatekeeper_1 | id = standard 7
gatekeeper_1 | }
gatekeeper_1 | [6]={
gatekeeper_1 | id = standard 9
gatekeeper_1 | }
gatekeeper_1 | [7]={
gatekeeper_1 | id = standard 10
gatekeeper_1 | }
gatekeeper_1 | [8]={
gatekeeper_1 | id = standard 11
gatekeeper_1 | }
gatekeeper_1 | [9]={
gatekeeper_1 | id = standard 17
gatekeeper_1 | }
gatekeeper_1 | [10]={
gatekeeper_1 | id = standard 18
gatekeeper_1 | }
gatekeeper_1 | [11]={
gatekeeper_1 | id = standard 19
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | [1]={
gatekeeper_1 | id = oid 2.16.840.1.114187.1.9
gatekeeper_1 | parameters = 5 entries {
gatekeeper_1 | [0]={
gatekeeper_1 | id = standard 1
gatekeeper_1 | content = number8 1
gatekeeper_1 | }
gatekeeper_1 | [1]={
gatekeeper_1 | id = standard 2
gatekeeper_1 | content = number16 60
gatekeeper_1 | }
gatekeeper_1 | [2]={
gatekeeper_1 | id = standard 3
gatekeeper_1 | content = number16 0
gatekeeper_1 | }
gatekeeper_1 | [3]={
gatekeeper_1 | id = standard 4
gatekeeper_1 | content = bool true
gatekeeper_1 | }
gatekeeper_1 | [4]={
gatekeeper_1 | id = standard 5
gatekeeper_1 | content = bool true
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | [2]={
gatekeeper_1 | id = standard 6
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | }
gatekeeper_1 | 2024/01/04 09:03:19.559 5 RasSrv.cxx(294) RAS Sent Successful
gatekeeper_1 | 2024/01/04 09:03:19.559 5 job.cxx(393) JOB Job GRQ deleted
gatekeeper_1 | 2024/01/04 09:03:19.559 5 job.cxx(382) JOB Worker threads: 10 total - 9 busy, 1 idle
gatekeeper_1 | 2024/01/04 09:03:20.468 6 osutils.cxx(978) PTLib MONITOR: timers=0, expiries=0
I tried wiresharking, but the only thing that I see - a ras request from the phone and gnugk's response. Setting VLAN support to OFF instead of AUTO in the phone options removes the VLAN section in wireshark packets and the phone prints out 'contacting call server', but it still just reboots shortly.
gatekeeper.ini: https://github.com/nekromant/avaya-asterisk-docker/blob/master/gnugk/gatekeeper.ini
46xxsettings.txt: https://github.com/nekromant/avaya-asterisk-docker/blob/master/http/static/46xxsettings.txt
ooh323.conf: https://github.com/nekromant/avaya-asterisk-docker/blob/master/asterisk/ooh323.conf
OpenWRT UDHCP config:
option dhcp_option '242,MCIPADD=192.168.143.176,HTTPSRVR=192.168.143.176,HTTPDIR=/,HTTPPORT=8080'
Here's my WiP repository with everything that's needed to start it from a single compose file: https://github.com/nekromant/avaya-asterisk-docker
For the sake of simplicity I'm using host mode networking, so that docker network stuff would not mess up anything.
Hello!
5.11 have this warning if only sqlite is in use, 5.10 works just fine.
Looks like #define HAS_DATABASE
solves problem
Hi,Im a new bee to gnuk,and I want to use redis within gnugk ,but I can
t find any redis module in source code.
does gnuk support redis? If not,how can i do to deal with it?
PS:I`m learning english..
thanks!!!
I built gnugk on Windows without SSL support.
Source code of RegistrationTable::GenerateEndpointId for me looks like this:
void RegistrationTable::GenerateEndpointId(H225_EndpointIdentifier & NewEndpointId, PString prefix)
{
do {
unsigned randomNum;
randomNum = rand();
NewEndpointId = prefix + PString(PString::Unsigned, randomNum) + endpointIdSuffix;
// check if new ID doesn't already exists (unlikely, but...)
} while (FindByEndpointId(NewEndpointId));
}
Because call to srand (see Toolkit.cxx) is thread-local, every call to rand returns 41.
As a result all generated endpoint ids are the same (41_endp)
hi, i use gnugk as h323 gateway and try to register my avaya ip phone 。
after configue the gnugk gateway,ip phone restart again and again. so i tcpdump and find the ras gatekeeper req contain many items as ras-req.jpg and ras gatekeeper comfirm just contain ip addr as ras-comfirm.jpg
i think that is the reason i can not register the phone.
i need to modify some gnugk config?
When endpoint supports H235_AuthenticationMechanism::e_keyExch, gnugk should add a Token;
But when checking endpoint support H235_AuthenticationMechanism::e_keyExch or not, the code always search in request.m_authenticationCapability[0] ; As for the code, it uses 'For' grammar, I guess it should be coded by searching in request.m_authenticationCapability[i], not alway in [0];
Please Check for it.
the origin codes shows:
// H.235.TSSM
if (request.HasOptionalField(H225_GatekeeperRequest::e_authenticationCapability) &&
request.HasOptionalField(H225_GatekeeperRequest::e_algorithmOIDs)) {
for (PINDEX i = 0; i < request.m_authenticationCapability.GetSize(); i++) {
if (request.m_authenticationCapability[0].GetTag() == H235_AuthenticationMechanism::e_keyExch) {
const PASN_ObjectId & oid = request.m_authenticationCapability[0];
if (oid == OID_TSSM) {
// add TSSM token
gcf.IncludeOptionalField(H225_GatekeeperConfirm::e_tokens);
// don't overwrite pwdSymEnc token
gcf.m_tokens.SetSize(gcf.m_tokens.GetSize() + 1);
gcf.m_tokens[gcf.m_tokens.GetSize() - 1].m_tokenOID = OID_TSSM;
gcf.m_tokens[gcf.m_tokens.GetSize() - 1].IncludeOptionalField(H235_ClearToken::e_timeStamp);
gcf.m_tokens[gcf.m_tokens.GetSize() - 1].m_timeStamp = (int)time(NULL);
}
}
}
}
Hi.
I am seeing a build gnugk-5.5 failure building on OpenBSD current.
Toolkit.cxx:3257:26: error: no viable conversion from 'PString' to 'PIPSocket::Address'
PIPSocket::Address gkip = retval[0];
^ ~~~~~~~~~
$ c++ --version
OpenBSD clang version 8.0.1 (tags/RELEASE_801/final) (based on LLVM 8.0.1)
Target: amd64-unknown-openbsd6.7
Thread model: posix
InstalledDir: /usr/bin
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.