diff --git a/app/models/deploy_hidden_service.rb b/app/models/deploy_hidden_service.rb index d4d2b82..642209a 100644 --- a/app/models/deploy_hidden_service.rb +++ b/app/models/deploy_hidden_service.rb @@ -1,18 +1,32 @@ # frozen_string_literal: true -# Genera una versión onion +# Alojar el sitio como un servicio oculto de Tor, que en realidad es un +# link simbólico al DeployLocal. class DeployHiddenService < DeployWww - def deploy - return true if fqdn.blank? - - super - end - - def fqdn - values[:onion] - end + validates :hostname, format: { with: /\A[a-f0-9]{56}.onion\z/ } + # Los servicios ocultos son su propio transporte cifrado y + # autenticado. + # + # @return [String] def url - 'http://' + fqdn + "http://#{hostname}" + end + + # Los onions no son creados por Sutty sino por Tor y enviados luego a + # través de la API. El hostname por defecto es un nombre temporal que + # se parece a una dirección OnionV3. + # + # TODO: En el panel se muestra esta dirección como si fuera la real. + # + # @return [String] + def default_hostname + "#{SecureRandom.hex(28)}.onion" + end + + private + + def implements_hostname_validation? + true end end