Optional Domain mit Port und ohne für Sharelinks
This commit is contained in:
@@ -34,7 +34,7 @@ const TASK_POLL = 1500;
|
||||
export class PaperlessError extends Error {}
|
||||
|
||||
export class PaperlessClient {
|
||||
constructor(baseUrl, token) {
|
||||
constructor(baseUrl, token, shareBaseUrl = "") {
|
||||
let parsed;
|
||||
try {
|
||||
parsed = new URL(String(baseUrl || "").trim());
|
||||
@@ -48,6 +48,13 @@ export class PaperlessClient {
|
||||
}
|
||||
this.base = String(baseUrl).trim().replace(/\/+$/, "");
|
||||
this.token = String(token || "").trim();
|
||||
|
||||
// Adresse für Freigabelinks. Paperless liefert nur den Slug, die
|
||||
// vollständige Adresse wird hier zusammengesetzt. Führt der interne
|
||||
// Zugang über einen abweichenden Port, wäre ein daraus gebauter Link
|
||||
// für den Empfänger wertlos - deshalb getrennt konfigurierbar.
|
||||
this.shareBase = String(shareBaseUrl || "").trim().replace(/\/+$/, "")
|
||||
|| this.base;
|
||||
}
|
||||
|
||||
get origin() {
|
||||
@@ -313,7 +320,7 @@ export class PaperlessClient {
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify(payload)
|
||||
});
|
||||
if (res?.slug) return `${this.base}/share/${res.slug}`;
|
||||
if (res?.slug) return `${this.shareBase}/share/${res.slug}`;
|
||||
return null;
|
||||
} catch (err) {
|
||||
last = err;
|
||||
|
||||
@@ -10,9 +10,23 @@
|
||||
const VORGABEN = {
|
||||
baseUrl: "",
|
||||
token: "",
|
||||
// Adresse, unter der das Archiv von aussen erreichbar ist.
|
||||
//
|
||||
// Wird nur für Freigabelinks verwendet. Paperless liefert in der
|
||||
// Antwort lediglich den Slug; die vollständige Adresse setzt die
|
||||
// Erweiterung zusammen. Führt der interne Zugang über einen
|
||||
// abweichenden Port oder einen anderen Namen, wäre ein daraus gebauter
|
||||
// Link für den Empfänger wertlos.
|
||||
//
|
||||
// Leer = baseUrl verwenden.
|
||||
shareBaseUrl: "",
|
||||
versionLabel: "Thunderbird {datum}",
|
||||
shareDays: 7,
|
||||
shareTag: "Sharelink",
|
||||
// Beschriftung der eingefügten Linkblöcke. Leer lassen für keine
|
||||
// Nummerierung ist nicht vorgesehen - eine Nummer hilft beim Bezugnehmen
|
||||
// im Fließtext ("siehe Datei 2").
|
||||
linkBezeichner: "",
|
||||
// Anhänge, die üblicherweise keine Dokumente sind. Sie werden im
|
||||
// Auswahldialog vorab abgewählt, lassen sich aber anhaken.
|
||||
ignorierteTypen: ["image/gif", "image/png", "image/jpeg", "text/vcard",
|
||||
@@ -34,6 +48,21 @@ export function vollstaendig(s) {
|
||||
return Boolean(s?.baseUrl) && Boolean(s?.token);
|
||||
}
|
||||
|
||||
/**
|
||||
* Zugriffsmuster für browser.permissions aus einer Basisadresse.
|
||||
*
|
||||
* WICHTIG: Muster dürfen KEINEN Port enthalten. "https://rechner:8443/*"
|
||||
* ist ungültig, und permissions.request wirft dann eine Ausnahme mit
|
||||
* einer Meldung, die nichts über die Ursache verrät.
|
||||
*
|
||||
* Ein Zugriffsrecht gilt ohnehin für alle Ports desselben Rechners - die
|
||||
* Einschränkung kostet also nichts.
|
||||
*/
|
||||
export function zugriffsmuster(baseUrl) {
|
||||
const u = new URL(String(baseUrl).trim());
|
||||
return `${u.protocol}//${u.hostname}/*`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Beliebige Zeichenkette in einen unbedenklichen Dateinamen überführen.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user