Skip to content

Commit 384fc71

Browse files
committed
chore: coderabbit feedback
1 parent 6981b77 commit 384fc71

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

web/components/UpdateOs/ChangelogModal.vue

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import type { ComposerTranslation } from 'vue-i18n';
1616
import RawChangelogRenderer from '~/components/UpdateOs/RawChangelogRenderer.vue';
1717
import { usePurchaseStore } from '~/store/purchase';
1818
import { useUpdateOsStore } from '~/store/updateOs';
19+
import { allowedDocsOriginRegex, allowedDocsUrlRegex } from '~/helpers/urls';
1920
2021
export interface Props {
2122
open?: boolean;
@@ -54,14 +55,19 @@ const handleIframeNavigationMessage = (event: MessageEvent) => {
5455
event.data.type === 'unraid-docs-navigation' &&
5556
iframeRef.value &&
5657
event.source === iframeRef.value.contentWindow &&
57-
event.origin === 'https://docs.unraid.net'
58+
allowedDocsOriginRegex.test(event.origin)
5859
) {
59-
if (event.data.url !== docsChangelogUrl.value) {
60-
hasNavigated.value = true;
61-
} else {
62-
hasNavigated.value = false;
60+
if (
61+
typeof event.data.url === 'string' &&
62+
allowedDocsUrlRegex.test(event.data.url)
63+
) {
64+
if (event.data.url !== docsChangelogUrl.value) {
65+
hasNavigated.value = true;
66+
} else {
67+
hasNavigated.value = false;
68+
}
69+
currentIframeUrl.value = event.data.url;
6370
}
64-
currentIframeUrl.value = event.data.url;
6571
}
6672
};
6773

web/components/UpdateOs/RawChangelogRenderer.vue

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,11 @@ const fetchAndParseChangelog = async () => {
2929
parseChangelogFailed.value = "";
3030
try {
3131
// Fetch the changelog content from the URL
32-
const data = await fetch(props.changelog).then(r => r.text());
32+
const res = await fetch(props.changelog);
33+
if (!res.ok) {
34+
throw new Error(`HTTP ${res.status} while fetching changelog`);
35+
}
36+
const data = await res.text();
3337
if (!data || data.trim() === "") {
3438
parseChangelogFailed.value = 'Changelog is empty';
3539
isLoading.value = false;

web/helpers/urls.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ const DOCS_REGISTRATION_REPLACE_KEY = new URL('/go/changing-the-flash-device/',
4040

4141
const SUPPORT = new URL('https://unraid.net');
4242

43+
export const allowedDocsOriginRegex = /^https:\/\/(?:[\w-]+\.)*docs\.unraid\.net(?::\d+)?$/;
44+
export const allowedDocsUrlRegex = /^https:\/\/(?:[\w-]+\.)*docs\.unraid\.net(?::\d+)?\//;
45+
4346
export {
4447
ACCOUNT,
4548
ACCOUNT_CALLBACK,

0 commit comments

Comments
 (0)