Advertisement
Guest User

Untitled

a guest
Nov 10th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.30 KB | None | 0 0
  1. #include <ESP8266WiFi.h>
  2. #include <WiFiClient.h>
  3. #include <ESP8266WebServer.h>
  4. #include <NTPClient.h>
  5. #include <WiFiUdp.h>
  6. #include <ESP8266mDNS.h>
  7. #include <FS.h>
  8.  
  9. #include "console.h"
  10. #include "tictactoe.h"
  11. #include "main.h"
  12.  
  13. #define L_GREEN 2
  14. #define L_YELLOW 0
  15. #define L_ORANGE 4
  16. #define L_RED 5
  17.  
  18. const char* ssid = "***";
  19. const char* password = "***";
  20.  
  21. int requests = 0;
  22. String IPs = "[";
  23.  
  24. IPAddress staticIP86_10(192,168,0,115);
  25. IPAddress gateway86_10(192,168,0,1);
  26. IPAddress subnet86_10(255,255,255,0);
  27.  
  28. ESP8266WebServer server(80); //Server on port 80
  29.  
  30. String getContentType(String filename);
  31. bool handleFileRead(String path);
  32.  
  33. WiFiUDP ntpUDP;
  34. NTPClient timeClient(ntpUDP, "1.sk.pool.ntp.org", 60*60, 60*1000);
  35.  
  36. //===============================================================
  37. // Game Data
  38. //===============================================================
  39.  
  40. /*String ticPlayer1 = "";
  41. String ticPlayer2 = "";
  42. String ticClick = "-1";
  43. int ticReset = 0;*/
  44.  
  45. //===============================================================
  46. // LEDs
  47. //===============================================================
  48. void LEDblink(int pin) {
  49. requests++;
  50. digitalWrite(pin, HIGH);
  51. delay(10);
  52. digitalWrite(pin, LOW);
  53. }
  54. //===============================================================
  55. // This routine is executed when you open its IP in browser
  56. //===============================================================
  57. void handleNotFound(){
  58. if(server.uri().indexOf(".php")>-1) {
  59. Serial.print("404 "+server.uri()+": "+server.client().remoteIP().toString()+" (Blocked)n");
  60. return;
  61. }
  62. Serial.print("404 "+server.uri()+": "+server.client().remoteIP().toString()+"n");
  63. String s = HTML_Pro_notFound;
  64. server.send(404, "text/html", s);
  65.  
  66. LEDblink(L_YELLOW);
  67. }
  68. void sendFile(String path, String type) {
  69. Serial.print(server.client().remoteIP().toString()+": "+server.uri()+"n");
  70. if (SPIFFS.exists(path)) { // If the file exists
  71. File file = SPIFFS.open(path, "r"); // Open it
  72. size_t sent = server.streamFile(file, type); // And send it to the client
  73. file.close(); // Then close the file again
  74. }
  75. }
  76. //===============================================================
  77. void reboot() {
  78. server.send(200, "text/plane", "true");
  79. LEDblink(L_RED);
  80. digitalWrite(15, LOW);
  81. digitalWrite(0, HIGH);
  82. digitalWrite(2, HIGH);
  83. ESP.restart();
  84. }
  85. void admin() {
  86. if(!server.hasArg("user") || !server.hasArg("pass") || server.arg("user") == NULL || server.arg("pass") == NULL || server.arg("request")=="login") {
  87. String expire = "";
  88. if(server.arg("remember")=="on"){expire="30";}else{expire="0";}
  89. server.send(200, "text/html", "<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><title>ProTools.tk | Please Wait</title><link rel='stylesheet' type='text/css' href='/main.css'><script src='/cookies.js'></script></head><body style='background:#2d2d2d'><form class='center' action='/admin' method='post' style='display:none;'><input class='a' type='text' name='user'><input class='a' type='password' name='pass'><input class='a' type='text' name='request' value='panel'><button class='a' type='submit'></button></form><div class='loading center' style='margin-top:150px'></div><script type='text/javascript'>var u = '"+server.arg("user")+"';var p = '"+server.arg("pass")+"';if(u.length > 7 && p.length > 7) {delCookie('user');delCookie('pass');setCookie('user', u, "+expire+");setCookie('pass', p, "+expire+");}if(getCookie('user') && getCookie('user')) {var a=document.getElementsByClassName('a');a[0].value=getCookie('user');a[1].value=getCookie('pass');a[3].click();}else{location.replace('/login');}</script></body></html>");
  90. //server.sendHeader("Location","/login");
  91. //server.send(303);
  92. }
  93. if((server.arg("user")=="***")&&(server.arg("pass")=="***")) {
  94. if(server.arg("request")=="data") {
  95. String c = "{"uptime":"+String(millis(),DEC)+","req":"+String(requests)+","ips":"+IPs+"]}";
  96. server.send(200, "text/json", c);
  97. }
  98. else if(server.arg("request")=="panel") {
  99. server.send(200, "text/plane", "Admin panel here");
  100. }
  101. else {
  102. server.send(400, "text/plane", "400 Bad Request");
  103. }
  104. }
  105. else{
  106. server.sendHeader("Location","/login");
  107. server.send(303);
  108. }
  109. LEDblink(L_RED);
  110. }
  111. void console() {
  112. Serial.print("Console :"+server.client().remoteIP().toString()+"n");
  113. String s = HTML_console;
  114. server.send(200, "text/html", s);
  115. LEDblink(L_ORANGE);
  116. }
  117.  
  118. //===============================================================
  119. /*void minesPage() {
  120. String s = HTML_mines;
  121. server.send(200, "text/html", s);
  122. LEDblink(L_YELLOW);
  123. }
  124. void minesScript() {
  125. String s = JS_mines;
  126. server.send(200, "text/javascript", s);
  127. LEDblink(L_YELLOW);
  128. }
  129. void minesStyle() {
  130. String s = CSS_mines;
  131. server.send(200, "text/css", s);
  132. LEDblink(L_YELLOW);
  133. }*/
  134.  
  135. //===============================================================
  136.  
  137. /*void ticPage() {
  138. String s = HTML_tictactoe;
  139. server.send(200, "text/html", s);
  140. LEDblink(L_YELLOW);
  141. }
  142. void ticScript() {
  143. String s = JS_tictactoe;
  144. server.send(200, "text/javascript", s);
  145. LEDblink(L_YELLOW);
  146. }
  147. void ticStyle() {
  148. String s = CSS_tictactoe;
  149. server.send(200, "text/css", s);
  150. LEDblink(L_YELLOW);
  151. }
  152.  
  153. void ticData() {
  154. Serial.print("TicTacToe: "+server.client().remoteIP().toString()+"n");
  155. String user = server.arg("user");
  156. String clicked = server.arg("click");
  157. String request = server.arg("request");
  158. String leave = server.arg("leave");
  159. if(user != "") {
  160. if(user == "get") {
  161. server.send(200, "text/plane", "{"Player1":""+ticPlayer1+"", "Player2":""+ticPlayer2+""}");
  162. }
  163. else if(ticPlayer1 == "") {
  164. ticPlayer1 = user;
  165. server.send(200, "text/plane", "player1");
  166. }
  167. else if(ticPlayer2 == "") {
  168. ticPlayer2 = user;
  169. server.send(200, "text/plane", "player2");
  170. }
  171. else {
  172. server.send(200, "text/plane", "Full");
  173. }
  174. if(ticPlayer1 != "" && ticPlayer2 != "") {
  175. ticClick = "0";
  176. }
  177. digitalWrite(L_ORANGE,HIGH);
  178. delay(500);
  179. digitalWrite(L_ORANGE,LOW);
  180. }
  181. else if(leave != "") {
  182. if(leave == ticPlayer1) {
  183. ticPlayer1 = "";
  184. }
  185. else if(leave == ticPlayer2) {
  186. ticPlayer2 = "";
  187. }
  188. ticClick = "-1";
  189. server.send(200, "text/plane", leave+" left");
  190. }
  191. else if(clicked != "") {
  192. ticClick = clicked;
  193. server.send(200, "text/plane", "OK: "+ticClick);
  194. }
  195. else if(request != "") {
  196. if(request == "checkClicked") {
  197. server.send(200, "text/plane", ticClick);
  198. }
  199. if(request == "reset") {
  200. ticReset++;
  201. if(ticReset == 2) {
  202. ticPlayer1 = "";
  203. ticPlayer2 = "";
  204. ticClick = "-1";
  205. ticReset = 0;
  206. server.send(200, "text/plane", "Reseted");
  207. }
  208. else {
  209. server.send(200, "text/plane", "Verification required");
  210. }
  211. }
  212. }
  213. LEDblink(L_YELLOW);
  214. }*/
  215. //==============================================================
  216. // SETUP
  217. //==============================================================
  218. void setup(void){
  219. Serial.begin(9600);
  220.  
  221. //Onboard LED port Direction output
  222. pinMode(L_GREEN,OUTPUT);
  223. pinMode(L_YELLOW,OUTPUT);
  224. pinMode(L_ORANGE,OUTPUT);
  225. pinMode(L_RED,OUTPUT);
  226.  
  227. digitalWrite(L_RED, HIGH);
  228.  
  229. WiFi.hostname("ESP8266");
  230.  
  231. WiFi.begin(ssid, password); //Connect to your WiFi router
  232.  
  233. MDNS.begin("ESP8266");
  234. MDNS.addService("http", "tcp", 80);
  235.  
  236. digitalWrite(L_RED, LOW);
  237. // Wait for connection
  238. digitalWrite(L_ORANGE, HIGH);
  239. while (WiFi.status() != WL_CONNECTED) {
  240. delay(500);
  241. Serial.print(".");
  242. }
  243. digitalWrite(L_ORANGE, LOW);
  244. digitalWrite(L_YELLOW, HIGH);
  245.  
  246. WiFi.config(staticIP86_10, gateway86_10, subnet86_10);
  247.  
  248. //If connection successful show IP address in serial monitor
  249. Serial.println("");
  250. Serial.print("Connected to ");
  251. Serial.println(ssid);
  252. Serial.print("IP address: ");
  253. Serial.println(WiFi.localIP()); //IP address assigned to your ESP
  254.  
  255. SPIFFS.begin();
  256.  
  257. server.on("/", []() { // root
  258. sendFile("/page.html", "text/html");
  259. LEDblink(L_YELLOW);
  260. });
  261. server.on("/main.css", []() { // main.css
  262. sendFile("/main.css", "text/css");
  263. LEDblink(L_ORANGE);
  264. });
  265. server.on("/page.css", []() { // page.css
  266. sendFile("/page.css", "text/css");
  267. LEDblink(L_ORANGE);
  268. });
  269. server.on("/page.js", []() { // page.js
  270. sendFile("/page.js", "text/javascript");
  271. String ip = server.client().remoteIP().toString();
  272. if(IPs=="["){
  273. IPs+="{"time":"+String(timeClient.getEpochTime(),DEC)+","ip":""+ip+""}";
  274. }else{
  275. IPs+=",{"time":"+String(timeClient.getEpochTime(),DEC)+","ip":""+ip+""}";
  276. }
  277. LEDblink(L_YELLOW);
  278. });
  279. server.on("/login/style.css", []() { // login/style.css
  280. sendFile("/login/style.css", "text/css");
  281. LEDblink(L_ORANGE);
  282. });
  283. server.on("/cookies.js", []() { // cookies.js
  284. sendFile("/cookies.js", "text/javascript");
  285. LEDblink(L_ORANGE);
  286. });
  287.  
  288. server.on("/translator", []() { // translator
  289. sendFile("/translator/page.html", "text/html");
  290. LEDblink(L_ORANGE);
  291. });
  292. server.on("/translator/style.css", []() { // translator/style.css
  293. sendFile("/translator/style.css", "text/css");
  294. LEDblink(L_ORANGE);
  295. });
  296. server.on("/translator/script.js", []() { // translator/script.js
  297. sendFile("/translator/script.js", "text/javascript");
  298. LEDblink(L_ORANGE);
  299. });
  300.  
  301. server.on("/login", []() { // login
  302. sendFile("/login/page.html", "text/html");
  303. LEDblink(L_ORANGE);
  304. });
  305. server.on("/admin", admin);
  306. server.on("/reboot", reboot);
  307. server.on("/console", console);
  308.  
  309. /*server.on("/minesweeper", minesPage);
  310. server.on("/minesweeper/script.js", minesScript);
  311. server.on("/minesweeper/style.css", minesStyle);
  312.  
  313. server.on("/tictactoe", ticPage);
  314. server.on("/tictactoe/script.js", ticScript);
  315. server.on("/tictactoe/style.css", ticStyle);
  316. server.on("/tictactoe/data", ticData);*/
  317.  
  318. server.onNotFound(handleNotFound);
  319.  
  320. server.begin(); //Start server
  321. timeClient.begin();
  322. Serial.println("HTTP server started");
  323. digitalWrite(L_YELLOW, LOW);
  324. digitalWrite(L_GREEN, HIGH);
  325. }
  326. //==============================================================
  327. // LOOP
  328. //==============================================================
  329. void loop(void){
  330. timeClient.update();
  331. server.handleClient(); //Handle client requests
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement