Soportar distintas redes

This commit is contained in:
rené montes
2024-08-29 17:44:21 -03:00
parent 64145abf0c
commit b918668949

View File

@ -5,8 +5,9 @@ require "file_utils"
serve_static false
# Acepta llaves de tinc por post a menos que ya existan
post "/:host" do |env|
post "/:network/:host" do |env|
HTTP::FormData.parse(env.request) do |u|
network = env.params.url["network"]
host = env.params.url["host"]
# Sólo letras, números y guiones bajos
@ -16,7 +17,13 @@ post "/:host" do |env|
halt env, status_code: 403, response: "Forbidden"
end
path = File.join [Kemal.config.public_folder, "hosts", host]
unless network =~ /\A[a-z0-9]+\z/i
Log.info { "#{network} no sigue el formato de nombre de red, ignorando" }
halt env, status_code: 403, response: "Forbidden"
end
path = File.join [Kemal.config.public_folder, "networks", network, "hosts", host]
# No aceptar llaves que ya existan
if File.exists? path
@ -33,7 +40,7 @@ post "/:host" do |env|
IO.copy u.body, f
end
Log.info { "#{host} creado" }
Log.info { "#{host} creado en #{network}" }
# Responder con 201
halt env, status_code: 201, response: "Created"