index.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. const express = require("express");
  2. const router = express.Router();
  3. const crypto = require("crypto");
  4. const fs = require("fs");
  5. router.all("/", (req, res, next) => {
  6. fs.promises
  7. .access("./.env")
  8. .then(() => {
  9. res.render("info", {
  10. message: "服务已在运行。",
  11. });
  12. <<<<<<< HEAD:routers/index.js
  13. =======
  14. // pushMessage(
  15. // req,
  16. // res,
  17. // `请注意,ip 地址为 ${req.ip} 的用户访问了你的消息通知服务,如果非你本人,则你的私有消息通知服务可能已被泄露,当前版本无法阻止其他用户通过本系统向你发送消息。`
  18. // );
  19. >>>>>>> master:routes.js
  20. })
  21. .catch(() => {
  22. res.render("configure");
  23. });
  24. });
  25. router.post("/configure", (req, res, next) => {
  26. fs.promises
  27. .access("./.env")
  28. .then(() => {
  29. res.render("message", {
  30. message: ".env 文件已经存在,请手动删除该文件后重试!",
  31. });
  32. })
  33. .catch(() => {
  34. let content =
  35. `APP_ID=${req.body.APP_ID}\n` +
  36. `APP_SECRET=${req.body.APP_SECRET}\n` +
  37. `TOKEN=${req.body.TOKEN}\n` +
  38. `TEMPLATE_ID=${req.body.TEMPLATE_ID}\n` +
  39. `OPEN_ID=${req.body.OPEN_ID}`;
  40. fs.promises
  41. .writeFile("./.env", content, "utf8")
  42. .then(() => {
  43. res.render("message", {
  44. message:
  45. ".env 文件写入成功,程序即将自动关闭以应用写入的新的环境变量,需要进程守护程序自动重启应用或者手动重启。",
  46. });
  47. process.exit();
  48. })
  49. .catch((e) => {
  50. res.render("info", {
  51. message: "在尝试写入 .env 文件时发生错误:" + e,
  52. });
  53. });
  54. });
  55. });
  56. router.all("/verify", (req, res, next) => {
  57. // 验证消息来自微信服务器:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
  58. const { signature, timestamp, nonce, echostr } = req.query;
  59. const token = process.env.TOKEN;
  60. let tmp_array = [token, timestamp, nonce].sort();
  61. let tmp_string = tmp_array.join("");
  62. tmp_string = crypto.createHash("sha1").update(tmp_string).digest("hex");
  63. if (tmp_string === signature) {
  64. res.send(echostr);
  65. } else {
  66. res.send("verification failed");
  67. }
  68. });
  69. <<<<<<< HEAD:routers/index.js
  70. =======
  71. router.all("/push", (req, res, next) => {
  72. let content = req.query.content || req.body.content;
  73. pushMessage(req, res, content);
  74. });
  75. router.get("/favicon.ico", (req, res, next) => {
  76. res.sendStatus(404);
  77. });
  78. router.all("/:content", (req, res, next) => {
  79. let content = req.params.content;
  80. pushMessage(req, res, content);
  81. });
  82. >>>>>>> master:routes.js
  83. module.exports = router;