Soportar distintas redes
This commit is contained in:
@ -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"
|
||||
|
||||
Reference in New Issue
Block a user