diff --git a/webpage.lua b/webpage.lua
new file mode 100644
index 0000000..222c4db
--- /dev/null
+++ b/webpage.lua
@@ -0,0 +1,42 @@
+-------------
+--- The webpage for the Webserver
+function sendWebPage(conn,answertype)
+ collectgarbage()
+ if (ssid == nil) then
+ ssid="Not set"
+ end
+ if (sntpserverhostname == nil) then
+ sntpserverhostname="ptbtime1.ptb.de"
+ end
+ if (timezoneoffset == nil) then
+ timezoneoffset=1
+ end
+ local buf="HTTP/1.1 200 OK\nServer: NodeMCU\nContent-Type: text/html\n\n"
+ if (node.heap() < 8000) then
+ buf = buf .. "
Busy, please come later again
"
+ else
+ buf = buf .. ""
+ buf = buf .. "WordClock Setup Page"
+ buf = buf .. "\n"
+ buf = buf .. "Welcome to the WordClock
Please note that all settings are mandatory
"
+ buf = buf ..""
+ if answertype==2 then
+ buf = buf .. "New configuration saved
"
+ elseif answertype==3 then
+ buf = buf .. "ERROR
"
+ elseif answertype==4 then
+ buf = buf .. "Not all parameters set
"
+ end
+ buf = buf .. "\n"
+ end
+ conn:send(buf)
+ buf=nil
+ collectgarbage()
+end
\ No newline at end of file
diff --git a/webserver.lua b/webserver.lua
index d5dc936..980bfa6 100644
--- a/webserver.lua
+++ b/webserver.lua
@@ -2,87 +2,82 @@
configFile="config.lua"
-
-function sendWebPage(conn,answertype)
- collectgarbage()
- if (ssid == nil) then
- ssid="Not set"
- end
- if (sntpserverhostname == nil) then
- sntpserverhostname="ptbtime1.ptb.de"
- end
- if (timezoneoffset == nil) then
- timezoneoffset=1
- end
- local buf="HTTP/1.1 200 OK\nServer: NodeMCU\nContent-Type: text/html\n\n"
- if (node.heap() < 8000) then
- buf = buf .. "Busy, please come later again
"
- else
- buf = buf .. ""
- buf = buf .. "WordClock Setup Page"
- buf = buf .. "\n"
- buf = buf .. "Welcome to the WordClock
Please note that all settings are mandatory
"
- buf = buf ..""
- if answertype==2 then
- buf = buf .. "New configuration saved
"
- elseif answertype==3 then
- buf = buf .. "ERROR
"
- elseif answertype==4 then
- buf = buf .. "Not all parameters set
"
- end
- buf = buf .. "\n"
- end
- conn:send(buf)
- buf=nil
- collectgarbage()
-end
-
function startWebServer()
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(conn,payload)
+
if (payload:find("GET /") ~= nil) then
--here is code for handling http request from a web-browser
+
+ -- Load the webcontent
+ mydofile("webpage")
+
ssid, password, bssid_set, bssid = wifi.sta.getconfig()
sendWebPage(conn,1)
- conn:on("sent", function(conn) conn:close() end)
+ conn:on("sent", function(conn)
+ conn:close()
+ -- Clear the webpage generation
+ sendWebPage=nil
+ print("Clean webpage from RAM")
+ end)
+
+
else if (payload:find("POST /") ~=nil) then
--code for handling the POST-request (updating settings)
_, postdatastart = payload:find("\r\n\r\n")
--Next lines catches POST-requests without POST-data....
if postdatastart==nil then postdatastart = 1 end
- postRequestData=string.sub(payload,postdatastart+1)
+ local postRequestData=string.sub(payload,postdatastart+1)
local _POST = {}
for i, j in string.gmatch(postRequestData, "(%w+)=([^&]+)&*") do
_POST[i] = j
end
postRequestData=nil
- if ((_POST.ssid~=nil) and (_POST.password~=nil) and (_POST.sntpserver~=nil) and (_POST.timezoneoffset~=nil)) then
+
+ print("Inform user via Web")
+ if (sendWebPage == nil) then
+ print("Loading webpage ...")
+ -- Load the webcontent
+ mydofile("webpage")
+ end
+
+ conn:on("sent", function(conn)
+ conn:close()
+ -- Clear the webpage generation
+ sendWebPage=nil
+ print("Clean webpage from RAM")
+ end)
+
+ if ((_POST.ssid~=nil) and (_POST.password~=nil) and (_POST.sntpserver~=nil) and (_POST.timezoneoffset~=nil)) then
+ print("New config!")
-- Safe configuration:
file.remove(configFile .. ".new")
- file.open(configFile.. ".new", "w")
+ sec, _ = rtctime.get()
+ file.open(configFile.. ".new", "w+")
file.write("-- Config\n" .. "wifi.sta.config(\"" .. _POST.ssid .. "\",\"" .. _POST.password .. "\")\n" .. "sntpserverhostname=\"" .. _POST.sntpserver .. "\"\n" .. "timezoneoffset=\"" .. _POST.timezoneoffset .. "\"\n")
+ file.write("print(\"Config from " .. sec .. "\")\n")
file.close()
+ sec=nil
file.remove(configFile)
+ print("Rename config")
if (file.rename(configFile .. ".new", configFile)) then
+ print("Successfully")
dofile(configFile) -- load the new values
+ print("New Config loaded")
sendWebPage(conn,2) -- success
+
else
+ print("Error")
sendWebPage(conn,3) -- error
end
+
else
ssid, password, bssid_set, bssid = wifi.sta.getconfig()
sendWebPage(conn,4) -- not all parameter set
end
- conn:on("sent", function(conn) conn:close() end)
+
else
--here is code, if the connection is not from a webbrowser, i.e. telnet or nc
global_c=conn