diff --git a/.env.sample b/.env.sample index c93af45..3806761 100644 --- a/.env.sample +++ b/.env.sample @@ -19,6 +19,7 @@ NEXT_PUBLIC_MAX_FILE_SIZE= MAX_LINKS_PER_USER= ARCHIVE_TAKE_COUNT= BROWSER_TIMEOUT= +IGNORE_UNAUTHORIZED_CA= # AWS S3 Settings SPACES_KEY= diff --git a/components/SettingsSidebar.tsx b/components/SettingsSidebar.tsx index 140057b..628226b 100644 --- a/components/SettingsSidebar.tsx +++ b/components/SettingsSidebar.tsx @@ -4,7 +4,7 @@ import { useRouter } from "next/router"; import React, { useEffect, useState } from "react"; export default function SettingsSidebar({ className }: { className?: string }) { - const LINKWARDEN_VERSION = "v2.4.6"; + const LINKWARDEN_VERSION = "v2.4.7"; const { collections } = useCollectionStore(); diff --git a/lib/api/validateUrlSize.ts b/lib/api/validateUrlSize.ts index 02b5bcc..eae0b43 100644 --- a/lib/api/validateUrlSize.ts +++ b/lib/api/validateUrlSize.ts @@ -1,6 +1,17 @@ +import fetch from "node-fetch"; +import https from "https"; + export default async function validateUrlSize(url: string) { try { - const response = await fetch(url, { method: "HEAD" }); + const httpsAgent = new https.Agent({ + rejectUnauthorized: + process.env.IGNORE_UNAUTHORIZED_CA === "true" ? false : true, + }); + + const response = await fetch(url, { + method: "HEAD", + agent: httpsAgent, + }); const totalSizeMB = Number(response.headers.get("content-length")) / Math.pow(1024, 2); diff --git a/lib/shared/getTitle.ts b/lib/shared/getTitle.ts index 704f7cd..4c2a5d0 100644 --- a/lib/shared/getTitle.ts +++ b/lib/shared/getTitle.ts @@ -1,6 +1,15 @@ +import fetch from "node-fetch"; +import https from "https"; export default async function getTitle(url: string) { try { - const response = await fetch(url); + const httpsAgent = new https.Agent({ + rejectUnauthorized: + process.env.IGNORE_UNAUTHORIZED_CA === "true" ? false : true, + }); + + const response = await fetch(url, { + agent: httpsAgent, + }); const text = await response.text(); // regular expression to find the tag diff --git a/package.json b/package.json index f157c16..7b6aaa2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "linkwarden", - "version": "2.4.6", + "version": "2.4.7", "main": "index.js", "repository": "https://github.com/linkwarden/linkwarden.git", "author": "Daniel31X13 <daniel31x13@gmail.com>", @@ -65,6 +65,7 @@ "@types/bcrypt": "^5.0.0", "@types/dompurify": "^3.0.4", "@types/jsdom": "^21.1.3", + "@types/node-fetch": "^2.6.10", "@types/shelljs": "^0.8.15", "autoprefixer": "^10.4.14", "daisyui": "^4.4.2", diff --git a/types/enviornment.d.ts b/types/enviornment.d.ts index ebb90c7..58d74c5 100644 --- a/types/enviornment.d.ts +++ b/types/enviornment.d.ts @@ -12,7 +12,7 @@ declare global { NEXT_PUBLIC_MAX_FILE_SIZE?: string; MAX_LINKS_PER_USER?: string; ARCHIVE_TAKE_COUNT?: string; - NEXT_PUBLIC_MAX_FILE_SIZE?: string; + IGNORE_UNAUTHORIZED_CA?: string; SPACES_KEY?: string; SPACES_SECRET?: string; diff --git a/yarn.lock b/yarn.lock index fa23572..a097607 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1795,6 +1795,14 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== +"@types/node-fetch@^2.6.10": + version "2.6.10" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.10.tgz#ff5c1ceacab782f2b7ce69957d38c1c27b0dc469" + integrity sha512-PPpPK6F9ALFTn59Ka3BaL+qGuipRfxNE8qVgkp0bVixeiR2c2/L+IVOiBdu9JhhT22sWnQEp6YyHGI2b2+CMcA== + dependencies: + "@types/node" "*" + form-data "^4.0.0" + "@types/node@*", "@types/node@>=8.1.0": version "20.4.4" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.4.tgz#c79c7cc22c9d0e97a7944954c9e663bcbd92b0cb" @@ -4751,6 +4759,11 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== +prettier@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.1.tgz#6ba9f23165d690b6cbdaa88cb0807278f7019848" + integrity sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw== + pretty-format@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-3.8.0.tgz#bfbed56d5e9a776645f4b1ff7aa1a3ac4fa3c385"