Hi Again Steve,
This is resolved now. It appears that I was not doing the initiation and authentication with the proper number of linefeeds and with the proper sequence of writes AND reads. For those interested, here is a working function written in vb.net to do the communications on the localhost machine. The assumption is made that the password has been changed from ClueCon to myPassword in modules.config.xml and that mod_event_socket is loaded in modules.conf.xml using the entry: <load module="mod_event_socket"/>.
Thanks to all for the help.
Bert
Function SendCommands_socket(ByVal id, ByVal Cmnd)
'Funciton to initiate conneciton with FreeSWITCH event_socket via a tcpsocket, authenticate and send a command.
'Note that the writes AND reads are all mandatory, as are the double linefeeds.
'Dims
Dim returndata As String = "" 'Holds return data
Dim sendBytes As [Byte]() ' byte array used to hold outbound data after conversion from ascii to byte array
Dim tcpClient As New System.Net.Sockets.TcpClient() ' the tcp socket client used to communicate with the host
Dim rcvBytes(tcpClient.ReceiveBufferSize) As Byte 'byte array used to receive bytes returned from host
Try
'Initiate conneciton with event_socket via the socket--------------------
tcpClient.Connect("localhost", 8021)
Dim stream As NetworkStream = tcpClient.GetStream() 'open the socket
stream.Read(rcvBytes, 0, CInt(tcpClient.ReceiveBufferSize))
returndata = Encoding.ASCII.GetString(rcvBytes)
MsgBox(returndata) 'should say "Content-Type: auth/request"
If stream.CanWrite And stream.CanRead Then
'Do authentication.-------------------------------------------------
' convert text to byte array
sendBytes = Encoding.ASCII.GetBytes("auth myPassword" & vbCrLf & vbCrLf) '(The 2 crlf are mandatory )
' write data to stream
stream.Write(sendBytes, 0, sendBytes.Length)
' read the NetworkStream into a seperate byte buffer.
stream.Read(rcvBytes, 0, CInt(tcpClient.ReceiveBufferSize))
' convert binary bytes received into ascii
returndata = Encoding.ASCII.GetString(rcvBytes)
MsgBox(returndata) 'should say "Content-Type: command/reply Reply-Text: +Ok accepted"
'Send the command.-------------------------------------------------
sendBytes = Encoding.ASCII.GetBytes(Cmnd & vbCrLf & vbCrLf)
stream.Write(sendBytes, 0, sendBytes.Length)
stream.Read(rcvBytes, 0, CInt(tcpClient.ReceiveBufferSize))
returndata = Encoding.ASCII.GetString(rcvBytes)
MsgBox(returndata)
Else
If Not stream.CanRead Then
Console.WriteLine("cannot not write data to this stream")
tcpClient.Close()
Else
If Not stream.CanWrite Then
Console.WriteLine("cannot read data from this stream")
tcpClient.Close()
End If
End If
End If
' Disconnect
tcpClient.Close()
Return returndata
Catch oEX As SocketException
' Disconnect
tcpClient.Close()
Return oEX.ToString
Exit Function
End Try
End Function
From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Bert Jones
Sent: Sunday, February 13, 2011 11:41 PM
To: 'FreeSWITCH Users Help'
Subject: Re: [Freeswitch-users] Possible to communicate with FS using event_socket without ESL?
Thanks for the clarification. I too suspect something in my communications. Just wanted to make sure I was not missing something. Will move my communication app to a separate machine from the FS server and run Wireshark. Thanks for recommendation.
Bert
From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Steven Ayre
Sent: Sunday, February 13, 2011 7:29 AM
To: FreeSWITCH Users Help
Subject: Re: [Freeswitch-users] Possible to communicate with FS using event_socket without ESL?
Without the use of the ESL *protocol* - no. Without the use of the supplied ESL *libraries* - correct.
You're along the right lines on implementing your own protocol. If you can connect and authenticate via telnet from the same computer you're trying your app from then there should be no problem with FS.
The fact you say it takes 10s for FS to respond indicates you're not sending the auth line. You should get either a success or failure message straight away in reply to that. So it sounds like the auth isn't getting sent at all.
Try using Wireshark to view what's going over the network to check it's what you expect.
-Steve
On 13 February 2011 03:27, Bert Jones <rmbertjones@comcast.net> wrote:
Hello,
Am I correct in assuming that an app can talk directly to FS using event_socket without the use of the ESL? I am attempting to do this, but having trouble authenticating. I wanted to make sure I was not overlooking something basis in my approach.
I have successfully loaded FS on a windows XP server and can register phones and make calls. Further I can talk to the server, authenticate and make calls using telnet, but when attempting to do the same via an app written in .net and using a socket, I am unable to authenticate.
Running my app using a tcpSocket, I receive the "Content-Type: auth/request" upon connection of the socket, but when sending “auth password\n\n” it appears that the connection times out after about 10 seconds and I receive: “Content-Type: text/disconnect-notice" & vbLf & "Content-Length: 67". mod_event_socket is enabled in modules.conf.xml .
Is there something obvious that I am missing conceptually, or should this work?
Thanks!
_______________________________________________
FreeSWITCH-users mailing list
FreeSWITCH-users@lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org