quote require Buf
require Buf
quote require Socket
require Socket
quote require Socket.Buf
require Socket.Buf
quote require Thread
require Thread
quote require TLS
require TLS
quote require TLS.Client
require TLS.Client
quote require TLS.Server
require TLS.Server
quote (r = fork()) ; void
(r = fork()) ; void
if (r < 0) do
exit(1)
end
if r == 0 do
TLS.init()
server_config = TLS.Config.new()
TLS.Config.set_cert_file(server_config, "/etc/ssl/fullchain.pem")
TLS.Config.set_key_file(server_config, "/etc/ssl/private/privkey.pem")
server_ctx = TLS.server()
TLS.configure(server_ctx, server_config)
server_socket = Socket.listen(hostname(), "57000")
puts("server: listening on egress 57000")
server_client_tls = TLS.Server.accept(server_socket, server_ctx)
line = Buf.read_line(server_client_tls.socket_buf.buf_rw.r)
puts("server: #{line}")
Buf.write_str(server_client_tls.socket_buf.buf_rw.w, "Hello from server !\n")
TLS.Server.close(server_client_tls)
Socket.close(server_socket)
TLS.Config.free(server_config)
TLS.free(server_ctx)
exit_subprocess(0)
else
TLS.init()
client_config = TLS.Config.new()
TLS.Config.set_ca_file(client_config, TLS.ca_cert_path())
client_ctx = TLS.client()
TLS.configure(client_ctx, client_config)
sleep(1)
client_tls = TLS.Client.connect(client_ctx, hostname(),
"57000")
puts("client: connected to egress 57000")
Buf.write_str(client_tls.socket_buf.buf_rw.w, "Hello from client !\n")
line = Buf.read_line(client_tls.socket_buf.buf_rw.r)
puts("client: #{line}")
TLS.Client.close(client_tls)
TLS.Config.free(client_config)
TLS.free(client_ctx)
end