From 3705cf4d8f897cd3dc7b180047b3c673e7ce904c Mon Sep 17 00:00:00 2001 From: laowang Date: Thu, 19 May 2022 11:52:59 +0800 Subject: [PATCH] =?UTF-8?q?IP=E5=BD=92=E5=B1=9E=E5=9C=B0=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- callback-promise-test.js | 60 +++++++-- modules/comment.js | 25 +++- package-lock.json | 257 ++++++++++++++++++++++++++++++++++++++- package.json | 5 +- public/assets/style.css | 6 + public/detail.html | 7 +- 6 files changed, 335 insertions(+), 25 deletions(-) diff --git a/callback-promise-test.js b/callback-promise-test.js index d34fe96..87199fc 100644 --- a/callback-promise-test.js +++ b/callback-promise-test.js @@ -1,10 +1,10 @@ // 实现暂停功能 -function sleep(time){ +function sleep(time) { let start = Date.now(); let i = 0; - while(true){ + while (true) { let currentTime = Date.now(); - if(currentTime - start >= time){ + if (currentTime - start >= time) { break; } } @@ -13,30 +13,66 @@ function sleep(time){ // sleep(2000); // console.log(Date.now()); -function sleep1(time,callback){ - setTimeout(callback,time) +function sleep1(time, callback) { + setTimeout(callback, time) } // console.log(Date.now()); // sleep1(2000,function(){ // console.log(Date.now()); // }) -function sleep2(time){ - return new Promise((resovle)=>{ - setTimeout(resovle,time); +function sleep2(time) { + return new Promise((resovle) => { + setTimeout(resovle, time); }); } // console.log(Date.now()); -sleep2(2000).then(()=>{ - sleep2(2000).then(()=>{ +sleep2(2000).then(() => { + sleep2(2000).then(() => { console.log(Date.now()); }) }) -async function test(){ +async function test() { console.log(Date.now()); await sleep2(2000); await sleep2(2000); console.log(Date.now()); } -test(); +// test(); + +// 纯真IP 不支持ipv6 +//npm i lib-qqwry +const libqqwry = require('lib-qqwry'); +const qqwry = libqqwry() //初始化IP库解析器 +qqwry.speed(); //启用急速模式; + + +const ip1 = qqwry.searchIP("202.103.102.10"); //查询IP信息 +console.log(ip1) + +const ip2 = qqwry.searchIP("127.0.0.1"); //查询IP信息 +console.log(ip2) + + + + + + + + +// 支持ipv6 +//npm i ip2region +const IP2Region = require("ip2region").default; +const query = new IP2Region(); + +const res = query.search('202.103.102.10'); +console.log(res); +const res2 = query.search('240e:47d:c20:1627:30a3:ba0d:a5e6:ec19'); +console.log(res2); +const res3 = query.search('192.168.10.11'); +console.log(res3); +const res4 = query.search('::1'); +console.log(res4); +const res5 = query.search('1.1.1.1'); +console.log(res5); \ No newline at end of file diff --git a/modules/comment.js b/modules/comment.js index 543ac9a..b1d6482 100644 --- a/modules/comment.js +++ b/modules/comment.js @@ -10,6 +10,10 @@ router.all('/web/query', async (req, res) => { res.send([]) } else { const list = await db.query('select * from comment where article_id =? order by id desc', [id]); + // 循环所有的列表 将ip->address + Array.from(list).forEach(c => { + c.address = getIpAddress(c.ip); + }); res.send(list) } }); @@ -34,13 +38,26 @@ router.post('/web/add', async (req, res) => { } } }); -function getIp(ip){ - +function getIp(ip) { const ipPatch = ip.match(/\d+\.\d+\.\d+\.\d+/) - if(ipPatch) return ipPatch[0] + if (ipPatch) return ipPatch[0] return ip; } -router.get('/ip',(req,res)=>{ +// npm i ip2region +const IP2Region = require("ip2region").default; // 引用依赖库 +const query = new IP2Region(); // 实例化库 +// 根据ip查询归属地 +function getIpAddress(ip) { + const result = query.search(ip); + if (result.isp == '本机地址' || result.isp == '内网IP') { + return '内部网络'; + } + if (!result.province) return result.country; + return (result.country != '中国' ? result.country : '') + "-" + result.province + "-" + result.city; +} + + +router.get('/ip', (req, res) => { res.send(getIp(req.ip)) }) module.exports = router \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d681f09..83d0f1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -177,6 +177,11 @@ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, "async-validator": { "version": "1.8.5", "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz", @@ -185,6 +190,15 @@ "babel-runtime": "6.x" } }, + "axios": { + "version": "0.18.1", + "resolved": "https://registry.npmmirror.com/axios/-/axios-0.18.1.tgz", + "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==", + "requires": { + "follow-redirects": "1.5.10", + "is-buffer": "^2.0.2" + } + }, "babel-helper-vue-jsx-merge-props": { "version": "2.0.3", "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", @@ -401,6 +415,11 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz", @@ -509,6 +528,24 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz", @@ -583,6 +620,11 @@ "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", @@ -631,6 +673,15 @@ "vary": "~1.1.2" } }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz", @@ -659,6 +710,24 @@ "unpipe": "~1.0.0" } }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz", @@ -681,6 +750,11 @@ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "gbk.js": { + "version": "0.2.4", + "resolved": "https://registry.npmmirror.com/gbk.js/-/gbk.js-0.2.4.tgz", + "integrity": "sha512-WsTPt31seMy5q3VuF1BP1sUopJPBiOAv6u30hE+yoyAgi0QgX7KpH9SxidyYTGTwisF+qhK3TR3+ckEwLbimPw==" + }, "get-intrinsic": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz", @@ -754,8 +828,15 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } }, "has-symbols": { "version": "1.0.3", @@ -823,11 +904,24 @@ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true }, + "ip2region": { + "version": "2.2.0", + "resolved": "https://registry.npmmirror.com/ip2region/-/ip2region-2.2.0.tgz", + "integrity": "sha512-ILhlKg/07LSOvBEGhH9WVlCeWBOCmQgHXyv7SXmaWlnf0r8neJgiInJ8fyluwN7ZuUnSoLFDKbwmB39+mGvfCw==" + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -837,6 +931,11 @@ "binary-extensions": "^2.0.0" } }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" + }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-2.0.0.tgz", @@ -846,6 +945,32 @@ "ci-info": "^2.0.0" } }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz", @@ -901,6 +1026,14 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -918,6 +1051,11 @@ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, "json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.0.tgz", @@ -933,6 +1071,11 @@ "json-buffer": "3.0.0" } }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, "latest-version": { "version": "5.1.0", "resolved": "https://registry.npmmirror.com/latest-version/-/latest-version-5.1.0.tgz", @@ -942,6 +1085,53 @@ "package-json": "^6.3.0" } }, + "lib-qqwry": { + "version": "1.3.2", + "resolved": "https://registry.npmmirror.com/lib-qqwry/-/lib-qqwry-1.3.2.tgz", + "integrity": "sha512-m37ccV1FX9Bq6DiwJDLCu+YYiGFX1oM7aNkhmY4xQDsAnHSt4pyDYTrK27eldlwhBLfSXMErz8Kiee8ikQOFqA==", + "requires": { + "axios": "^0.18.0", + "chalk": "^2.4.2", + "commander": "^2.19.0", + "gbk.js": "^0.2.0", + "progress": "^2.0.3", + "stream.pipeline-shim": "^1.0.4", + "to-regex": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + } + } + }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -1135,6 +1325,11 @@ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.0.tgz", "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz", @@ -1220,6 +1415,11 @@ "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -1344,6 +1544,15 @@ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, "registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmmirror.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -1376,11 +1585,24 @@ "lowercase-keys": "^1.0.0" } }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "requires": { + "ret": "~0.1.10" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -1498,6 +1720,25 @@ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "stream.finished": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/stream.finished/-/stream.finished-1.2.0.tgz", + "integrity": "sha512-xSp45f/glqd035qAtFUxAGvhotjY/EfqDNV+rQW8o7ffligiOjPaguTEvRzeQAhiQMCdkPEBrp5++S/rQyavWQ==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "stream.pipeline-shim": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/stream.pipeline-shim/-/stream.pipeline-shim-1.1.0.tgz", + "integrity": "sha512-pSi/SZZDbSA5l3YYjSmJadCoD74/qSe79r9ZVR21lD4bpf+khn5Umi6AlfJrD8I0KQfGSqm/7Yp48dmithM+Vw==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1", + "stream.finished": "^1.2.0" + } + }, "strict-uri-encode": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", @@ -1548,7 +1789,6 @@ "version": "5.5.0", "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -1564,6 +1804,17 @@ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", "dev": true }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz", diff --git a/package.json b/package.json index 7cff09b..346b4cd 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,8 @@ "name": "pro-blog", "version": "1.0.0", "description": "", - "main": "index.js", "scripts": { - "start": "nodemon index.js" + "dev": "nodemon index.js" }, "keywords": [], "author": "", @@ -13,6 +12,8 @@ "dayjs": "^1.11.2", "element-ui": "^2.15.8", "express": "^4.18.1", + "ip2region": "^2.2.0", + "lib-qqwry": "^1.3.2", "mysql": "^2.18.1", "query-string": "^7.1.1", "vue": "^3.2.33" diff --git a/public/assets/style.css b/public/assets/style.css index 63e6041..2de5160 100644 --- a/public/assets/style.css +++ b/public/assets/style.css @@ -124,7 +124,13 @@ header { #article-content video{ max-width: 100%; } +.comment-item{ + margin-top: 10px;background-color:#efefef;padding:20px 20px 10px;border-radius: 2px; +} +.comment-item:hover{ + background-color: #eaeaea; +} @media screen and (max-width: 500px) { header { padding: 0 20px; diff --git a/public/detail.html b/public/detail.html index ca18a91..42d4089 100644 --- a/public/detail.html +++ b/public/detail.html @@ -46,12 +46,11 @@
-
+
{{c.content}}
- 评论IP:{{c.ip}} - 评论时间:{{c.publish_time}} + 归属地:{{c.address || c.ip}} + 评论时间:{{c.publish_time}}