index.js.cpp 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. //
  2. // Created by xcbosa on 2023-02-06
  3. //
  4. #include "../../processor/processor.h"
  5. #include "../../utils/utils.h"
  6. #include "../../webuiconf.h"
  7. using namespace std;
  8. using namespace xc::processor;
  9. using namespace xc::utils;
  10. using namespace xc::processor::templates;
  11. namespace xc::controller {
  12. static string ControllerPath = "/index.js";
  13. static ResponseData *controllerResponse(RequestData request) {
  14. return new TextResponseData(200,
  15. string("let app = new Framework7({\n") +
  16. string(" // App root element\n") +
  17. string(" el: \'#app\',\n") +
  18. string(" // App Name\n") +
  19. string(" name: \'FRPCWebUI\',\n") +
  20. string(" // App id\n") +
  21. string(" id: \'org.forgetive.frpcwebui\',\n") +
  22. string(" // Enable swipe panel\n") +
  23. string(" panel: {\n") +
  24. string(" swipe: true,\n") +
  25. string(" },\n") +
  26. string(" // Add default routes,\n") +
  27. string(" autoDarkMode: true,\n") +
  28. string(" routes: [\n") +
  29. string(" {\n") +
  30. string(" path: \'/about/\',\n") +
  31. string(" url: \'about.html\',\n") +
  32. string(" },\n") +
  33. string(" ]\n") +
  34. string("});\n") +
  35. string("\n") +
  36. string("function createGuage(elAppendix, valueText, description, value, size) {\n") +
  37. string(" app.gauge.create({\n") +
  38. string(" el: \'.gauge_template_\' + elAppendix,\n") +
  39. string(" type: \'circle\',\n") +
  40. string(" value: value,\n") +
  41. string(" size: size,\n") +
  42. string(" borderColor: \'#2196f3\',\n") +
  43. string(" borderWidth: 10,\n") +
  44. string(" valueText: valueText,\n") +
  45. string(" valueFontSize: 41,\n") +
  46. string(" valueTextColor: \'#2196f3\',\n") +
  47. string(" labelText: description,\n") +
  48. string(" })\n") +
  49. string("}\n") +
  50. string("\n") +
  51. string("function doLogin(salt) {\n") +
  52. string(" let data = app.form.convertToData(\"#loginForm\")\n") +
  53. string(" if (data.username.length == 0) {\n") +
  54. string(" app.dialog.alert(\"请输入用户名\")\n") +
  55. string(" return\n") +
  56. string(" }\n") +
  57. string(" if (data.password.length == 0) {\n") +
  58. string(" app.dialog.alert(\"请输入密码\")\n") +
  59. string(" return\n") +
  60. string(" }\n") +
  61. string(" data.password = sha256_digest(data.password + salt)\n") +
  62. string(" window.location = \"/login?v=\" + JSON.stringify(data)\n") +
  63. string(" return\n") +
  64. string("}\n") +
  65. string("\n") +
  66. string("function isValidIP(ip) {\n") +
  67. string(" let reg = /^(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d{1,2}|1\\d\\d|2[0-4]\\d|25[0-5])$/\n") +
  68. string(" return reg.test(ip)\n") +
  69. string("}\n") +
  70. string("\n") +
  71. string("function doModify(uuid) {\n") +
  72. string(" let data = app.form.convertToData(\"#modifyForm_\" + uuid)\n") +
  73. string(" if (!isValidIP(data.address)) {\n") +
  74. string(" app.dialog.alert(\"IP地址格式错误,请重新填写。\")\n") +
  75. string(" return\n") +
  76. string(" }\n") +
  77. string(" if (data.port < 0 && data.port >= 65536) {\n") +
  78. string(" app.dialog.alert(\"内部端口号必须在0-65535范围内。\")\n") +
  79. string(" return\n") +
  80. string(" }\n") +
  81. string(" window.location = \"/changePortSettings?v=\" + JSON.stringify(data)\n") +
  82. string(" return\n") +
  83. string("}\n") +
  84. string("\n") +
  85. string("function doCreate() {\n") +
  86. string(" let data = app.form.convertToData(\"#createNewForm\")\n") +
  87. string(" if (data.address == \"\") {\n") +
  88. string(" app.dialog.alert(\"请填写内部IP地址。\")\n") +
  89. string(" return\n") +
  90. string(" }\n") +
  91. string(" if (!isValidIP(data.address)) {\n") +
  92. string(" app.dialog.alert(\"IP地址格式错误,请重新填写。\")\n") +
  93. string(" return\n") +
  94. string(" }\n") +
  95. string(" if (data.port == \"\") {\n") +
  96. string(" app.dialog.alert(\"请填写内部端口。\")\n") +
  97. string(" return\n") +
  98. string(" }\n") +
  99. string(" if (data.port < 0 && data.port >= 65536) {\n") +
  100. string(" app.dialog.alert(\"内部端口号必须在0-65535范围内。\")\n") +
  101. string(" return\n") +
  102. string(" }\n") +
  103. string(" window.location = \"/createPort?v=\" + JSON.stringify(data)\n") +
  104. string(" return\n") +
  105. string("}\n") +
  106. string("\n") +
  107. string("function doDelete(uuid) {\n") +
  108. string(" let req = {\n") +
  109. string(" \"uuid\": uuid\n") +
  110. string(" }\n") +
  111. string(" window.location = \"/removePort?v=\" + JSON.stringify(req)\n") +
  112. string("}\n")
  113. , mimeTypeOfFile(ControllerPath));
  114. }
  115. ContentGeneratorDefineS(request.getURLPath() == ControllerPath, controllerResponse(request))
  116. }