wifiSetup.lua 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. function startSetup()
  2. wifi.sta.disconnect()
  3. print("Wifi disconnected")
  4. wifi.setmode(wifi.STATIONAP)
  5. stationConfig = {}
  6. stationConfig.ssid = "YoButtonSetup"
  7. stationConfig.pwd = "password"
  8. stationConfig.auth = wifi.OPEN
  9. wifi.ap.config(stationConfig)
  10. wifi.ap.dhcp.start()
  11. print("Wifi station set up")
  12. setupServerResponses()
  13. end
  14. function updateWithNewValues(payload)
  15. ssidIndex = {payload:find("newssid=")}
  16. passIndex = {payload:find("&newpass=")}
  17. recipientIndex = {payload:find("&newrecipient=")}
  18. submitIndex = {payload:find("&Submit=")}
  19. if(ssidIndex[1]~=nil and payload:find("?")~=nil) then
  20. print(ssidIndex[1]..", "..ssidIndex[2])
  21. print(passIndex[1]..", "..passIndex[2])
  22. print(recipientIndex[1]..", "..recipientIndex[2])
  23. print(submitIndex[1]..", "..submitIndex[2])
  24. newssid = string.gsub(string.sub(payload, ssidIndex[2]+1, passIndex[1]-1), "+", " ")
  25. newpassword = string.gsub(string.sub(payload, passIndex[2]+1, recipientIndex[1]-1), "+", " ")
  26. newrecipient = string.upper(string.sub(payload, recipientIndex[2]+1, submitIndex[1]-1))
  27. print(newssid)
  28. print(newpassword)
  29. print(newrecipient)
  30. wifi.sta.config(newssid, newpassword)
  31. file.open("yorecipient.txt", "w+")
  32. file.write(newrecipient)
  33. file.close()
  34. end
  35. setupStarted=0
  36. end
  37. function serveFile(c, f)
  38. end
  39. function setupServerResponses()
  40. if(srv~=nil) then
  41. srv:close()
  42. srv=nil
  43. end
  44. srv=net.createServer(net.TCP)
  45. srv:listen(80,function(conn)
  46. conn:on("receive",function(conn,payload)
  47. print("request received")
  48. ind = {string.find(payload, "\n")}
  49. if(ind[1] ~= nil)then
  50. payload = string.sub(payload, 1, ind[1])
  51. end
  52. --payload is reduced to the first line
  53. print(payload)
  54. --[[requestedFile = string.match(payload, "/(.+) HTTP")
  55. if file.open(requestedFile, "r") then
  56. serveFile(conn, requestedFile)
  57. return
  58. end
  59. --]]
  60. updateWithNewValues(payload)
  61. file.open("yorecipient.txt", "r")
  62. recipient = string.gsub(file.readline(), "\n", "", 1)
  63. file.close()
  64. ssid, password = wifi.sta.getconfig()
  65. ip = wifi.sta.getip()
  66. if(ip==nil) then
  67. ip="0.0.0.0"
  68. end
  69. conn:send("<body><h1>YO Button setup</h1>"
  70. .."Current wifi SSID: <br>"
  71. .."<input type=\"text\" value=\""..ssid .."\" readonly><br>"
  72. .."Current wifi password: <br>"
  73. .."<input type=\"text\" value=\""..password .."\" readonly><br>"
  74. .."Yo Button's IP address: <br>"
  75. .."<input type=\"text\" value=\""..ip.."\" readonly><br>"
  76. .."Yo recipient: <br>"
  77. .."<input type=\"text\" value=\""..recipient.."\" readonly><br>"
  78. .."<form>New SSID: <br>"
  79. .."<input type=\"text\" name=\"newssid\" value=\""..ssid .."\"><br>"
  80. .."New password: <br>"
  81. .."<input type=\"text\" name=\"newpass\" value=\""..password .."\"><br>"
  82. .."New recipient: <br>"
  83. .."<input type=\"text\" name=\"newrecipient\" value=\""..recipient.."\"><br>"
  84. .."<input type=\"submit\" name=\"Submit\">"
  85. .."</form></body>")
  86. end)
  87. conn:on("sent",function(conn) conn:close() end)
  88. end)
  89. end
  90. startSetup()