From 8d39e2833ce29f332a4cf42ba6491f74cd3f6ef0 Mon Sep 17 00:00:00 2001 From: alikia2x Date: Sat, 13 Jul 2024 18:08:31 +0800 Subject: [PATCH] fix: better detect for IP addresses, add test --- bun.lockb | Bin 290879 -> 376778 bytes i18n/en.json | 5 +-- lib/url/validLink.ts | 65 +++++++++++++++++++++++++++++++++++--- package.json | 3 +- pages/[...].tsx | 17 ++++++++++ test/validLink.test.ts | 70 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 152 insertions(+), 8 deletions(-) create mode 100644 pages/[...].tsx create mode 100644 test/validLink.test.ts diff --git a/bun.lockb b/bun.lockb index caaa0dae7a519f6b5f9cb2f5accf7dfa71677ded..b9b88685a1ceb728836a874e9a61375dbf6b4a91 100755 GIT binary patch delta 110391 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 Xo2gY%R`oV$FH15-<(Ek|g=qf|YJ+Y< delta 55082 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 I1JqOdZ_7ZcP5=M^ diff --git a/i18n/en.json b/i18n/en.json index b91b234..a9fdd73 100755 --- a/i18n/en.json +++ b/i18n/en.json @@ -13,8 +13,9 @@ }, "search-help-text": "Search {engine}" }, - "404": { - "title": "Page Not Found" + "notfound": { + "title": "page not found", + "desc": "Please check if there is a typo in the URL.
If SparkHome brought you to this page,
please contact us." }, "about": { "title": "SparkHome" diff --git a/lib/url/validLink.ts b/lib/url/validLink.ts index 04026eb..5489f6e 100644 --- a/lib/url/validLink.ts +++ b/lib/url/validLink.ts @@ -1,22 +1,26 @@ -import punycode from "punycode/"; +import punycode from "punycode"; import { tldList } from "./tldList"; export default function validLink(link: string) { - let finalURL = ''; + let finalURL; try { const url = new URL(link); - finalURL = url.origin; + finalURL = url; return true; } catch (error) { // if the URL is invalid, try to add the protocol try { const urlWithHTTP = new URL("http://" + link); - finalURL = urlWithHTTP.origin; + finalURL = urlWithHTTP; } catch (error) { return false; } } - if (validTLD(finalURL)) { + if ( + validTLD(finalURL.host) || + isValidIPv6(finalURL.host.slice(1, finalURL.host.length - 1)) || + isValidIPv4(finalURL.host) + ) { return true; } else { return false; @@ -31,3 +35,54 @@ export function validTLD(domain: string): boolean { return false; } } + +export function isValidIPv6(ip: string): boolean { + const length = ip.length; + let groups = 1; + let groupDigits = 0; + let doubleColonCount = 0; + for (let i = 0; i < length; i++) { + const char = ip[i]; + if ("0" <= char && char <= "9") { + groupDigits++; + } else if ("a" <= char && char <= "f") { + groupDigits++; + } else if ("A" <= char && char <= "F") { + groupDigits++; + } else if (char === ":" && i + 1 < length && ip[i + 1] !== ":") { + groups++; + groupDigits = 0; + } else if (char === ":" && i + 1 < length && ip[i + 1] === ":") { + doubleColonCount++; + i++; + groupDigits = 0; + } else { + return false; + } + if (groups > 8) { + return false; + } else if (groupDigits > 4) { + return false; + } else if (doubleColonCount > 1) { + return false; + } + } + if (doubleColonCount === 0 && groups !== 8) { + return false; + } + return true; +} + +export function isValidIPv4(ip: string): boolean { + const parts = ip.split("."); + if (parts.length !== 4) { + return false; + } + for (const part of parts) { + const num = Number(part); + if (isNaN(num) || num < 0 || num > 255 || !part.match(/^\d+$/)) { + return false; + } + } + return true; +} diff --git a/package.json b/package.json index cd8479c..6061e1a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sparkhome", "private": false, - "version": "5.2.1", + "version": "5.2.2", "type": "module", "scripts": { "dev": "bun server.ts", @@ -21,6 +21,7 @@ "i18next": "^23.11.5", "i18next-browser-languagedetector": "^8.0.0", "i18next-icu": "^2.3.0", + "jest": "^29.7.0", "jotai": "^2.8.3", "node-nlp": "^4.27.0", "react": "^18.3.1", diff --git a/pages/[...].tsx b/pages/[...].tsx new file mode 100644 index 0000000..13233a7 --- /dev/null +++ b/pages/[...].tsx @@ -0,0 +1,17 @@ +import { useTranslation } from "react-i18next"; + +export default function NotFound() { + const { t } = useTranslation(); + return ( +
+
+

404

+
+
+
{t("notfound.title")}
+
+
+
+
+ ); +} diff --git a/test/validLink.test.ts b/test/validLink.test.ts new file mode 100644 index 0000000..49ee01f --- /dev/null +++ b/test/validLink.test.ts @@ -0,0 +1,70 @@ +import { describe, expect, test } from "@jest/globals"; +import validLink, { validTLD } from "../lib/url/validLink"; + +describe("Check if a string is an accessible domain/URL/IP", () => { + test("Plain, full URL", () => { + // Plain form + expect(validLink("http://example.com")).toBe(true); + // With https and path + expect(validLink("https://jestjs.io/docs/getting-started/")).toBe(true); + // With anchor + expect(validLink("https://difftastic.wilfred.me.uk/zh-CN/git.html#git-difftool")).toBe(true); + // With params + expect(validLink("https://www.bilibili.com/list/ml2252204359?oid=990610203&bvid=BV1sx4y1g7Hh")).toBe(true); + }); + test("Punycode URL", () => { + expect(validLink("https://原神大学.com/")).toBe(true); + expect(validLink("中国原神大学.com")).toBe(true); + }); + test("Invalid TLD with protocol", () => { + expect(validLink("https://www.example.notexist")).toBe(true); + }); + test("Invalid TLD with no protocol", () => { + expect(validLink("www.example.notexist")).toBe(false); + }); + test("IPv4 without protocol", () => { + expect(validLink("127.0.0.1")).toBe(true); + }); + test("IPv6 without protocol", () => { + expect(validLink("[::]")).toBe(true); + }); +}); + +// Reference: https://www.iana.org/domains/root/db +describe("Check if the given TLD exist and assigned.", () => { + test("Valid normal TLD", () => { + expect(validTLD("com")).toBe(true); + expect(validTLD("top")).toBe(true); + expect(validTLD("net")).toBe(true); + expect(validTLD("org")).toBe(true); + }); + test("Valid new TLDs", () => { + // they really exist! + expect(validTLD("foo")).toBe(true); + expect(validTLD("bar")).toBe(true); + }); + test("Exist but not assigned TLD", () => { + expect(validTLD("active")).toBe(false); + expect(validTLD("off")).toBe(false); + }); + test("with dot", () => { + expect(validTLD(".com")).toBe(true); + expect(validTLD(".us")).toBe(true); + expect(validTLD(".cn")).toBe(true); + expect(validTLD(".io")).toBe(true); + }); + test("Punycode TLDs", () => { + expect(validTLD(".中国")).toBe(true); + expect(validTLD(".РФ")).toBe(true); + expect(validTLD(".कॉम")).toBe(true); + expect(validTLD("ایران")).toBe(true); + expect(validTLD("இலங்கை")).toBe(true); + expect(validTLD("გე")).toBe(true); + expect(validTLD("ポイント")).toBe(true); + }); + test("Punycode TLDs but not assigned", () => { + expect(validTLD("テスト")).toBe(false); + expect(validTLD("परीक्षा")).toBe(false); + expect(validTLD("测试")).toBe(false); + }); +});