@czlonkowski/n8n-nodes-librus 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +10 -0
- package/dist/credentials/LibrusSessionApi.credentials.js +9 -0
- package/dist/credentials/LibrusSessionApi.credentials.js.map +1 -1
- package/dist/nodes/Librus/Librus.node.js +10 -2
- package/dist/nodes/Librus/Librus.node.js.map +1 -1
- package/dist/nodes/Librus/LibrusClient.d.ts +15 -1
- package/dist/nodes/Librus/LibrusClient.js +129 -85
- package/dist/nodes/Librus/LibrusClient.js.map +1 -1
- package/dist/nodes/Librus/LibrusTrigger.node.js +8 -1
- package/dist/nodes/Librus/LibrusTrigger.node.js.map +1 -1
- package/dist/nodes/Librus/errors.js +1 -0
- package/dist/nodes/Librus/errors.js.map +1 -1
- package/dist/nodes/Librus/proxy.d.ts +11 -0
- package/dist/nodes/Librus/proxy.js +55 -0
- package/dist/nodes/Librus/proxy.js.map +1 -0
- package/dist/nodes/Librus/sessionCache.d.ts +25 -0
- package/dist/nodes/Librus/sessionCache.js +57 -0
- package/dist/nodes/Librus/sessionCache.js.map +1 -0
- package/dist/nodes/Librus/transport.d.ts +3 -2
- package/dist/nodes/Librus/transport.js +5 -2
- package/dist/nodes/Librus/transport.js.map +1 -1
- package/docs/architecture.md +18 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.4.0 — 2026-09-24
|
|
4
|
+
|
|
5
|
+
- Add an optional Proxy field to the Librus credential. All Librus traffic, the connection test included, goes through the given HTTP or HTTPS proxy using n8n's own request helper, which tunnels HTTPS with CONNECT. This helps when Librus does not accept connections from the n8n server's address.
|
|
6
|
+
- Reject an unsupported or malformed proxy address with PROXY_INVALID before any request, because n8n silently falls back to a direct connection for a proxy address it does not support. The error never echoes the address, which may hold a password.
|
|
7
|
+
- Keep sessions made through different proxies apart, and mark transport errors through a proxy with "przez proxy" without revealing the proxy.
|
|
8
|
+
|
|
9
|
+
## 0.3.0 — 2026-09-24
|
|
10
|
+
|
|
11
|
+
- Reuse one logged-in Librus session across polls, triggers and Get Content items on the same account instead of logging in from scratch on every operation, which made three triggers perform at least 72 logins a day. Sessions live in process memory only, keyed by a hash of login and password, and are never written to workflow static data, credentials or output.
|
|
12
|
+
- Run operations on one account one at a time, so triggers never log in concurrently or replace each other's cookies mid-request.
|
|
13
|
+
- Detect a stored session that Librus has ended on first use and log in again once; on a reused session a page instead of JSON or a bare 403 also counts as expired. Any failure drops the stored session, and sessions older than 6 hours are replaced.
|
|
14
|
+
- Log the session lifecycle (new login and its reason, reuse with the session's age, expiry after N minutes) to the n8n log at info level, without credentials, cookies or content, so the real session lifetime can be measured.
|
|
15
|
+
- Name the cause and host in TRANSPORT_ERROR, e.g. ETIMEDOUT on synergia.librus.pl, instead of discarding it; only system-style error codes are copied.
|
|
16
|
+
- Give the message operations a fresh request budget for their retry after a session expiry, as the calendar operation already had.
|
|
17
|
+
|
|
3
18
|
## 0.2.0 — 2026-09-12
|
|
4
19
|
|
|
5
20
|
- Add two calendar events, Nowe wydarzenie w terminarzu and Zmiana wydarzenia w terminarzu, to the shared Librus Trigger node; removals and cancellations are reported on the change event, not a separate one.
|
package/README.md
CHANGED
|
@@ -29,6 +29,16 @@ Zapisz dane i sprawdź połączenie. Jeśli pojawi się `ACTION_REQUIRED`, zalog
|
|
|
29
29
|
|
|
30
30
|
Dane logowania są przechowywane jako credentials w n8n. Węzeł nie zwraca hasła ani ciasteczek sesji w wynikach.
|
|
31
31
|
|
|
32
|
+
### Proxy
|
|
33
|
+
|
|
34
|
+
Librus może nie przyjmować połączeń z adresów centrów danych. Wtedy każde zapytanie kończy się błędem `TRANSPORT_ERROR` z przyczyną w rodzaju `ETIMEDOUT`, choć z domowego komputera Librus działa. W takim przypadku wpisz w danych uwierzytelniających pole **Proxy**, np. `http://użytkownik:hasło@proxy.example.pl:3128`. Cały ruch do Librusa, również test połączenia, pójdzie wtedy przez to proxy.
|
|
35
|
+
|
|
36
|
+
- Obsługiwane są proxy HTTP i HTTPS (`http://` lub `https://`) z tunelowaniem CONNECT. Proxy SOCKS nie jest obsługiwane.
|
|
37
|
+
- Nieprawidłowy adres zatrzymuje węzeł błędem `PROXY_INVALID`, zanim wyśle jakiekolwiek zapytanie. Węzeł nie połączy się wtedy po cichu bezpośrednio.
|
|
38
|
+
- Znaki specjalne w użytkowniku i haśle zakoduj procentowo (np. `@` jako `%40`).
|
|
39
|
+
- Błąd połączenia przez proxy ma dopisek `przez proxy`. Adres proxy nie pojawia się w komunikatach ani logach węzła.
|
|
40
|
+
- Po zmianie proxy węzeł loguje się ponownie.
|
|
41
|
+
|
|
32
42
|
## Pobieranie wiadomości
|
|
33
43
|
|
|
34
44
|
W węźle **Librus** wybierz **Wiadomość → Pobierz wiadomości**.
|
|
@@ -25,6 +25,15 @@ class LibrusSessionApi {
|
|
|
25
25
|
default: '',
|
|
26
26
|
required: true,
|
|
27
27
|
},
|
|
28
|
+
{
|
|
29
|
+
displayName: 'Proxy',
|
|
30
|
+
name: 'proxyUrl',
|
|
31
|
+
type: 'string',
|
|
32
|
+
typeOptions: { password: true },
|
|
33
|
+
default: '',
|
|
34
|
+
placeholder: 'http://użytkownik:hasło@proxy.example.pl:3128',
|
|
35
|
+
description: 'Opcjonalny serwer proxy HTTP lub HTTPS, przez który idzie cały ruch do Librusa, np. gdy Librus nie przyjmuje połączeń z adresu serwera n8n. Zostaw puste, aby łączyć się bezpośrednio.',
|
|
36
|
+
},
|
|
28
37
|
];
|
|
29
38
|
}
|
|
30
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibrusSessionApi.credentials.js","sourceRoot":"","sources":["../../credentials/LibrusSessionApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAA7B;QACC,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,yBAAyB,CAAC;QACxC,qBAAgB,GAAG,iDAAiD,CAAC;QACrE,SAAI,GAAG,iCAA0C,CAAC;QAClD,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACV,iGAAiG;aAClG;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;SACD,CAAC;IACH,CAAC;CAAA;
|
|
1
|
+
{"version":3,"file":"LibrusSessionApi.credentials.js","sourceRoot":"","sources":["../../credentials/LibrusSessionApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAA7B;QACC,SAAI,GAAG,kBAAkB,CAAC;QAC1B,gBAAW,GAAG,yBAAyB,CAAC;QACxC,qBAAgB,GAAG,iDAAiD,CAAC;QACrE,SAAI,GAAG,iCAA0C,CAAC;QAClD,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACV,iGAAiG;aAClG;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,+CAA+C;gBAC5D,WAAW,EACV,wLAAwL;aACzL;SACD,CAAC;IACH,CAAC;CAAA;AAnCD,4CAmCC"}
|
|
@@ -4,6 +4,8 @@ exports.Librus = void 0;
|
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
5
|
const LibrusClient_1 = require("./LibrusClient");
|
|
6
6
|
const transport_1 = require("./transport");
|
|
7
|
+
const sessionCache_1 = require("./sessionCache");
|
|
8
|
+
const proxy_1 = require("./proxy");
|
|
7
9
|
class Librus {
|
|
8
10
|
constructor() {
|
|
9
11
|
this.description = {
|
|
@@ -157,7 +159,8 @@ class Librus {
|
|
|
157
159
|
const data = credential.data;
|
|
158
160
|
if (typeof (data === null || data === void 0 ? void 0 : data.username) !== 'string' || typeof (data === null || data === void 0 ? void 0 : data.password) !== 'string')
|
|
159
161
|
throw new LibrusClient_1.LibrusError('INVALID_OPTIONS');
|
|
160
|
-
const
|
|
162
|
+
const proxy = (0, proxy_1.parseProxy)(data.proxyUrl);
|
|
163
|
+
const client = new LibrusClient_1.LibrusClient((0, transport_1.createCredentialTestTransport)(this.helpers.request.bind(this.helpers), proxy), { username: data.username, password: data.password }, { proxy: proxy && (0, proxy_1.proxyUrl)(proxy) });
|
|
161
164
|
await client.getMessages({
|
|
162
165
|
returnAll: false,
|
|
163
166
|
limit: 1,
|
|
@@ -187,7 +190,12 @@ class Librus {
|
|
|
187
190
|
const credentials = await this.getCredentials('librusSessionApi', itemIndex);
|
|
188
191
|
if (typeof credentials.username !== 'string' || typeof credentials.password !== 'string')
|
|
189
192
|
throw new LibrusClient_1.LibrusError('INVALID_OPTIONS');
|
|
190
|
-
const
|
|
193
|
+
const proxy = (0, proxy_1.parseProxy)(credentials.proxyUrl);
|
|
194
|
+
const client = new LibrusClient_1.LibrusClient((0, transport_1.createTransport)(this.helpers.httpRequest.bind(this.helpers), proxy), { username: credentials.username, password: credentials.password }, {
|
|
195
|
+
sessions: sessionCache_1.sharedSessions,
|
|
196
|
+
log: (message) => { var _a; return (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(message); },
|
|
197
|
+
proxy: proxy && (0, proxy_1.proxyUrl)(proxy),
|
|
198
|
+
});
|
|
191
199
|
if (this.getNodeParameter('operation', itemIndex) === 'getContent') {
|
|
192
200
|
const result = await client.getMessageContent(this.getNodeParameter('messageId', itemIndex));
|
|
193
201
|
output.push({ json: { ...result }, pairedItem: { item: itemIndex } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Librus.node.js","sourceRoot":"","sources":["../../../nodes/Librus/Librus.node.ts"],"names":[],"mappings":";;;AAAA,+CAAuE;AAUvE,iDAMwB;AACxB,2CAA6E;
|
|
1
|
+
{"version":3,"file":"Librus.node.js","sourceRoot":"","sources":["../../../nodes/Librus/Librus.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { LibrusError, safeError } from './errors';
|
|
2
2
|
import { type CalendarDetail, type CalendarEntry } from './terminarz';
|
|
3
|
+
import type { SessionCache } from './sessionCache';
|
|
3
4
|
export { LibrusError, safeError };
|
|
4
5
|
export interface Request {
|
|
5
6
|
url: string;
|
|
@@ -18,6 +19,11 @@ export interface Login {
|
|
|
18
19
|
username: string;
|
|
19
20
|
password: string;
|
|
20
21
|
}
|
|
22
|
+
export interface ClientOptions {
|
|
23
|
+
sessions?: SessionCache;
|
|
24
|
+
log?: (message: string) => void;
|
|
25
|
+
proxy?: string;
|
|
26
|
+
}
|
|
21
27
|
export type ContentSource = 'preview' | 'full';
|
|
22
28
|
export type ReadStatus = 'all' | 'unread' | 'read';
|
|
23
29
|
export interface Scan {
|
|
@@ -53,11 +59,19 @@ export interface Message {
|
|
|
53
59
|
export declare class LibrusClient {
|
|
54
60
|
private readonly transport;
|
|
55
61
|
private readonly login;
|
|
62
|
+
private readonly options;
|
|
56
63
|
private jar;
|
|
57
64
|
private deadline;
|
|
58
65
|
private requests;
|
|
59
66
|
private budgetCode;
|
|
60
|
-
|
|
67
|
+
private sessionStart;
|
|
68
|
+
private cacheKey?;
|
|
69
|
+
constructor(transport: Transport, login: Login, options?: ClientOptions);
|
|
70
|
+
private note;
|
|
71
|
+
private key;
|
|
72
|
+
private restoreSession;
|
|
73
|
+
private forgetSession;
|
|
74
|
+
private withSession;
|
|
61
75
|
private request;
|
|
62
76
|
private authenticate;
|
|
63
77
|
getMessages(options: Scan): Promise<Message[]>;
|
|
@@ -60,6 +60,18 @@ function checkedRedirect(value, base) {
|
|
|
60
60
|
url.protocol = 'https:';
|
|
61
61
|
return checkedUrl(url.href);
|
|
62
62
|
}
|
|
63
|
+
function transportCause(cause) {
|
|
64
|
+
const nested = object(cause) ? cause.cause : undefined;
|
|
65
|
+
for (const candidate of [cause, nested]) {
|
|
66
|
+
const code = object(candidate) ? candidate.code : undefined;
|
|
67
|
+
if (typeof code === 'string' && /^[A-Z][A-Z0-9_]{1,40}$/.test(code))
|
|
68
|
+
return code;
|
|
69
|
+
}
|
|
70
|
+
return cause instanceof Error && /timeout/i.test(cause.message) ? 'TIMEOUT' : 'nieznana';
|
|
71
|
+
}
|
|
72
|
+
function minutes(ms) {
|
|
73
|
+
return Math.max(0, Math.round(ms / 60000));
|
|
74
|
+
}
|
|
63
75
|
function authUrl(url) {
|
|
64
76
|
return url.hostname === 'api.librus.pl' && /^\/OAuth\/Authorization(?:\/|$)/.test(url.pathname);
|
|
65
77
|
}
|
|
@@ -157,13 +169,74 @@ function parseMessage(value, includeContent) {
|
|
|
157
169
|
return result;
|
|
158
170
|
}
|
|
159
171
|
class LibrusClient {
|
|
160
|
-
constructor(transport, login) {
|
|
172
|
+
constructor(transport, login, options = {}) {
|
|
161
173
|
this.transport = transport;
|
|
162
174
|
this.login = login;
|
|
175
|
+
this.options = options;
|
|
163
176
|
this.jar = new tough_cookie_1.CookieJar();
|
|
164
177
|
this.deadline = 0;
|
|
165
178
|
this.requests = 0;
|
|
166
179
|
this.budgetCode = 'SCAN_INCOMPLETE';
|
|
180
|
+
this.sessionStart = 0;
|
|
181
|
+
}
|
|
182
|
+
note(message) {
|
|
183
|
+
var _a, _b;
|
|
184
|
+
(_b = (_a = this.options).log) === null || _b === void 0 ? void 0 : _b.call(_a, `Librus: ${message}`);
|
|
185
|
+
}
|
|
186
|
+
key(sessions) {
|
|
187
|
+
var _a;
|
|
188
|
+
(_a = this.cacheKey) !== null && _a !== void 0 ? _a : (this.cacheKey = sessions.key(this.login.username, this.login.password, this.options.proxy));
|
|
189
|
+
return this.cacheKey;
|
|
190
|
+
}
|
|
191
|
+
restoreSession() {
|
|
192
|
+
const sessions = this.options.sessions;
|
|
193
|
+
if (!sessions)
|
|
194
|
+
return false;
|
|
195
|
+
const stored = sessions.lookup(this.key(sessions));
|
|
196
|
+
if (stored.status === 'expired')
|
|
197
|
+
this.note(`zapisana sesja osiągnęła limit wieku (${minutes(stored.ageMs)} min)`);
|
|
198
|
+
if (stored.status !== 'ok')
|
|
199
|
+
return false;
|
|
200
|
+
this.jar = stored.jar;
|
|
201
|
+
this.sessionStart = stored.establishedAt;
|
|
202
|
+
this.note(`używam zapisanej sesji (wiek: ${minutes(stored.ageMs)} min)`);
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
forgetSession() {
|
|
206
|
+
const sessions = this.options.sessions;
|
|
207
|
+
if (sessions)
|
|
208
|
+
sessions.forget(this.key(sessions));
|
|
209
|
+
}
|
|
210
|
+
async withSession(budget, run) {
|
|
211
|
+
const operation = async () => {
|
|
212
|
+
this.budgetCode = budget;
|
|
213
|
+
this.deadline = Date.now() + 120000;
|
|
214
|
+
this.requests = 0;
|
|
215
|
+
let reused = this.restoreSession();
|
|
216
|
+
if (!reused)
|
|
217
|
+
await this.authenticate('brak zapisanej sesji');
|
|
218
|
+
for (let attempt = 0;; attempt++) {
|
|
219
|
+
try {
|
|
220
|
+
return await run();
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
this.forgetSession();
|
|
224
|
+
const code = error instanceof errors_1.LibrusError ? error.code : undefined;
|
|
225
|
+
const stale = code === 'SESSION_EXPIRED' ||
|
|
226
|
+
(reused && (code === 'PROTOCOL_ERROR' || code === 'ACCESS_DENIED'));
|
|
227
|
+
if (!stale || attempt === 1)
|
|
228
|
+
throw error;
|
|
229
|
+
const reason = reused
|
|
230
|
+
? `zapisana sesja przestała działać po ${minutes(Date.now() - this.sessionStart)} min (${code})`
|
|
231
|
+
: 'sesja wygasła w trakcie zapytania';
|
|
232
|
+
reused = false;
|
|
233
|
+
this.requests = 0;
|
|
234
|
+
await this.authenticate(reason);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
const sessions = this.options.sessions;
|
|
239
|
+
return sessions ? sessions.exclusive(this.key(sessions), operation) : operation();
|
|
167
240
|
}
|
|
168
241
|
async request(value, body) {
|
|
169
242
|
let url = checkedUrl(value);
|
|
@@ -196,8 +269,10 @@ class LibrusClient {
|
|
|
196
269
|
timeout: Math.max(1, Math.min(15000, remaining)),
|
|
197
270
|
});
|
|
198
271
|
}
|
|
199
|
-
catch {
|
|
200
|
-
|
|
272
|
+
catch (cause) {
|
|
273
|
+
const error = new errors_1.LibrusError('TRANSPORT_ERROR');
|
|
274
|
+
error.message += ` [Przyczyna: ${transportCause(cause)}; host: ${url.hostname}${this.options.proxy ? '; przez proxy' : ''}]`;
|
|
275
|
+
throw error;
|
|
201
276
|
}
|
|
202
277
|
if (typeof response.body !== 'string')
|
|
203
278
|
throw protocolError('typ treści odpowiedzi HTTP', response.body);
|
|
@@ -259,7 +334,8 @@ class LibrusClient {
|
|
|
259
334
|
}
|
|
260
335
|
throw protocolError('limit przekierowań');
|
|
261
336
|
}
|
|
262
|
-
async authenticate() {
|
|
337
|
+
async authenticate(reason) {
|
|
338
|
+
this.note(`nowe logowanie (${reason})`);
|
|
263
339
|
try {
|
|
264
340
|
this.jar = new tough_cookie_1.CookieJar();
|
|
265
341
|
const entry = await this.request('https://synergia.librus.pl/loguj/portalRodzina');
|
|
@@ -289,8 +365,11 @@ class LibrusClient {
|
|
|
289
365
|
const inbox = await this.request('https://synergia.librus.pl/wiadomosci3');
|
|
290
366
|
if (authUrl(inbox.url) || /\/loguj(?:\/|$)/.test(inbox.url.pathname))
|
|
291
367
|
throw actionRequired('otwarcie skrzynki', inbox.url);
|
|
368
|
+
const sessions = this.options.sessions;
|
|
369
|
+
this.sessionStart = sessions ? sessions.store(this.key(sessions), this.jar) : Date.now();
|
|
292
370
|
}
|
|
293
371
|
catch (error) {
|
|
372
|
+
this.forgetSession();
|
|
294
373
|
if (error instanceof errors_1.LibrusError && error.code === 'PROTOCOL_ERROR')
|
|
295
374
|
error.message += ' [Faza: logowanie]';
|
|
296
375
|
throw error;
|
|
@@ -311,33 +390,21 @@ class LibrusClient {
|
|
|
311
390
|
options.contentSource !== 'preview' &&
|
|
312
391
|
options.contentSource !== 'full'))
|
|
313
392
|
throw new errors_1.LibrusError('INVALID_OPTIONS');
|
|
314
|
-
this.budgetCode = 'SCAN_INCOMPLETE';
|
|
315
|
-
this.deadline = Date.now() + 120000;
|
|
316
|
-
this.requests = 0;
|
|
317
|
-
await this.authenticate();
|
|
318
393
|
let unreadSelection;
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
if (
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
message.contentSource = 'full';
|
|
330
|
-
}
|
|
394
|
+
return await this.withSession('SCAN_INCOMPLETE', async () => {
|
|
395
|
+
const result = unreadSelection !== null && unreadSelection !== void 0 ? unreadSelection : (await this.scan(options));
|
|
396
|
+
if (options.includeContent && options.contentSource === 'full') {
|
|
397
|
+
if (result.length > 50)
|
|
398
|
+
throw new errors_1.LibrusError('FULL_CONTENT_LIMIT');
|
|
399
|
+
if (options.readStatus === 'unread')
|
|
400
|
+
unreadSelection = result;
|
|
401
|
+
for (const message of result) {
|
|
402
|
+
message.content = await this.fullContent(message.messageId);
|
|
403
|
+
message.contentSource = 'full';
|
|
331
404
|
}
|
|
332
|
-
return result;
|
|
333
405
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
throw error;
|
|
337
|
-
await this.authenticate();
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
406
|
+
return result;
|
|
407
|
+
});
|
|
341
408
|
}
|
|
342
409
|
async getMessageContent(messageId) {
|
|
343
410
|
if (!this.login.username ||
|
|
@@ -345,21 +412,11 @@ class LibrusClient {
|
|
|
345
412
|
typeof messageId !== 'string' ||
|
|
346
413
|
!/^[A-Za-z0-9_-]+$/.test(messageId))
|
|
347
414
|
throw new errors_1.LibrusError('INVALID_OPTIONS');
|
|
348
|
-
this.
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
try {
|
|
354
|
-
return { messageId, content: await this.fullContent(messageId), contentSource: 'full' };
|
|
355
|
-
}
|
|
356
|
-
catch (error) {
|
|
357
|
-
if (!(error instanceof errors_1.LibrusError) || error.code !== 'SESSION_EXPIRED' || attempt === 1)
|
|
358
|
-
throw error;
|
|
359
|
-
await this.authenticate();
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
415
|
+
return await this.withSession('SCAN_INCOMPLETE', async () => ({
|
|
416
|
+
messageId,
|
|
417
|
+
content: await this.fullContent(messageId),
|
|
418
|
+
contentSource: 'full',
|
|
419
|
+
}));
|
|
363
420
|
}
|
|
364
421
|
async fullContent(messageId) {
|
|
365
422
|
if (!/^[A-Za-z0-9_-]+$/.test(messageId))
|
|
@@ -478,52 +535,39 @@ class LibrusClient {
|
|
|
478
535
|
options.months.length > 7 ||
|
|
479
536
|
options.months.some((month) => !/^\d{4}-(?:0[1-9]|1[0-2])$/.test(month)))
|
|
480
537
|
throw new errors_1.LibrusError('CALENDAR_INVALID_OPTIONS');
|
|
481
|
-
this.
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
try {
|
|
487
|
-
const entries = [];
|
|
488
|
-
for (const month of options.months) {
|
|
489
|
-
const [year, index] = month.split('-').map(Number);
|
|
490
|
-
if (year < 2000 || year > 2100)
|
|
491
|
-
throw new errors_1.LibrusError('CALENDAR_INVALID_OPTIONS');
|
|
492
|
-
entries.push(...(await this.monthPage(year, index)));
|
|
493
|
-
}
|
|
494
|
-
const known = new Map(entries.map((entry) => [entry.key, entry]));
|
|
495
|
-
const selected = select(entries);
|
|
496
|
-
if (!Array.isArray(selected))
|
|
538
|
+
return await this.withSession('CALENDAR_SCAN_INCOMPLETE', async () => {
|
|
539
|
+
const entries = [];
|
|
540
|
+
for (const month of options.months) {
|
|
541
|
+
const [year, index] = month.split('-').map(Number);
|
|
542
|
+
if (year < 2000 || year > 2100)
|
|
497
543
|
throw new errors_1.LibrusError('CALENDAR_INVALID_OPTIONS');
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
const detail = await this.eventDetail(route, id);
|
|
514
|
-
if (detail !== null)
|
|
515
|
-
details.set(key, detail);
|
|
544
|
+
entries.push(...(await this.monthPage(year, index)));
|
|
545
|
+
}
|
|
546
|
+
const known = new Map(entries.map((entry) => [entry.key, entry]));
|
|
547
|
+
const selected = select(entries);
|
|
548
|
+
if (!Array.isArray(selected))
|
|
549
|
+
throw new errors_1.LibrusError('CALENDAR_INVALID_OPTIONS');
|
|
550
|
+
const details = new Map();
|
|
551
|
+
const fetchable = [];
|
|
552
|
+
for (const key of selected) {
|
|
553
|
+
const entry = known.get(key);
|
|
554
|
+
if (!entry)
|
|
555
|
+
continue;
|
|
556
|
+
if (!entry.route || !entry.eventId) {
|
|
557
|
+
details.set(key, null);
|
|
558
|
+
continue;
|
|
516
559
|
}
|
|
517
|
-
|
|
560
|
+
fetchable.push({ key, route: entry.route, id: entry.eventId });
|
|
518
561
|
}
|
|
519
|
-
|
|
520
|
-
if (
|
|
521
|
-
|
|
522
|
-
this.
|
|
523
|
-
|
|
562
|
+
for (const { key, route, id } of fetchable.slice(0, MAX_DETAILS)) {
|
|
563
|
+
if (MAX_REQUESTS - this.requests < DETAIL_HEADROOM)
|
|
564
|
+
break;
|
|
565
|
+
const detail = await this.eventDetail(route, id);
|
|
566
|
+
if (detail !== null)
|
|
567
|
+
details.set(key, detail);
|
|
524
568
|
}
|
|
525
|
-
|
|
526
|
-
|
|
569
|
+
return { entries, details };
|
|
570
|
+
});
|
|
527
571
|
}
|
|
528
572
|
}
|
|
529
573
|
exports.LibrusClient = LibrusClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibrusClient.js","sourceRoot":"","sources":["../../../nodes/Librus/LibrusClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LibrusClient.js","sourceRoot":"","sources":["../../../nodes/Librus/LibrusClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,8 @@ const n8n_workflow_1 = require("n8n-workflow");
|
|
|
5
5
|
const LibrusClient_1 = require("./LibrusClient");
|
|
6
6
|
const Librus_node_1 = require("./Librus.node");
|
|
7
7
|
const transport_1 = require("./transport");
|
|
8
|
+
const sessionCache_1 = require("./sessionCache");
|
|
9
|
+
const proxy_1 = require("./proxy");
|
|
8
10
|
const pollState_1 = require("./pollState");
|
|
9
11
|
const calendarState_1 = require("./calendarState");
|
|
10
12
|
function parseTypes(value) {
|
|
@@ -177,9 +179,14 @@ class LibrusTrigger {
|
|
|
177
179
|
const credentials = await this.getCredentials('librusSessionApi');
|
|
178
180
|
if (typeof credentials.username !== 'string' || typeof credentials.password !== 'string')
|
|
179
181
|
throw new LibrusClient_1.LibrusError('INVALID_OPTIONS');
|
|
180
|
-
const
|
|
182
|
+
const proxy = (0, proxy_1.parseProxy)(credentials.proxyUrl);
|
|
183
|
+
const client = new LibrusClient_1.LibrusClient((0, transport_1.createTransport)(this.helpers.httpRequest.bind(this.helpers), proxy), {
|
|
181
184
|
username: credentials.username,
|
|
182
185
|
password: credentials.password,
|
|
186
|
+
}, {
|
|
187
|
+
sessions: sessionCache_1.sharedSessions,
|
|
188
|
+
log: (message) => { var _a; return (_a = this.logger) === null || _a === void 0 ? void 0 : _a.info(message); },
|
|
189
|
+
proxy: proxy && (0, proxy_1.proxyUrl)(proxy),
|
|
183
190
|
});
|
|
184
191
|
const manual = this.getMode() === 'manual';
|
|
185
192
|
const account = (0, pollState_1.accountKey)(credentials.username, (_c = (_b = (_a = this.getNode().credentials) === null || _a === void 0 ? void 0 : _a.librusSessionApi) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibrusTrigger.node.js","sourceRoot":"","sources":["../../../nodes/Librus/LibrusTrigger.node.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"LibrusTrigger.node.js","sourceRoot":"","sources":["../../../nodes/Librus/LibrusTrigger.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ exports.protocolError = protocolError;
|
|
|
6
6
|
const messages = {
|
|
7
7
|
UNSAFE_URL: 'Librus wskazał niedozwolony adres. Nie wysłano do niego zapytania.',
|
|
8
8
|
TRANSPORT_ERROR: 'Nie udało się połączyć z Librusem. Sprawdź połączenie i spróbuj ponownie później.',
|
|
9
|
+
PROXY_INVALID: 'Nieprawidłowy adres proxy w danych logowania. Podaj adres w postaci http://host:port lub https://host:port, opcjonalnie z użytkownikiem i hasłem, albo zostaw pole puste.',
|
|
9
10
|
PROTOCOL_ERROR: 'Librus zwrócił odpowiedź w nieoczekiwanym formacie. Integracja może wymagać aktualizacji.',
|
|
10
11
|
AUTH_FAILED: 'Librus odrzucił logowanie. Sprawdź login i hasło na stronie Librusa.',
|
|
11
12
|
ACTION_REQUIRED: 'Zaloguj się na stronie Librusa i uzupełnij wymagane potwierdzenia konta.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../nodes/Librus/errors.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../nodes/Librus/errors.ts"],"names":[],"mappings":";;;AAmEA,8BAEC;AAGD,sCAKC;AA7ED,MAAM,QAAQ,GAA2B;IACxC,UAAU,EAAE,oEAAoE;IAChF,eAAe,EACd,mFAAmF;IACpF,aAAa,EACZ,2KAA2K;IAC5K,cAAc,EACb,2FAA2F;IAC5F,WAAW,EAAE,sEAAsE;IACnF,eAAe,EAAE,0EAA0E;IAC3F,eAAe,EAAE,0CAA0C;IAC3D,YAAY,EAAE,gEAAgE;IAC9E,aAAa,EAAE,uEAAuE;IACtF,aAAa,EAAE,gEAAgE;IAC/E,eAAe,EACd,8IAA8I;IAE/I,wBAAwB,EACvB,4HAA4H;IAC7H,kBAAkB,EACjB,gIAAgI;IACjI,eAAe,EAAE,+EAA+E;IAEhG,wBAAwB,EACvB,mHAAmH;IACpH,qBAAqB,EACpB,oIAAoI;IACrI,mBAAmB,EAClB,sHAAsH;IACvH,sBAAsB,EACrB,qIAAqI;IACtI,oBAAoB,EACnB,sJAAsJ;CACvJ,CAAC;AAcF,MAAa,WAAY,SAAQ,KAAK;IAGrC,YACiB,IAAY,EAC5B,KAAiB,EACjB,WAA6B,EAC7B,SAIyB;;QAEzB,KAAK,CACJ,CAAC,MAAA,QAAQ,CAAC,IAAI,CAAC,mCAAI,QAAQ,CAAC,cAAc,CAAC;YAC1C,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,aAAa,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,CAAC,SAAS,CAAC,CAAC,CAAC,+BAA+B,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC/D,CAAC;QAbc,SAAI,GAAJ,IAAI,CAAQ;IAc7B,CAAC;CACD;AAnBD,kCAmBC;AACD,SAAgB,SAAS,CAAC,KAAc;IACvC,OAAO,KAAK,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC;AACjF,CAAC;AAGD,SAAgB,aAAa,CAAC,KAAa,EAAE,KAAe;IAC3D,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC;IACrF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAChD,KAAK,CAAC,OAAO,IAAI,gBAAgB,KAAK,oBAAoB,IAAI,GAAG,CAAC;IAClE,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ProxyConfig {
|
|
2
|
+
protocol: 'http' | 'https';
|
|
3
|
+
host: string;
|
|
4
|
+
port: number;
|
|
5
|
+
auth?: {
|
|
6
|
+
username: string;
|
|
7
|
+
password: string;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare function parseProxy(value: unknown): ProxyConfig | undefined;
|
|
11
|
+
export declare function proxyUrl(proxy: ProxyConfig): string;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseProxy = parseProxy;
|
|
4
|
+
exports.proxyUrl = proxyUrl;
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
function parseProxy(value) {
|
|
7
|
+
if (value === undefined || value === null)
|
|
8
|
+
return undefined;
|
|
9
|
+
if (typeof value !== 'string')
|
|
10
|
+
throw new errors_1.LibrusError('PROXY_INVALID');
|
|
11
|
+
const text = value.trim();
|
|
12
|
+
if (!text)
|
|
13
|
+
return undefined;
|
|
14
|
+
let url;
|
|
15
|
+
try {
|
|
16
|
+
url = new URL(text);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
throw new errors_1.LibrusError('PROXY_INVALID');
|
|
20
|
+
}
|
|
21
|
+
if ((url.protocol !== 'http:' && url.protocol !== 'https:') ||
|
|
22
|
+
!url.hostname ||
|
|
23
|
+
(url.pathname !== '/' && url.pathname !== '') ||
|
|
24
|
+
url.search ||
|
|
25
|
+
url.hash)
|
|
26
|
+
throw new errors_1.LibrusError('PROXY_INVALID');
|
|
27
|
+
const protocol = url.protocol === 'https:' ? 'https' : 'http';
|
|
28
|
+
const config = {
|
|
29
|
+
protocol,
|
|
30
|
+
host: url.hostname,
|
|
31
|
+
port: url.port ? Number(url.port) : protocol === 'https' ? 443 : 80,
|
|
32
|
+
};
|
|
33
|
+
if (url.username || url.password) {
|
|
34
|
+
try {
|
|
35
|
+
config.auth = {
|
|
36
|
+
username: decodeURIComponent(url.username),
|
|
37
|
+
password: decodeURIComponent(url.password),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new errors_1.LibrusError('PROXY_INVALID');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return config;
|
|
45
|
+
}
|
|
46
|
+
function proxyUrl(proxy) {
|
|
47
|
+
const url = new URL(`${proxy.protocol}://${proxy.host}`);
|
|
48
|
+
url.port = String(proxy.port);
|
|
49
|
+
if (proxy.auth) {
|
|
50
|
+
url.username = encodeURIComponent(proxy.auth.username);
|
|
51
|
+
url.password = encodeURIComponent(proxy.auth.password);
|
|
52
|
+
}
|
|
53
|
+
return url.href;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../nodes/Librus/proxy.ts"],"names":[],"mappings":";;AAkBA,gCAqCC;AAGD,4BAQC;AAlED,qCAAuC;AAkBvC,SAAgB,UAAU,CAAC,KAAc;IACxC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,oBAAW,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,oBAAW,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IACD,IACC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;QACvD,CAAC,GAAG,CAAC,QAAQ;QACb,CAAC,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC;QAC7C,GAAG,CAAC,MAAM;QACV,GAAG,CAAC,IAAI;QAER,MAAM,IAAI,oBAAW,CAAC,eAAe,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,MAAM,GAAgB;QAC3B,QAAQ;QAER,IAAI,EAAE,GAAG,CAAC,QAAQ;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;KACnE,CAAC;IACF,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC;YACJ,MAAM,CAAC,IAAI,GAAG;gBACb,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC1C,QAAQ,EAAE,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC;aAC1C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,IAAI,oBAAW,CAAC,eAAe,CAAC,CAAC;QACxC,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAGD,SAAgB,QAAQ,CAAC,KAAkB;IAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,GAAG,CAAC,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,GAAG,CAAC,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CookieJar } from 'tough-cookie';
|
|
2
|
+
export declare const MAX_SESSION_AGE_MS: number;
|
|
3
|
+
export type SessionLookup = {
|
|
4
|
+
status: 'none';
|
|
5
|
+
} | {
|
|
6
|
+
status: 'expired';
|
|
7
|
+
ageMs: number;
|
|
8
|
+
} | {
|
|
9
|
+
status: 'ok';
|
|
10
|
+
jar: CookieJar;
|
|
11
|
+
establishedAt: number;
|
|
12
|
+
ageMs: number;
|
|
13
|
+
};
|
|
14
|
+
export declare class SessionCache {
|
|
15
|
+
readonly now: () => number;
|
|
16
|
+
private readonly sessions;
|
|
17
|
+
private readonly queues;
|
|
18
|
+
constructor(now?: () => number);
|
|
19
|
+
key(username: string, password: string, route?: string): string;
|
|
20
|
+
lookup(key: string): SessionLookup;
|
|
21
|
+
store(key: string, jar: CookieJar): number;
|
|
22
|
+
forget(key: string): void;
|
|
23
|
+
exclusive<T>(key: string, run: () => Promise<T>): Promise<T>;
|
|
24
|
+
}
|
|
25
|
+
export declare const sharedSessions: SessionCache;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sharedSessions = exports.SessionCache = exports.MAX_SESSION_AGE_MS = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
exports.MAX_SESSION_AGE_MS = 6 * 60 * 60 * 1000;
|
|
6
|
+
class SessionCache {
|
|
7
|
+
constructor(now = Date.now) {
|
|
8
|
+
this.now = now;
|
|
9
|
+
this.sessions = new Map();
|
|
10
|
+
this.queues = new Map();
|
|
11
|
+
}
|
|
12
|
+
key(username, password, route = '') {
|
|
13
|
+
return (0, node_crypto_1.createHash)('sha256')
|
|
14
|
+
.update(username)
|
|
15
|
+
.update('\0')
|
|
16
|
+
.update(password)
|
|
17
|
+
.update('\0')
|
|
18
|
+
.update(route)
|
|
19
|
+
.digest('hex');
|
|
20
|
+
}
|
|
21
|
+
lookup(key) {
|
|
22
|
+
const stored = this.sessions.get(key);
|
|
23
|
+
if (!stored)
|
|
24
|
+
return { status: 'none' };
|
|
25
|
+
const ageMs = this.now() - stored.establishedAt;
|
|
26
|
+
if (ageMs >= exports.MAX_SESSION_AGE_MS) {
|
|
27
|
+
this.sessions.delete(key);
|
|
28
|
+
return { status: 'expired', ageMs };
|
|
29
|
+
}
|
|
30
|
+
return { status: 'ok', jar: stored.jar, establishedAt: stored.establishedAt, ageMs };
|
|
31
|
+
}
|
|
32
|
+
store(key, jar) {
|
|
33
|
+
const establishedAt = this.now();
|
|
34
|
+
this.sessions.set(key, { jar, establishedAt });
|
|
35
|
+
return establishedAt;
|
|
36
|
+
}
|
|
37
|
+
forget(key) {
|
|
38
|
+
this.sessions.delete(key);
|
|
39
|
+
}
|
|
40
|
+
async exclusive(key, run) {
|
|
41
|
+
var _a;
|
|
42
|
+
const previous = (_a = this.queues.get(key)) !== null && _a !== void 0 ? _a : Promise.resolve();
|
|
43
|
+
const current = previous.then(run, run);
|
|
44
|
+
const tail = current.then(() => undefined, () => undefined);
|
|
45
|
+
this.queues.set(key, tail);
|
|
46
|
+
try {
|
|
47
|
+
return await current;
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
if (this.queues.get(key) === tail)
|
|
51
|
+
this.queues.delete(key);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.SessionCache = SessionCache;
|
|
56
|
+
exports.sharedSessions = new SessionCache();
|
|
57
|
+
//# sourceMappingURL=sessionCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionCache.js","sourceRoot":"","sources":["../../../nodes/Librus/sessionCache.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAQ5B,QAAA,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAYrD,MAAa,YAAY;IAIxB,YAAqB,MAAoB,IAAI,CAAC,GAAG;QAA5B,QAAG,GAAH,GAAG,CAAyB;QAHhC,aAAQ,GAAG,IAAI,GAAG,EAAqD,CAAC;QACxE,WAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEV,CAAC;IAGrD,GAAG,CAAC,QAAgB,EAAE,QAAgB,EAAE,KAAK,GAAG,EAAE;QACjD,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC;aACzB,MAAM,CAAC,QAAQ,CAAC;aAChB,MAAM,CAAC,IAAI,CAAC;aACZ,MAAM,CAAC,QAAQ,CAAC;aAChB,MAAM,CAAC,IAAI,CAAC;aACZ,MAAM,CAAC,KAAK,CAAC;aACb,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,GAAW;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;QAChD,IAAI,KAAK,IAAI,0BAAkB,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;IACtF,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,GAAc;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QAC/C,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,GAAW;QACjB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAMD,KAAK,CAAC,SAAS,CAAI,GAAW,EAAE,GAAqB;;QACpD,MAAM,QAAQ,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CACxB,GAAG,EAAE,CAAC,SAAS,EACf,GAAG,EAAE,CAAC,SAAS,CACf,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC;YACJ,OAAO,MAAM,OAAO,CAAC;QACtB,CAAC;gBAAS,CAAC;YACV,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5D,CAAC;IACF,CAAC;CACD;AAxDD,oCAwDC;AAGY,QAAA,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { IHttpRequestOptions } from 'n8n-workflow';
|
|
2
2
|
import type { Transport } from './LibrusClient';
|
|
3
|
-
|
|
4
|
-
export declare function
|
|
3
|
+
import { type ProxyConfig } from './proxy';
|
|
4
|
+
export declare function createTransport(httpRequest: (options: IHttpRequestOptions) => Promise<unknown>, proxy?: ProxyConfig): Transport;
|
|
5
|
+
export declare function createCredentialTestTransport(requestHelper: (options: object) => Promise<unknown>, proxy?: ProxyConfig): Transport;
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createTransport = createTransport;
|
|
4
4
|
exports.createCredentialTestTransport = createCredentialTestTransport;
|
|
5
|
+
const proxy_1 = require("./proxy");
|
|
5
6
|
function normalizeResponse(value) {
|
|
6
7
|
const response = value;
|
|
7
8
|
return {
|
|
@@ -10,10 +11,11 @@ function normalizeResponse(value) {
|
|
|
10
11
|
body: response.body === undefined ? '' : response.body,
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
|
-
function createTransport(httpRequest) {
|
|
14
|
+
function createTransport(httpRequest, proxy) {
|
|
14
15
|
return async (request) => {
|
|
15
16
|
const response = await httpRequest({
|
|
16
17
|
...request,
|
|
18
|
+
...(proxy ? { proxy } : {}),
|
|
17
19
|
disableFollowRedirect: true,
|
|
18
20
|
returnFullResponse: true,
|
|
19
21
|
ignoreHttpStatusErrors: true,
|
|
@@ -23,7 +25,7 @@ function createTransport(httpRequest) {
|
|
|
23
25
|
return normalizeResponse(response);
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
|
-
function createCredentialTestTransport(requestHelper) {
|
|
28
|
+
function createCredentialTestTransport(requestHelper, proxy) {
|
|
27
29
|
return async (request) => normalizeResponse(await requestHelper({
|
|
28
30
|
uri: request.url,
|
|
29
31
|
method: request.method,
|
|
@@ -36,6 +38,7 @@ function createCredentialTestTransport(requestHelper) {
|
|
|
36
38
|
simple: false,
|
|
37
39
|
json: false,
|
|
38
40
|
encoding: 'utf8',
|
|
41
|
+
...(proxy ? { proxy: (0, proxy_1.proxyUrl)(proxy) } : {}),
|
|
39
42
|
}));
|
|
40
43
|
}
|
|
41
44
|
//# sourceMappingURL=transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../nodes/Librus/transport.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../nodes/Librus/transport.ts"],"names":[],"mappings":";;AAeA,0CAgBC;AAGD,sEAqBC;AArDD,mCAAqD;AAIrD,SAAS,iBAAiB,CAAC,KAAc;IACxC,MAAM,QAAQ,GAAG,KAAiB,CAAC;IACnC,OAAO;QACN,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;KACtD,CAAC;AACH,CAAC;AAED,SAAgB,eAAe,CAC9B,WAA+D,EAC/D,KAAmB;IAEnB,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC;YAClC,GAAG,OAAO;YACV,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,qBAAqB,EAAE,IAAI;YAC3B,kBAAkB,EAAE,IAAI;YACxB,sBAAsB,EAAE,IAAI;YAC5B,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC;AACH,CAAC;AAGD,SAAgB,6BAA6B,CAC5C,aAAoD,EACpD,KAAmB;IAEnB,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE,CACxB,iBAAiB,CAChB,MAAM,aAAa,CAAC;QACnB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,cAAc,EAAE,KAAK;QACrB,kBAAkB,EAAE,KAAK;QACzB,uBAAuB,EAAE,IAAI;QAC7B,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,KAAK;QACX,QAAQ,EAAE,MAAM;QAChB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAA,gBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/docs/architecture.md
CHANGED
|
@@ -84,7 +84,7 @@ The silent set is measured against the horizon the *current* start month would h
|
|
|
84
84
|
|
|
85
85
|
An entry cell without an `onclick` detail link (a free day, a note with no drill-down) has no stable identifier, so `calendarState.ts` gives it a synthetic key hashed from its date and cell text. Because that key changes whenever the text changes, an edited link-less entry looks like one disappearance plus one appearance. `pairSynthetic` collapses exactly one `hash/`-keyed removal and exactly one `hash/`-keyed addition on the same date within the same poll into a single `changed` item. Documented failure mode: a genuine deletion and a genuine unrelated addition landing on that same date in the same poll collapse into one reported change instead of two, because the heuristic cannot distinguish the two situations from the grid text alone.
|
|
86
86
|
|
|
87
|
-
A calendar poll's request budget is reset per attempt, not per operation. A full window costs roughly 8 requests to authenticate, one per month (up to 7) and up to 50 detail pages — about 65 against a cap of 100 — so a session expiry late in hydration would leave a shared counter unable to fund the second attempt, and the retry would die on the budget rather than on the protocol. `getCalendar` therefore resets `this.requests` alongside the re-`authenticate()` in its retry path. The 120-second deadline is not reset and still bounds the operation as a whole.
|
|
87
|
+
A calendar poll's request budget is reset per attempt, not per operation. A full window costs roughly 8 requests to authenticate, one per month (up to 7) and up to 50 detail pages — about 65 against a cap of 100 — so a session expiry late in hydration would leave a shared counter unable to fund the second attempt, and the retry would die on the budget rather than on the protocol. `getCalendar` therefore resets `this.requests` alongside the re-`authenticate()` in its retry path. The 120-second deadline is not reset and still bounds the operation as a whole. Since 0.3.0 the message path works the same way: every operation runs through `withSession`, which resets the counter before the retry login.
|
|
88
88
|
|
|
89
89
|
An exhausted budget on the calendar path raises `CALENDAR_SCAN_INCOMPLETE`, whose Polish message tells the user to reduce **Liczba miesięcy do przodu** — the only lever the calendar events have. Invalid calendar options raise `CALENDAR_INVALID_OPTIONS`, which names the same setting instead of the message-fetching settings `INVALID_OPTIONS` describes; `INVALID_OPTIONS` and every message-path raise site are unchanged. `SCAN_INCOMPLETE`, which names the inbox's **Maksymalna liczba stron**, is unchanged and stays on the message path; the client selects between them with a per-operation `budgetCode` field.
|
|
90
90
|
|
|
@@ -93,3 +93,20 @@ An exhausted budget on the calendar path raises `CALENDAR_SCAN_INCOMPLETE`, whos
|
|
|
93
93
|
The manual execution path deliberately does not apply that filter to its sample of up to five current-month entries, unlike the automatic path. The `Rodzaj` vocabulary is unverified, and the manual test is exactly how a user discovers the real values before filling the filter in: filtering the sample would hide the values it exists to reveal, and a narrow filter would return an empty sample that reads as a broken connection. The inconsistency is intentional and is stated in the node's calendar notice and in the README.
|
|
94
94
|
|
|
95
95
|
None of this — the POST target, the grid markup, the detail-page shape, the `Rodzaj` vocabulary, or whether polling disturbs the Librus UI — is live-verified. Every check performed so far is against offline HTML fixtures written from source inspection of third-party unofficial clients, not against a real Librus account.
|
|
96
|
+
|
|
97
|
+
## Session reuse (0.3.0)
|
|
98
|
+
|
|
99
|
+
Before 0.3.0 every operation performed the full browser login (about 8 requests), so three polling triggers on one account made at least 72 logins a day, plus one per Get Content item. From an n8n server that pattern coincided with Librus silently dropping TCP connections from the server's address, which surfaced as `TRANSPORT_ERROR`.
|
|
100
|
+
|
|
101
|
+
`sessionCache.ts` keeps logged-in cookie jars in process memory, keyed by a SHA-256 hash of login and password, and shared by the trigger and the action node (`sharedSessions`). Cookies are deliberately not written to workflow static data, credentials or output: they are as good as the password, static data is stored in plain text with the workflow, and it is per node, so the three triggers could not share it anyway. A restart or a queue-mode worker simply logs in once more. The credential test never uses the cache and always performs a real login.
|
|
102
|
+
|
|
103
|
+
`LibrusClient.withSession` runs each operation under a per-account lock (`SessionCache.exclusive`), so two triggers never log in concurrently or replace the jar under one another; the 120-second deadline and request budget start only after the lock is acquired. It adopts a stored session when one exists and is younger than `MAX_SESSION_AGE_MS` (6 hours, a safety cap: Librus's own lifetime is unknown). A stored session that stops working is detected on first use: `SESSION_EXPIRED`, and on a reused session also `PROTOCOL_ERROR` or `ACCESS_DENIED` (an expired session does not always answer with a login redirect), trigger one fresh login and a single retry. Any failure drops the stored session, so a broken one is never offered to the next operation.
|
|
104
|
+
|
|
105
|
+
The client reports the session lifecycle through the optional `log` callback, which the nodes connect to the n8n logger at info level: `nowe logowanie (<powód>)`, `używam zapisanej sesji (wiek: N min)`, `zapisana sesja przestała działać po N min (<kod>)` and `zapisana sesja osiągnęła limit wieku (N min)`. These notes contain no credentials, cookies or content; they exist to measure the real session lifetime in production.
|
|
106
|
+
|
|
107
|
+
`TRANSPORT_ERROR` now carries a safe cause and the host, e.g. `[Przyczyna: ETIMEDOUT; host: synergia.librus.pl]`. Only system-style error codes (`^[A-Z][A-Z0-9_]{1,40}$`) are copied; the underlying message never is.
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
## Proxy (0.4.0)
|
|
111
|
+
|
|
112
|
+
The credential's optional `proxyUrl` is parsed by `proxy.ts` into the `{ protocol, host, port, auth }` shape of n8n's `IHttpRequestOptions.proxy`. `createTransport` passes it to `helpers.httpRequest`, where n8n's outbound HTTP layer builds an `HttpsProxyAgent` that tunnels HTTPS with CONNECT (axios's own proxy option is disabled there). The credential test's legacy `helpers.request` receives the same proxy as a URL string. Only `http:` and `https:` proxies without a path, query or fragment are accepted: n8n ignores a proxy URL with any other scheme with only a server-log warning and connects directly, which would silently defeat the purpose. Invalid input raises `PROXY_INVALID` before any request, and the value is never echoed. The proxy URL is part of the session-cache key, so sessions made through different routes never mix, and transport errors through a proxy carry `przez proxy` instead of the proxy address. Whether a given n8n version honours the `proxy` option has to be confirmed live on that deployment: the offline tests only prove that the option is handed to n8n.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@czlonkowski/n8n-nodes-librus",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Dwa węzły n8n do pobierania wiadomości z Librus Synergia i uruchamiania automatyzacji po nowych wiadomościach oraz po dodaniu lub zmianie wydarzeń w terminarzu.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|