This commit is contained in:
2025-06-13 20:46:10 +08:00
parent a3e6a6d8b8
commit 898b816655
52 changed files with 2250 additions and 3785 deletions
@@ -41,17 +41,14 @@ let obj = {
isReservedOrLocalIP(ip) {
if (ip.includes('.')) {
const parts = ip.split('.').map(Number);
// 格式验证
if (parts.length !== 4 || parts.some(n => n < 0 || n > 255)) return false;
// 1. 局域网地址(私有地址)
if (
parts[0] === 10 || // 10.0.0.0/8 [1,2,4](@ref)
(parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31) || // 172.16.0.0/12 [1,2,4](@ref)
(parts[0] === 192 && parts[1] === 168) // 192.168.0.0/16 [1,2,4](@ref)
parts[0] === 10 ||
(parts[0] === 172 && parts[1] >= 16 && parts[1] <= 31) ||
(parts[0] === 192 && parts[1] === 168)
) return true;
// 2. 保留地址
return (
parts[0] === 127 ||
(parts[0] === 169 && parts[1] === 254) ||
@@ -61,15 +58,12 @@ let obj = {
);
}
// ------------------------- IPv6 处理逻辑 -------------------------
// IPv6 处理逻辑
if (ip.includes(':')) {
// 规范化IPv6(展开缩写)
const normalized = ip.replace(/(^:|:$)/g, '::').replace(/::/g, ':0:').split(':')
.map(seg => seg.padStart(4, '0')).join(':').padStart(39, '0:');
if (normalized.startsWith('fc00:') || normalized.startsWith('fd00:')) return true;
// 2. 保留地址
return (
normalized === '0000:0000:0000:0000:0000:0000:0000:0001' ||
normalized.startsWith('fe80:') ||
@@ -142,7 +136,28 @@ module.exports = {
_before: function () { // 通用预处理器
},
async getIP(query) {
try {
let { uid } = query;
let res = await db.collection("uni-id-users")
.doc(uid)
.field({
_id: 1,
last_login_ip: 1
})
.get();
console.log(res.data[0]);
return {
code: 200,
data: res.data[0]
}
} catch(e) {
return {
code: 500,
msg: e.message
}
}
},
async get_user_info(query) {
try {
let uid = query.uid;