Bugfix ltls and lsocket
This commit is contained in:
parent
07c1b19efe
commit
c55ae778fa
2 changed files with 40 additions and 11 deletions
33
lsocket.pbi
33
lsocket.pbi
|
@ -20,14 +20,14 @@ DeclareModule lsocket
|
||||||
EndStructure
|
EndStructure
|
||||||
|
|
||||||
Structure in_addr
|
Structure in_addr
|
||||||
s_addr.w
|
s_addr.l
|
||||||
EndStructure
|
EndStructure
|
||||||
|
|
||||||
Structure sockaddr_in
|
Structure sockaddr_in
|
||||||
sin_family.w
|
sin_family.w
|
||||||
sin_port.w
|
sin_port.w
|
||||||
sin_addr.in_addr
|
sin_addr.in_addr
|
||||||
sin_zero.s{8}
|
sin_zero.a[8]
|
||||||
EndStructure
|
EndStructure
|
||||||
|
|
||||||
; Socket types:
|
; Socket types:
|
||||||
|
@ -51,12 +51,13 @@ DeclareModule lsocket
|
||||||
Declare ReadSocket(ClientSocket.i, *Buffer, Length.i) ;Return Effective Read
|
Declare ReadSocket(ClientSocket.i, *Buffer, Length.i) ;Return Effective Read
|
||||||
Declare WriteSocket(ClientSocket.i, *Buffer, Length.i) ;Return Effective Writen
|
Declare WriteSocket(ClientSocket.i, *Buffer, Length.i) ;Return Effective Writen
|
||||||
Declare CloseSocket(Socket.i)
|
Declare CloseSocket(Socket.i)
|
||||||
|
Declare.s GetSocketIP(Socket.i)
|
||||||
EndDeclareModule
|
EndDeclareModule
|
||||||
|
|
||||||
Module lsocket
|
Module lsocket
|
||||||
Global NewMap lsockets_server.sockaddr_in()
|
Global NewMap lsockets_server.sockaddr_in()
|
||||||
Global NewMap lsockets_client.sockaddr_in()
|
Global NewMap lsockets_client.sockaddr_in()
|
||||||
|
Global NewMap lsockets_scrumble.sockaddr_in()
|
||||||
Procedure CreateSocket(Port.i, Queuelengt.i = 64, Type.i = #SOCK_STREAM, Protocol.i = #AF_INET, BindedIP.s = "127.0.0.1") ; Return Server Socket < 0 Error
|
Procedure CreateSocket(Port.i, Queuelengt.i = 64, Type.i = #SOCK_STREAM, Protocol.i = #AF_INET, BindedIP.s = "127.0.0.1") ; Return Server Socket < 0 Error
|
||||||
Protected SocketID.i
|
Protected SocketID.i
|
||||||
SocketID = socket_(Protocol, Type, 0)
|
SocketID = socket_(Protocol, Type, 0)
|
||||||
|
@ -78,16 +79,28 @@ Module lsocket
|
||||||
ProcedureReturn SocketID
|
ProcedureReturn SocketID
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure.s GetSocketIP(Socket.i)
|
||||||
|
Protected IPAddresse.s
|
||||||
|
If lsockets_client(Str(Socket))\sin_family = 0
|
||||||
|
IPAddresse = PeekS(Inet_ntoa_(lsockets_client(Str(Socket))\sin_addr\s_addr), -1, #PB_Ascii)
|
||||||
|
Else
|
||||||
|
IPAddresse = PeekS(Inet_ntoa_(lsockets_client(Str(Socket))\sin_addr\s_addr), -1, #PB_Ascii)
|
||||||
|
EndIf
|
||||||
|
Debug "Requested IP Information:" + IPAddresse
|
||||||
|
ProcedureReturn IPAddresse
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
Procedure WaitSocket(ServerSocket.i) ;Return new ClientSocketID
|
Procedure WaitSocket(ServerSocket.i) ;Return new ClientSocketID
|
||||||
Protected ClientSID.i, MapID.s, ClientLength
|
Protected ClientSID.i, MapID.s, ClientLength
|
||||||
Protected Client.sockaddr_in
|
Protected memory
|
||||||
ClientSID = accept_(ServerSocket, @Client, @ClientLength)
|
memory = AllocateMemory(SizeOf(sockaddr_in))
|
||||||
If ClientSID < 0 : ProcedureReturn ClientSID : EndIf
|
ClientLength = SizeOf(sockaddr_in)
|
||||||
|
ClientSID = accept_(ServerSocket, memory, @ClientLength)
|
||||||
|
If ClientSID < 0 : FreeMemory(memory) : ProcedureReturn ClientSID : EndIf
|
||||||
MapID = Str(ClientSID)
|
MapID = Str(ClientSID)
|
||||||
lsockets_client(MapID)\sin_addr\s_addr = Client\sin_addr\s_addr
|
CopyMemory(memory, lsockets_client(MapID), ClientLength)
|
||||||
lsockets_client(MapID)\sin_family = Client\sin_family
|
Debug "Connected IP:" + PeekS(Inet_ntoa_(lsockets_client(MapID)\sin_addr\s_addr), -1, #PB_Ascii)
|
||||||
lsockets_client(MapID)\sin_port = Client\sin_port
|
FreeMemory(memory)
|
||||||
lsockets_client(MapID)\sin_zero = Client\sin_zero
|
|
||||||
ProcedureReturn ClientSID
|
ProcedureReturn ClientSID
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
|
18
ltls.pbi
18
ltls.pbi
|
@ -32,10 +32,18 @@ DeclareModule ltls
|
||||||
Declare CloseTLS(TLSID.i = 0)
|
Declare CloseTLS(TLSID.i = 0)
|
||||||
Declare.s ErrorTLSSrv(TLSID.i = 0)
|
Declare.s ErrorTLSSrv(TLSID.i = 0)
|
||||||
Declare.s ErrorTLSCli(Connection)
|
Declare.s ErrorTLSCli(Connection)
|
||||||
|
Declare GetSocket(Connection.i)
|
||||||
EndDeclareModule
|
EndDeclareModule
|
||||||
|
|
||||||
Module ltls
|
Module ltls
|
||||||
|
Structure tls_socket
|
||||||
|
server_id.i
|
||||||
|
client_id.i
|
||||||
|
tls_id.i
|
||||||
|
EndStructure
|
||||||
|
|
||||||
|
Global NewMap socket_sort.tls_socket()
|
||||||
|
|
||||||
PrototypeC.i Pr_tls_init()
|
PrototypeC.i Pr_tls_init()
|
||||||
PrototypeC.i Pr_tls_config_new()
|
PrototypeC.i Pr_tls_config_new()
|
||||||
PrototypeC.i Pr_tls_load_file_pw(FileName.p-utf8, Length, Password.p-utf8)
|
PrototypeC.i Pr_tls_load_file_pw(FileName.p-utf8, Length, Password.p-utf8)
|
||||||
|
@ -177,6 +185,9 @@ Module ltls
|
||||||
If sockID < 0 : ProcedureReturn -1 : EndIf
|
If sockID < 0 : ProcedureReturn -1 : EndIf
|
||||||
tlssID = tls_accept_socket(tls_ctx, @cctx, sockID)
|
tlssID = tls_accept_socket(tls_ctx, @cctx, sockID)
|
||||||
If tlssID = -1 : ProcedureReturn -2 : EndIf
|
If tlssID = -1 : ProcedureReturn -2 : EndIf
|
||||||
|
socket_sort(Str(cctx))\client_id = sockID
|
||||||
|
socket_sort(Str(cctx))\tls_id = cctx
|
||||||
|
socket_sort(Str(cctx))\server_id = ServerSocket
|
||||||
ProcedureReturn cctx
|
ProcedureReturn cctx
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
|
@ -194,6 +205,11 @@ Module ltls
|
||||||
|
|
||||||
Procedure CloseTLSSocket(Connection.i)
|
Procedure CloseTLSSocket(Connection.i)
|
||||||
tls_close(Connection)
|
tls_close(Connection)
|
||||||
|
DeleteMapElement(socket_sort(), Str(Connection))
|
||||||
|
EndProcedure
|
||||||
|
|
||||||
|
Procedure GetSocket(Connection.i)
|
||||||
|
ProcedureReturn socket_sort(Str(Connection))\client_id
|
||||||
EndProcedure
|
EndProcedure
|
||||||
|
|
||||||
Procedure.s ErrorTLSSrv(TLSID.i = 0)
|
Procedure.s ErrorTLSSrv(TLSID.i = 0)
|
||||||
|
|
Loading…
Reference in a new issue