fix: hide content of password-protected pages in searching and rss

This commit is contained in:
Trần Đức Nam 2025-02-06 21:52:10 +07:00
parent 142a08a6f8
commit 3623d0a047
No known key found for this signature in database
28 changed files with 37 additions and 6 deletions

View File

@ -94,6 +94,7 @@ export default {
wrongPassword: "خاطئة. يرجى إعادة إدخال كلمة المرور لفتح القفل:", wrongPassword: "خاطئة. يرجى إعادة إدخال كلمة المرور لفتح القفل:",
noPayload: "حمولة مشفرة.", noPayload: "حمولة مشفرة.",
decrypting: "جاري فك التشفير...", decrypting: "جاري فك التشفير...",
defaultDescription: "هذه صفحة مشفرة",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -90,6 +90,7 @@ export default {
wrongPassword: "Contrasenya incorrecta. Introduïu de nou la contrasenya per desbloquejar:", wrongPassword: "Contrasenya incorrecta. Introduïu de nou la contrasenya per desbloquejar:",
noPayload: "No hi ha càrrega útil xifrada.", noPayload: "No hi ha càrrega útil xifrada.",
decrypting: "Desxifrant...", decrypting: "Desxifrant...",
defaultDescription: "Aquesta és una pàgina xifrada",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -89,6 +89,7 @@ export default {
wrongPassword: "Nesprávné heslo. Zadejte heslo znovu pro odemknutí:", wrongPassword: "Nesprávné heslo. Zadejte heslo znovu pro odemknutí:",
noPayload: "Není žádné šifrované užitečné zatížení.", noPayload: "Není žádné šifrované užitečné zatížení.",
decrypting: "Dekódování...", decrypting: "Dekódování...",
defaultDescription: "Toto je šifrovaná stránka",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -91,6 +91,7 @@ export default {
"Falsches Passwort. Bitte geben Sie das Passwort erneut ein, um zu entsperren:", "Falsches Passwort. Bitte geben Sie das Passwort erneut ein, um zu entsperren:",
noPayload: "Keine verschlüsselte Nutzlast.", noPayload: "Keine verschlüsselte Nutzlast.",
decrypting: "Entschlüsseln...", decrypting: "Entschlüsseln...",
defaultDescription: "Dies ist eine verschlüsselte Seite",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -89,6 +89,7 @@ export interface Translation {
wrongPassword: string wrongPassword: string
noPayload: string noPayload: string
decrypting: string decrypting: string
defaultDescription: string
} }
} }
} }

View File

@ -89,6 +89,7 @@ export default {
wrongPassword: "Wrong password. Please re-enter passsword to unlock:", wrongPassword: "Wrong password. Please re-enter passsword to unlock:",
noPayload: "No encrypted payload.", noPayload: "No encrypted payload.",
decrypting: "Decrypting...", decrypting: "Decrypting...",
defaultDescription: "This is encrypted page",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -89,6 +89,7 @@ export default {
wrongPassword: "Wrong password. Please re-enter passsword to unlock:", wrongPassword: "Wrong password. Please re-enter passsword to unlock:",
noPayload: "No encrypted payload.", noPayload: "No encrypted payload.",
decrypting: "Decrypting...", decrypting: "Decrypting...",
defaultDescription: "This is encrypted page",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -90,6 +90,7 @@ export default {
wrongPassword: "Contraseña incorrecta. Vuelva a introducir la contraseña para desbloquear:", wrongPassword: "Contraseña incorrecta. Vuelva a introducir la contraseña para desbloquear:",
noPayload: "No hay ninguna carga útil cifrada.", noPayload: "No hay ninguna carga útil cifrada.",
decrypting: "Descifrando...", decrypting: "Descifrando...",
defaultDescription: "Esta es una página encriptada",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -90,6 +90,7 @@ export default {
wrongPassword: "رمز عبور اشتباه است. لطفا رمز عبور را دوباره وارد کنید تا قفل باز شود:", wrongPassword: "رمز عبور اشتباه است. لطفا رمز عبور را دوباره وارد کنید تا قفل باز شود:",
noPayload: "هیچ محموله رمزگذاری شده ای وجود ندارد.", noPayload: "هیچ محموله رمزگذاری شده ای وجود ندارد.",
decrypting: "در حال رمزگشایی...", decrypting: "در حال رمزگشایی...",
defaultDescription: "این صفحه رمزگذاری شده است",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -91,6 +91,7 @@ export default {
"Mot de passe incorrect. Veuillez saisir à nouveau le mot de passe pour déverrouiller :", "Mot de passe incorrect. Veuillez saisir à nouveau le mot de passe pour déverrouiller :",
noPayload: "Aucune charge utile cryptée.", noPayload: "Aucune charge utile cryptée.",
decrypting: "Décryptage en cours...", decrypting: "Décryptage en cours...",
defaultDescription: "Ceci est une page cryptée",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -88,6 +88,7 @@ export default {
wrongPassword: "Helytelen jelszó. Kérjük, adja meg újra a jelszót a feloldáshoz:", wrongPassword: "Helytelen jelszó. Kérjük, adja meg újra a jelszót a feloldáshoz:",
noPayload: "Nincs titkosított hasznos teher.", noPayload: "Nincs titkosított hasznos teher.",
decrypting: "Dekódolás...", decrypting: "Dekódolás...",
defaultDescription: "Ez egy titkosított oldal",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -90,6 +90,7 @@ export default {
wrongPassword: "Password errato. Si prega di reinserire la password per sbloccare:", wrongPassword: "Password errato. Si prega di reinserire la password per sbloccare:",
noPayload: "Nessun payload crittografato.", noPayload: "Nessun payload crittografato.",
decrypting: "Decifrazione in corso...", decrypting: "Decifrazione in corso...",
defaultDescription: "Questa è una pagina crittografata",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -89,6 +89,7 @@ export default {
"パスワードが間違っています。ロックを解除するにはパスワードを再度入力してください:", "パスワードが間違っています。ロックを解除するにはパスワードを再度入力してください:",
noPayload: "暗号化されたペイロードはありません。", noPayload: "暗号化されたペイロードはありません。",
decrypting: "解読中...", decrypting: "解読中...",
defaultDescription: "これは暗号化されたページです",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -87,6 +87,7 @@ export default {
wrongPassword: "비밀번호가 잘못되었습니다. 잠금을 해제하려면 암호를 다시 입력하십시오:", wrongPassword: "비밀번호가 잘못되었습니다. 잠금을 해제하려면 암호를 다시 입력하십시오:",
noPayload: "암호화된 페이로드가 없습니다.", noPayload: "암호화된 페이로드가 없습니다.",
decrypting: "해독 중...", decrypting: "해독 중...",
defaultDescription: "이 페이지는 암호화된 페이지입니다",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -110,6 +110,7 @@ export default {
wrongPassword: "Neteisingas slaptažodis. Norėdami atrakinti, iš naujo įveskite slaptažodį:", wrongPassword: "Neteisingas slaptažodis. Norėdami atrakinti, iš naujo įveskite slaptažodį:",
noPayload: "Nėra užšifruoto naudingojo krovinio.", noPayload: "Nėra užšifruoto naudingojo krovinio.",
decrypting: "Iššifruojama...", decrypting: "Iššifruojama...",
defaultDescription: "Tai yra šifruotas puslapis",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -93,6 +93,7 @@ export default {
"Verkeerd wachtwoord. Voer alstublieft uw wachtwoord opnieuw in om te ontgrendelen:", "Verkeerd wachtwoord. Voer alstublieft uw wachtwoord opnieuw in om te ontgrendelen:",
noPayload: "Geen versleutelde payload.", noPayload: "Geen versleutelde payload.",
decrypting: "Ontsleutelen..", decrypting: "Ontsleutelen..",
defaultDescription: "Dit is een gecodeerde pagina",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -89,6 +89,7 @@ export default {
wrongPassword: "Senha incorreta. Digite a senha novamente para desbloquear:", wrongPassword: "Senha incorreta. Digite a senha novamente para desbloquear:",
noPayload: "Nie ma zaszyfrowanego ładunku.", noPayload: "Nie ma zaszyfrowanego ładunku.",
decrypting: "Deszyfrowanie...", decrypting: "Deszyfrowanie...",
defaultDescription: "To jest zaszyfrowana strona",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -89,6 +89,7 @@ export default {
wrongPassword: "Parolă greșită. Vă rugăm să reintroduceți parola pentru a debloca:", wrongPassword: "Parolă greșită. Vă rugăm să reintroduceți parola pentru a debloca:",
noPayload: "Não há nenhuma carga útil criptografada.", noPayload: "Não há nenhuma carga útil criptografada.",
decrypting: "Descifrando...", decrypting: "Descifrando...",
defaultDescription: "Esta é uma página criptografada",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -91,6 +91,7 @@ export default {
wrongPassword: "Неправильний пароль. Будь ласка, введіть пароль ще раз, щоб розблокувати:", wrongPassword: "Неправильний пароль. Будь ласка, введіть пароль ще раз, щоб розблокувати:",
noPayload: "Nu există nicio sarcină utilă criptată.", noPayload: "Nu există nicio sarcină utilă criptată.",
decrypting: "Decriptare...", decrypting: "Decriptare...",
defaultDescription: "Aceasta este o pagină criptată",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -92,6 +92,7 @@ export default {
wrongPassword: "Неверный пароль. Пожалуйста, введите пароль еще раз для разблокировки:", wrongPassword: "Неверный пароль. Пожалуйста, введите пароль еще раз для разблокировки:",
noPayload: "Нет зашифрованной полезной нагрузки.", noPayload: "Нет зашифрованной полезной нагрузки.",
decrypting: "Расшифровка...", decrypting: "Расшифровка...",
defaultDescription: "Это зашифрованная страница",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -87,6 +87,7 @@ export default {
wrongPassword: "รหัสผ่านผิด กรุณากรอกรหัสผ่านอีกครั้งเพื่อปลดล็อค:", wrongPassword: "รหัสผ่านผิด กรุณากรอกรหัสผ่านอีกครั้งเพื่อปลดล็อค:",
noPayload: "ไม่มีเพย์โหลดที่เข้ารหัส", noPayload: "ไม่มีเพย์โหลดที่เข้ารหัส",
decrypting: "กำลังถอดรหัส...", decrypting: "กำลังถอดรหัส...",
defaultDescription: "หน้านี้เป็นหน้าเข้ารหัส",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -90,6 +90,7 @@ export default {
wrongPassword: "Yanlış şifre. Kilidi açmak için lütfen şifreyi tekrar girin:", wrongPassword: "Yanlış şifre. Kilidi açmak için lütfen şifreyi tekrar girin:",
noPayload: "Şifrelenmiş yük yok.", noPayload: "Şifrelenmiş yük yok.",
decrypting: "Şifre çözülüyor...", decrypting: "Şifre çözülüyor...",
defaultDescription: "Bu şifrelenmiş bir sayfadır",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -89,6 +89,7 @@ export default {
wrongPassword: "Неправильний пароль. Будь ласка, введіть пароль ще раз, щоб розблокувати:", wrongPassword: "Неправильний пароль. Будь ласка, введіть пароль ще раз, щоб розблокувати:",
noPayload: "Немає зашифрованого корисного навантаження.", noPayload: "Немає зашифрованого корисного навантаження.",
decrypting: "Розшифровка...", decrypting: "Розшифровка...",
defaultDescription: "Це зашифрована сторінка",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -89,6 +89,7 @@ export default {
wrongPassword: "Sai mật khẩu. Vui lòng điền lại mật khẩu để mở khóa:", wrongPassword: "Sai mật khẩu. Vui lòng điền lại mật khẩu để mở khóa:",
noPayload: "Không có nội dung được mã hóa.", noPayload: "Không có nội dung được mã hóa.",
decrypting: "Đang giải mã...", decrypting: "Đang giải mã...",
defaultDescription: "Trang này đã được mã hóa",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -87,6 +87,7 @@ export default {
wrongPassword: "密码错误。请重新输入密码解锁:", wrongPassword: "密码错误。请重新输入密码解锁:",
noPayload: "没有加密的有效负载。", noPayload: "没有加密的有效负载。",
decrypting: "解密中...", decrypting: "解密中...",
defaultDescription: "这是加密页面",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -87,6 +87,7 @@ export default {
wrongPassword: "密碼錯誤。請重新輸入密碼解鎖:", wrongPassword: "密碼錯誤。請重新輸入密碼解鎖:",
noPayload: "沒有加密的有效負載。", noPayload: "沒有加密的有效負載。",
decrypting: "解密中...", decrypting: "解密中...",
defaultDescription: "這是加密頁面",
}, },
}, },
} as const satisfies Translation } as const satisfies Translation

View File

@ -125,8 +125,9 @@ export const ContentIndex: QuartzEmitterPlugin<Partial<Options>> = (opts) => {
title: file.data.frontmatter?.title!, title: file.data.frontmatter?.title!,
links: file.data.links ?? [], links: file.data.links ?? [],
tags: file.data.frontmatter?.tags ?? [], tags: file.data.frontmatter?.tags ?? [],
content: file.data.text ?? "", content: file.data.text && !file.data.frontmatter?.password ? file.data.text : "",
richContent: opts?.rssFullHtml richContent:
opts?.rssFullHtml && !file.data.frontmatter?.password
? escapeHTML(toHtml(tree as Root, { allowDangerousHtml: true })) ? escapeHTML(toHtml(tree as Root, { allowDangerousHtml: true }))
: undefined, : undefined,
date: date, date: date,

View File

@ -2,6 +2,7 @@ import { Root as HTMLRoot } from "hast"
import { toString } from "hast-util-to-string" import { toString } from "hast-util-to-string"
import { QuartzTransformerPlugin } from "../types" import { QuartzTransformerPlugin } from "../types"
import { escapeHTML } from "../../util/escape" import { escapeHTML } from "../../util/escape"
import { i18n } from "../../i18n"
export interface Options { export interface Options {
descriptionLength: number descriptionLength: number
@ -22,7 +23,7 @@ export const Description: QuartzTransformerPlugin<Partial<Options>> = (userOpts)
const opts = { ...defaultOptions, ...userOpts } const opts = { ...defaultOptions, ...userOpts }
return { return {
name: "Description", name: "Description",
htmlPlugins() { htmlPlugins(ctx) {
return [ return [
() => { () => {
return async (tree: HTMLRoot, file) => { return async (tree: HTMLRoot, file) => {
@ -37,7 +38,10 @@ export const Description: QuartzTransformerPlugin<Partial<Options>> = (userOpts)
text = text.replace(urlRegex, "$<domain>" + "$<path>") text = text.replace(urlRegex, "$<domain>" + "$<path>")
} }
const desc = frontMatterDescription ?? text const desc =
(frontMatterDescription ?? file.data.frontmatter?.password)
? i18n(ctx.cfg.configuration.locale).pages.encryptedContent.defaultDescription
: text
const sentences = desc.replace(/\s+/g, " ").split(/\.\s/) const sentences = desc.replace(/\s+/g, " ").split(/\.\s/)
const finalDesc: string[] = [] const finalDesc: string[] = []
const len = opts.descriptionLength const len = opts.descriptionLength