|
@@ -2,12 +2,55 @@ const express = require("express");
|
|
|
const router = express.Router();
|
|
const router = express.Router();
|
|
|
const crypto = require("crypto");
|
|
const crypto = require("crypto");
|
|
|
const axios = require("axios");
|
|
const axios = require("axios");
|
|
|
|
|
+const fs = require("fs");
|
|
|
|
|
+const requestToken = require("./utils").requestToken;
|
|
|
|
|
|
|
|
-router.get("/", (req, res, next) => {
|
|
|
|
|
- res.send("OK");
|
|
|
|
|
|
|
+router.all("/", (req, res, next) => {
|
|
|
|
|
+ fs.promises
|
|
|
|
|
+ .access("./.env")
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ res.render("message", {
|
|
|
|
|
+ message: "服务已在运行。",
|
|
|
|
|
+ });
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(() => {
|
|
|
|
|
+ res.render("configure");
|
|
|
|
|
+ });
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+router.post("/configure", (req, res, next) => {
|
|
|
|
|
+ fs.promises
|
|
|
|
|
+ .access("./.env")
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ res.render("message", {
|
|
|
|
|
+ message: ".env 文件已经存在,请手动删除该文件后重试!",
|
|
|
|
|
+ });
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch(() => {
|
|
|
|
|
+ let content =
|
|
|
|
|
+ `APP_ID=${req.body.APP_ID}\n` +
|
|
|
|
|
+ `APP_SECRET=${req.body.APP_SECRET}\n` +
|
|
|
|
|
+ `TOKEN=${req.body.TOKEN}\n` +
|
|
|
|
|
+ `TEMPLATE_ID=${req.body.TEMPLATE_ID}\n` +
|
|
|
|
|
+ `OPEN_ID=${req.body.OPEN_ID}`;
|
|
|
|
|
+ fs.promises
|
|
|
|
|
+ .writeFile("./.env", content, "utf8")
|
|
|
|
|
+ .then(() => {
|
|
|
|
|
+ res.render("message", {
|
|
|
|
|
+ message:
|
|
|
|
|
+ ".env 文件写入成功,程序即将自动关闭以应用写入的新的环境变量,需要进程守护程序自动重启应用或者手动重启。",
|
|
|
|
|
+ });
|
|
|
|
|
+ process.exit();
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((e) => {
|
|
|
|
|
+ res.render("message", {
|
|
|
|
|
+ message: "在尝试写入 .env 文件时发生错误:" + e,
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
|
|
+ });
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-router.get("/verify", (req, res, next) => {
|
|
|
|
|
|
|
+router.all("/verify", (req, res, next) => {
|
|
|
// 验证消息来自微信服务器:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
|
|
// 验证消息来自微信服务器:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
|
|
|
const { signature, timestamp, nonce, echostr } = req.query;
|
|
const { signature, timestamp, nonce, echostr } = req.query;
|
|
|
const token = process.env.TOKEN;
|
|
const token = process.env.TOKEN;
|
|
@@ -21,10 +64,9 @@ router.get("/verify", (req, res, next) => {
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
-router.get("/push", (req, res, next) => {
|
|
|
|
|
|
|
+router.all("/push", (req, res, next) => {
|
|
|
// Reference: https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl
|
|
// Reference: https://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=tmplmsg/faq_tmpl
|
|
|
let content = req.query.content || req.body.content;
|
|
let content = req.query.content || req.body.content;
|
|
|
- console.log(`Get content: ${content}`);
|
|
|
|
|
let access_token = req.app.access_token;
|
|
let access_token = req.app.access_token;
|
|
|
let request_data = {
|
|
let request_data = {
|
|
|
touser: process.env.OPEN_ID,
|
|
touser: process.env.OPEN_ID,
|
|
@@ -37,6 +79,9 @@ router.get("/push", (req, res, next) => {
|
|
|
request_data
|
|
request_data
|
|
|
)
|
|
)
|
|
|
.then((response) => {
|
|
.then((response) => {
|
|
|
|
|
+ if (response.data && response.data.errcode === "40001") {
|
|
|
|
|
+ requestToken(req.app);
|
|
|
|
|
+ }
|
|
|
res.json(response.data);
|
|
res.json(response.data);
|
|
|
})
|
|
})
|
|
|
.catch((error) => {
|
|
.catch((error) => {
|