Я настраиваю аналогичный портал на основе this .Моя цель состоит в том, чтобы любой, кто подключается, был перенаправлен и обслуживал страницу index.html, хранящуюся в файловой системе ESP8266, с которой он может перемещаться на другие страницы, сохраненные аналогичным образом.Код различает иностранные сайты и локальные сайты, просматривая URL в текстовом файле с именем «urls.txt».Все работает нормально, при условии, что пользователь пытается посетить сайт с чистым http, но пользователь не перенаправляется при попытке посетить сайт HTTPS.Например, попытка подключиться к «www.google.com» не удастся, но «www.nerfhaven.com» будет успешным.
Вот код из server.lua:
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
local rnrn=0
local Status = 0
local DataToGet = 0
local method=""
local url=""
local vars=""
conn:on("receive",function(conn,payload)
if Status==0 then
_, _, method, url, vars = string.find(payload, "([A-Z]+) /([^?]*)%??(.*) HTTP")
-- print(method, url, vars)
end
[...]
conn:send("HTTP/1.1 200 OK\r\n\r\n")
[...]
local foundmatch = 0
file.open("urls.txt", "r")
print("potato")
for i = 108,1,-1 do
line = file.readline()
--print(line)
if string.match(line, url) then
foundmatch=1
print("found " .. url)
end
end
print("potato2")
file.close()
[...]
conn:on("sent",function(conn)
print("sending data")
if DataToGet>=0 and method=="GET" then
if file.open(url, "r") then
file.seek("set", DataToGet)
local line=file.read(512)
file.close()
if line then
conn:send(line)
-- print ("sending:" .. DataToGet)
DataToGet = DataToGet + 512
if (string.len(line)==512) then
return
end
end
end
end
conn:close()
end)
end)
Я думаю, это должно сработать, поскольку я не вижу способа провести различие между веб-сайтами HTTP и HTTPS, и любой из них следует просто отключить и заменить на локальную версию.(либо index.html, либо что-то в urls.txt).Вместо этого он, похоже, вообще не отвечает.