From db2e06e8a66768da526b6d85137896ea081a45b5 Mon Sep 17 00:00:00 2001 From: hellodword <46193371+hellodword@users.noreply.github.com> Date: Tue, 14 Jan 2020 12:10:38 +0800 Subject: [PATCH] feat: add project-zero-issues (#3731) Co-authored-by: DIYgod --- docs/programming.md | 6 ++++ lib/router.js | 3 ++ lib/routes/project-zero-issues/index.js | 48 +++++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 lib/routes/project-zero-issues/index.js diff --git a/docs/programming.md b/docs/programming.md index f4b519e95c..e16aba112e 100644 --- a/docs/programming.md +++ b/docs/programming.md @@ -241,6 +241,12 @@ GitHub 官方也提供了一些 RSS: +## project-zero issues + +### issues + + + ## NOSEC.org ### Posts diff --git a/lib/router.js b/lib/router.js index 4aa139aa9f..b9f8bf7031 100644 --- a/lib/router.js +++ b/lib/router.js @@ -2098,6 +2098,9 @@ router.get('/mlog-club/projects', require('./routes/mlog-club/projects')); // Chrome 网上应用店 router.get('/chrome/webstore/extensions/:id', require('./routes/chrome/extensions')); +// project-zero issues +router.get('/project-zero-issues', require('./routes/project-zero-issues/index')); + // 平安银河实验室 router.get('/galaxylab', require('./routes/galaxylab/index')); diff --git a/lib/routes/project-zero-issues/index.js b/lib/routes/project-zero-issues/index.js new file mode 100644 index 0000000000..7c3a413d2d --- /dev/null +++ b/lib/routes/project-zero-issues/index.js @@ -0,0 +1,48 @@ +const got = require('@/utils/got'); + +const baseUrl = 'https://bugs.chromium.org/prpc/monorail.Issues/ListIssues'; + +module.exports = async (ctx) => { + const csrfresponse = await got.get('https://bugs.chromium.org/p/project-zero/issues/list?can=1&q=&sort=-id&colspec=ID%20Status%20Restrict%20Reported%20Vendor%20Product%20Finder%20Summary'); + const token = csrfresponse.data.match(/(?<='token': ')[^'\s]+(?=')/g)[0]; + + const formdata = `{"query":"","cannedQuery":1,"projectNames":["project-zero"],"pagination":{"maxItems":50,"start":0},"sortSpec":"-id"}`; + const title = `project-zero issues`; + const link = `https://bugs.chromium.org/p/project-zero/issues/list?can=1&q=&sort=-id&colspec=ID%20Status%20Restrict%20Reported%20Vendor%20Product%20Finder%20Summary`; + + // curl 'https://bugs.chromium.org/prpc/monorail.Issues/ListIssues' -X POST -H 'accept: application/json' -H 'x-xsrf-token: 1111' -H 'content-type: application/json' --data '{"query":"","cannedQuery":1,"projectNames":["project-zero"],"pagination":{"maxItems":1,"start":100},"sortSpec":"-id"}' + + const response = await got({ + method: 'post', + url: baseUrl, + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + 'x-xsrf-token': token, + }, + data: formdata, + }); + + const data = JSON.parse(response.data.substr(")]}'".length)).issues; + + ctx.state.data = { + // 源标题 + title: title, + // 源链接 + link: link, + // 源说明 + description: title, + // 遍历此前获取的数据 + item: data.map((item) => ({ + // 文章标题 + title: `[${item.statusRef.status}] ${item.summary}`, + // 文章正文 + description: item.summary, + // 文章发布时间 + pubDate: new Date(item.openedTimestamp * 1000).toUTCString(), + // 文章链接 + link: `https://bugs.chromium.org/p/project-zero/issues/detail?id=${item.localId}`, + author: item.ownerRef.displayName, + })), + }; +};