34 lines
729 B
Ruby
34 lines
729 B
Ruby
require "dotenv"
|
|
Dotenv.load!
|
|
|
|
require_relative "local_logger"
|
|
|
|
require "openssl"
|
|
require "pry"
|
|
|
|
require_relative "models"
|
|
|
|
class ImapServer
|
|
require_relative "imap_server/client_message"
|
|
require_relative "imap_server/server_message"
|
|
require_relative "imap_server/client_handler"
|
|
|
|
def initialize(host:, port:)
|
|
@host = host
|
|
@port = port
|
|
end
|
|
|
|
attr_reader :port, :host, :socket
|
|
|
|
def start
|
|
$logger.info "Starting server #{@host}:#{@port}"
|
|
@socket = TCPServer.open(@host, @port)
|
|
loop do
|
|
$logger.info "Server accept new connections now"
|
|
Thread.start(@socket.accept) do |client_socket|
|
|
ClientHandler.new(server: self, socket: client_socket).start
|
|
end
|
|
end
|
|
end
|
|
end
|