W3cubDocs

/Crystal 0.31

class OpenSSL::SSL::Server

Overview

This class wraps another ::Socket::Server in an SSL layer.

require "socket"
require "openssl"

tcp_server = TCPServer.new(0)

ssl_context = OpenSSL::SSL::Context::Server.new
ssl_context.certificate_chain = "openssl.crt"
ssl_context.private_key = "openssl.key"
ssl_server = OpenSSL::SSL::Server.new(tcp_server, ssl_context)

puts "SSL Server listening on #{tcp_server.local_address}"
while connection = ssl_server.accept?
  connection.puts "secure message"
  connection.close
end

Included Modules

Defined in:

openssl/ssl/server.cr

Constructors

Class Method Summary

Instance Method Summary

Constructor Detail

def self.new(wrapped : ::Socket::Server, context : OpenSSL::SSL::Context::Server = OpenSSL::SSL::Context::Server.new, sync_close : Bool = true)Source

Creates a new SSL server wrapping wrapped.

context configures the SSL options, see OpenSSL::SSL::Context::Server for details

Class Method Detail

def self.open(wrapped : ::Socket::Server, context : OpenSSL::SSL::Context::Server = OpenSSL::SSL::Context::Server.new, sync_close : Bool = true, &block)Source

Creates a new SSL server wrapping wrapped and yields it to the block.

context configures the SSL options, see OpenSSL::SSL::Context::Server for details

The server is closed after the block returns.

Instance Method Detail

def accept : OpenSSL::SSL::Socket::ServerSource

Implements ::Socket::Server#accept.

This method calls @wrapped.accept and wraps the resulting IO in a SSL socket (OpenSSL::SSL::Socket::Server) with #context configuration.

def accept? : OpenSSL::SSL::Socket::Server?Source

Implements ::Socket::Server#accept?.

This method calls @wrapped.accept? and wraps the resulting IO in a SSL socket (OpenSSL::SSL::Socket::Server) with #context configuration.

def closeSource

Closes this SSL server.

Propagates to #wrapped if sync_close is true.

def closed? : BoolSource

Returns true if this SSL server has been closed.

def context : OpenSSL::SSL::Context::ServerSource

Returns the SSL context.

def local_address : ::Socket::AddressSource

Returns local address of #wrapped.

def sync_close=(sync_close : Bool)Source

If #sync_close? is true, closing this server will close the wrapped server.

def sync_close? : BoolSource

If #sync_close? is true, closing this server will close the wrapped server.

def wrapped : ::Socket::ServerSource

Returns the wrapped server socket.

© 2012–2019 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.31.1/OpenSSL/SSL/Server.html