mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
test: mock client ip
This commit is contained in:
@@ -5,6 +5,8 @@ import type { serve } from '@hono/node-server';
|
||||
|
||||
let server: ReturnType<typeof serve>;
|
||||
|
||||
process.env.NODE_NAME = 'mock';
|
||||
|
||||
function checkBlock(response) {
|
||||
expect(response.status).toBe(403);
|
||||
expect(response.text).toMatch(/Access denied\./);
|
||||
@@ -30,7 +32,7 @@ describe('access-control', () => {
|
||||
const response11 = await request.get('/test/1');
|
||||
checkBlock(response11);
|
||||
|
||||
const response12 = await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233');
|
||||
const response12 = await request.get('/test/1').set('X-Mock-IP', '233.233.233.233');
|
||||
checkBlock(response12);
|
||||
|
||||
const response13 = await request.get('/test/1').set('user-agent', 'blackua');
|
||||
@@ -39,7 +41,7 @@ describe('access-control', () => {
|
||||
const response21 = await request.get('/test/2');
|
||||
expect(response21.status).toBe(200);
|
||||
|
||||
const response22 = await request.get('/test/2').set('X-Forwarded-For', '233.233.233.233');
|
||||
const response22 = await request.get('/test/2').set('X-Mock-IP', '233.233.233.233');
|
||||
checkBlock(response22);
|
||||
|
||||
const response23 = await request.get('/test/2').set('user-agent', 'blackua');
|
||||
@@ -53,17 +55,17 @@ describe('access-control', () => {
|
||||
expect(response312.status).toBe(200);
|
||||
|
||||
// wrong key/code, on denylist
|
||||
const response321 = await request.get(`/test/2?key=wrong+${key}`).set('X-Forwarded-For', '233.233.233.233');
|
||||
const response321 = await request.get(`/test/2?key=wrong+${key}`).set('X-Mock-IP', '233.233.233.233');
|
||||
checkBlock(response321);
|
||||
|
||||
const response322 = await request.get(`/test/2?code=wrong+${code}`).set('X-Forwarded-For', '233.233.233.233');
|
||||
const response322 = await request.get(`/test/2?code=wrong+${code}`).set('X-Mock-IP', '233.233.233.233');
|
||||
checkBlock(response322);
|
||||
|
||||
// right key/code, on denylist
|
||||
const response331 = await request.get(`/test/2?key=${key}`).set('X-Forwarded-For', '233.233.233.233');
|
||||
const response331 = await request.get(`/test/2?key=${key}`).set('X-Mock-IP', '233.233.233.233');
|
||||
expect(response331.status).toBe(200);
|
||||
|
||||
const response332 = await request.get(`/test/2?code=${code}`).set('X-Forwarded-For', '233.233.233.233');
|
||||
const response332 = await request.get(`/test/2?code=${code}`).set('X-Mock-IP', '233.233.233.233');
|
||||
expect(response332.status).toBe(200);
|
||||
});
|
||||
|
||||
@@ -84,7 +86,7 @@ describe('access-control', () => {
|
||||
const response11 = await request.get('/test/1');
|
||||
expect(response11.status).toBe(200);
|
||||
|
||||
const response12 = await request.get('/test/1').set('X-Forwarded-For', '233.233.233.233');
|
||||
const response12 = await request.get('/test/1').set('X-Mock-IP', '233.233.233.233');
|
||||
expect(response12.status).toBe(200);
|
||||
|
||||
const response13 = await request.get('/test/1').set('user-agent', 'whiteua');
|
||||
@@ -93,16 +95,16 @@ describe('access-control', () => {
|
||||
const response21 = await request.get('/test/2');
|
||||
checkBlock(response21);
|
||||
|
||||
const response22 = await request.get('/test/2').set('X-Forwarded-For', '233.233.233.233');
|
||||
const response22 = await request.get('/test/2').set('X-Mock-IP', '233.233.233.233');
|
||||
expect(response22.status).toBe(200);
|
||||
|
||||
const response221 = await request.get('/test/2').set('X-Forwarded-For', '103.31.4.0');
|
||||
const response221 = await request.get('/test/2').set('X-Mock-IP', '103.31.4.0');
|
||||
expect(response221.status).toBe(200);
|
||||
|
||||
const response222 = await request.get('/test/2').set('X-Forwarded-For', '103.31.7.255');
|
||||
const response222 = await request.get('/test/2').set('X-Mock-IP', '103.31.7.255');
|
||||
expect(response222.status).toBe(200);
|
||||
|
||||
const response223 = await request.get('/test/2').set('X-Forwarded-For', '103.31.8.0');
|
||||
const response223 = await request.get('/test/2').set('X-Mock-IP', '103.31.8.0');
|
||||
checkBlock(response223);
|
||||
|
||||
const response23 = await request.get('/test/2').set('user-agent', 'whiteua');
|
||||
@@ -116,10 +118,10 @@ describe('access-control', () => {
|
||||
checkBlock(response312);
|
||||
|
||||
// wrong key/code, on allowlist
|
||||
const response321 = await request.get(`/test/2?code=wrong+${code}`).set('X-Forwarded-For', '233.233.233.233');
|
||||
const response321 = await request.get(`/test/2?code=wrong+${code}`).set('X-Mock-IP', '233.233.233.233');
|
||||
expect(response321.status).toBe(200);
|
||||
|
||||
const response322 = await request.get(`/test/2?key=wrong+${key}`).set('X-Forwarded-For', '233.233.233.233');
|
||||
const response322 = await request.get(`/test/2?key=wrong+${key}`).set('X-Mock-IP', '233.233.233.233');
|
||||
expect(response322.status).toBe(200);
|
||||
|
||||
// right key/code
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Context } from 'hono';
|
||||
import { Ipware } from '@fullerstack/nax-ipware';
|
||||
import { config } from '@/config';
|
||||
|
||||
const ipware = new Ipware();
|
||||
|
||||
@@ -11,4 +12,4 @@ export const getRouteNameFromPath = (path: string) => {
|
||||
return null;
|
||||
};
|
||||
|
||||
export const getIp = (ctx: Context) => ipware.getClientIP(ctx.req.raw)?.ip;
|
||||
export const getIp = (ctx: Context) => (config.nodeName === 'mock' && ctx.req.header('X-Mock-IP') ? ctx.req.header('X-Mock-IP') : ipware.getClientIP(ctx.req.raw)?.ip);
|
||||
|
||||
Reference in New Issue
Block a user