feat: add is-valid-ip-address (#1591)

This commit is contained in:
Himself65 2023-03-15 23:59:02 -05:00 committed by GitHub
parent 1a0abbf76e
commit 6ae06d5609
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 39 additions and 2 deletions

View File

@ -6,14 +6,21 @@ import {
} from '@affine/datacenter';
import { config } from '@affine/env';
import { isValidIPAddress } from '../utils/is-valid-ip-address';
let prefixUrl = '/';
if (typeof window === 'undefined') {
// SSR
if (config.serverAPI.startsWith('100')) {
const serverAPI = config.serverAPI;
if (isValidIPAddress(serverAPI)) {
// This is for Server side rendering support
prefixUrl = new URL('http://' + config.serverAPI + '/').origin;
} else {
console.warn('serverAPI is not a valid URL', config.serverAPI);
try {
new URL(serverAPI);
} catch (e) {
console.warn('serverAPI is not a valid URL', config.serverAPI);
}
}
} else {
const params = new URLSearchParams(window.location.search);

View File

@ -0,0 +1,25 @@
import { describe, expect, test } from 'vitest';
import { isValidIPAddress } from '../is-valid-ip-address';
describe('isValidIpAddress', () => {
test('should return true for valid IP address', () => {
['115.42.150.37', '192.168.0.1', '110.234.52.124'].forEach(ip => {
expect(isValidIPAddress(ip)).toBe(true);
});
});
test('should return false for invalid IP address', () => {
[
'210.110',
'255',
'y.y.y.y',
'255.0.0.y',
'666.10.10.20',
'4444.11.11.11',
'33.3333.33.3',
].forEach(ip => {
expect(isValidIPAddress(ip)).toBe(false);
});
});
});

View File

@ -0,0 +1,5 @@
export function isValidIPAddress(address: string) {
return /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(
address
);
}