chengjie месяцев назад: 7
Родитель
Сommit
92cc5ab00a
1 измененных файлов с 29 добавлено и 4 удалено
  1. 29 4
      src/api/web/webController.js

+ 29 - 4
src/api/web/webController.js

@@ -188,10 +188,22 @@ export async function Kylx365DBAdmin(ctx) {
188 188
     const clientIP = ctx.ip || ctx.request.ip || 
189 189
                 (ctx.request.headers['x-forwarded-for'] || '').split(',')[0] || 
190 190
                 ctx.request.socket.remoteAddress;
191
+
192
+    // 处理IPv6格式的IP地址
193
+    if (clientIP) {
194
+        // 处理IPv4映射的IPv6地址 (::ffff:127.0.0.1 格式)
195
+        if (clientIP.startsWith('::ffff:')) {
196
+            clientIP = clientIP.substring(7); // 移除 ::ffff: 前缀
197
+        }
198
+        // 如果是IPv6的本地回环地址 (::1),转换为IPv4的本地回环地址
199
+        else if (clientIP === '::1') {
200
+            clientIP = '127.0.0.1';
201
+        }
202
+    }
191 203
     console.log("clientIP:"+clientIP);
192 204
     let data = "";
193 205
     
194
-    if (clientIP === allowedIP || clientIP=="::1") {
206
+    if (clientIP === allowedIP || clientIP=="127.0.0.1") {
195 207
         data = await fsPromises.readFile("./public/mg/kylx365_db_admin.html");
196 208
     } else {
197 209
         data = "There is an error in accessing the web page.";
@@ -227,9 +239,22 @@ export async function RunKylx365DBSql(ctx) {
227 239
     };
228 240
     
229 241
     // 获取客户端IP地址
230
-    const clientIP = ctx.ip || ctx.request.ip || 
231
-                    (ctx.request.headers['x-forwarded-for'] || '').split(',')[0] || 
232
-                    ctx.request.socket.remoteAddress;
242
+    let clientIP = ctx.ip || ctx.request.ip || 
243
+                  (ctx.request.headers['x-forwarded-for'] || '').split(',')[0] || 
244
+                  ctx.request.socket.remoteAddress;
245
+    
246
+    // 处理IPv6格式的IP地址
247
+    if (clientIP) {
248
+        // 处理IPv4映射的IPv6地址 (::ffff:127.0.0.1 格式)
249
+        if (clientIP.startsWith('::ffff:')) {
250
+            clientIP = clientIP.substring(7); // 移除 ::ffff: 前缀
251
+        }
252
+        // 如果是IPv6的本地回环地址 (::1),转换为IPv4的本地回环地址
253
+        else if (clientIP === '::1') {
254
+            clientIP = '127.0.0.1';
255
+        }
256
+    }
257
+    
233 258
     console.log("客户端IP: " + clientIP);
234 259
     console.log(param.SQL);
235 260
     // 获取第一个分号前的SQL语句