-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdevServer.js
112 lines (98 loc) · 3.2 KB
/
devServer.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
var path = require('path');
var express = require('express');
var router = express.Router();
var webpack = require('webpack');
var config = require('./webpack.config.dev');
var crypto = require("crypto");
var url = require("url");
var signature = require('./signature');
var wechatConfig = require('./wechatConfig');
var URI = require('urijs');
var https = require('https');
var app = express();
var compiler = webpack(config);
app.use(require('webpack-dev-middleware')(compiler, {
noInfo: true,
publicPath: config.output.publicPath
}));
app.use(require('webpack-hot-middleware')(compiler));
app.use("/",router);
app.use("/images", express.static(path.join(__dirname, 'images')));
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'index2.html'));
});
router.get('/load/', function(req, res) {
var params = req.query
var link = decodeURIComponent(params.link);
console.log("link: " + link);
});
router.get('/validate/', function(req, res) {
console.log("validate")
var query = url.parse(req.url, true).query;
//console.log("*** URL:" + req.url);
//console.log(query);
var signature = query.signature;
var echostr = query.echostr;
var timestamp = query['timestamp'];
var nonce = query.nonce;
var oriArray = new Array();
oriArray[0] = nonce;
oriArray[1] = timestamp;
oriArray[2] = "wechat" //这里是你在微信开发者中心页面里填的token,而不是****
oriArray.sort();
var original = oriArray.join('');
console.log("Original str : " + original);
console.log("Signature : " + signature );
var scyptoString = sha1(original);
if (signature == scyptoString){
res.end(echostr);
console.log("Confirm and send echo back");
} else {
res.end("false");
console.log("Failed!");
}
});
router.get("/signature/", function(req, res) {
//let originalUrl = req.protocol + '://' + req.get('host') + req.originalUrl;
var params = req.query;
let targetUrl = decodeURIComponent(params.targetUrl);
console.log("link to verify: " + targetUrl);
signature.sign(targetUrl, function(signatureMap){
signatureMap.appId = wechatConfig.appid;
res.send(signatureMap);
});
});
router.get("/access_token/", function(req, res) {
var params = req.query;
console.log("access_token params " + JSON.stringify(params));
var code = params.code;
console.log("code: " + code);
var url = "https://api.weixin.qq.com/sns/oauth2/access_token"
+ "?appid=" + wechatConfig.appid
+ "&secret=" + wechatConfig.secret
+ "&code=" + code
+ "&grant_type=authorization_code";
https.get(url, function (reply) {
var data = '';
reply.on('data', function (chunk) {
data += chunk;
});
reply.on('end', function () {
console.log("end, data " + data);
res.send(data);
});
}).on('error', function () {
console.error("error getting access_token");
res.send("error");
});
});
function sha1(str) {
var md5sum = crypto.createHash("sha1");
md5sum.update(str);
str = md5sum.digest("hex");
return str;
}
var httpServer = require('http').createServer(app);
httpServer.listen(process.env.PORT || 3000, function() {
console.log('Listening at http://localhost:3000');
});