require 'webrick'

port = 8001
document_root = '/app'

# Comprobar si el archivo htpasswd existe, de lo contrario abortar
htpasswd_file = '/app/htpasswd'
if !File.exist?(htpasswd_file)
  puts "ERROR: Archivo htpasswd no encontrado en #{htpasswd_file}."
  exit 1
end

# Configurar Autenticación Básica
htpasswd = WEBrick::HTTPAuth::Htpasswd.new(htpasswd_file)
authenticator = WEBrick::HTTPAuth::BasicAuth.new(
  UserDB: htpasswd,
  Realm: 'Dashboard Keller Seguro'
)

puts "Iniciando servidor seguro en el puerto #{port}..."

server = WEBrick::HTTPServer.new(
  Port: port,
  DocumentRoot: document_root,
  BindAddress: '0.0.0.0',
  RequestCallback: proc { |req, res|
    authenticator.authenticate(req, res)
  }
)

# Apagar limpiamente al recibir señal del contenedor
trap 'INT' do server.shutdown end
trap 'TERM' do server.shutdown end

server.start
