wifiSetup.lua 3.1 KB

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