@futdevpro/nts-dynamo 1.15.20 → 1.15.21

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.
Files changed (34) hide show
  1. package/_specifications/BACKLOG.md +2 -2
  2. package/build/_modules/logs/_models/file-log-entry.interface.d.ts +14 -0
  3. package/build/_modules/logs/_models/file-log-entry.interface.d.ts.map +1 -0
  4. package/build/_modules/logs/_models/file-log-entry.interface.js +3 -0
  5. package/build/_modules/logs/_models/file-log-entry.interface.js.map +1 -0
  6. package/build/_modules/logs/_models/file-log-read-result.interface.d.ts +36 -0
  7. package/build/_modules/logs/_models/file-log-read-result.interface.d.ts.map +1 -0
  8. package/build/_modules/logs/_models/file-log-read-result.interface.js +3 -0
  9. package/build/_modules/logs/_models/file-log-read-result.interface.js.map +1 -0
  10. package/build/_modules/logs/file-log.service.d.ts +46 -0
  11. package/build/_modules/logs/file-log.service.d.ts.map +1 -1
  12. package/build/_modules/logs/file-log.service.js +178 -0
  13. package/build/_modules/logs/file-log.service.js.map +1 -1
  14. package/build/_modules/logs/file-logs.controller.d.ts +41 -0
  15. package/build/_modules/logs/file-logs.controller.d.ts.map +1 -0
  16. package/build/_modules/logs/file-logs.controller.js +139 -0
  17. package/build/_modules/logs/file-logs.controller.js.map +1 -0
  18. package/build/_modules/logs/get-file-logs-routing-module.util.d.ts +32 -0
  19. package/build/_modules/logs/get-file-logs-routing-module.util.d.ts.map +1 -0
  20. package/build/_modules/logs/get-file-logs-routing-module.util.js +38 -0
  21. package/build/_modules/logs/get-file-logs-routing-module.util.js.map +1 -0
  22. package/build/_modules/logs/index.d.ts +4 -0
  23. package/build/_modules/logs/index.d.ts.map +1 -1
  24. package/build/_modules/logs/index.js +5 -1
  25. package/build/_modules/logs/index.js.map +1 -1
  26. package/package.json +1 -1
  27. package/src/_modules/logs/_models/file-log-entry.interface.ts +13 -0
  28. package/src/_modules/logs/_models/file-log-read-result.interface.ts +37 -0
  29. package/src/_modules/logs/file-log.service.spec.ts +139 -0
  30. package/src/_modules/logs/file-log.service.ts +183 -0
  31. package/src/_modules/logs/file-logs.controller.spec.ts +245 -0
  32. package/src/_modules/logs/file-logs.controller.ts +165 -0
  33. package/src/_modules/logs/get-file-logs-routing-module.util.ts +51 -0
  34. package/src/_modules/logs/index.ts +7 -0
@@ -36,11 +36,11 @@
36
36
  details: Új admin authentikációs mechanizmus bevezetése, ahol az admin API key-t environment variable-ből olvassuk (pl. DYNTS_ADMIN_API_KEY), és ezzel lehet védeni az érzékeny / admin endpointokat. Implementálva (2026-05-17): DyNTS_AdminApiKey_AuthService (singleton) — preProcess `.verify(req, res)` fn opt-in átadható `DyNTS_Endpoint_Params.preProcesses`-be vagy `DyNTS_getLogsRoutingModule({ authPreProcess })`-be. Default env var DYNTS_ADMIN_API_KEY, header x-admin-api-key + Authorization Bearer fallback. Konfig: `configure({ envVarName, headerName, allowAuthorizationBearer })`. Timing-safe compare (crypto.timingSafeEqual + length-mismatch dummy compare). Hibák: 500 ha env nincs, 401 ha header hiányzik/rossz. Env minden híváskor olvasott (nem cache-elt). 15/15 spec + 1148/0 full suite + smoke verifikálva. Foundational a BL-003 (log fetch) és BL-004 (errors retrofit) entry-knek.
37
37
 
38
38
  - [FEATURE] (BL-20260420-003) Server log file-ok lekérése admin endpointon keresztül
39
- status: pending
39
+ status: done
40
40
  priority: medium
41
41
  source: user
42
42
  area: backend
43
- details: A BL-20260420-001 file-based log rendszerre épülve egy új endpoint, amin keresztül le lehet kérni a szerverről a kiírt log file-ok tartalmát (pl. paged / range / tail módon). Az endpointot a BL-20260420-002 admin API key auth-tal kell védeni
43
+ details: A BL-20260420-001 file-based log rendszerre épülve egy új endpoint, amin keresztül le lehet kérni a szerverről a kiírt log file-ok tartalmát (pl. paged / range / tail módon). Implementálva (2026-05-17): DyNTS_FileLogs_Controller (GET /list + GET /file/:filename) + DyNTS_getFileLogsRoutingModule() factory + DyNTS_FileLog_Service bővítés (listLogFiles, readLogFile, getCurrentLogFilename). Olvasási módok: tail / head / range (max 10000 sor). Safeguards: filename whitelist regex prefix-szel, path traversal védelem (resolvedPath + sep ellenőrzés), 503/404/400 helyes status code-ok. Auth opt-in: `DyNTS_getFileLogsRoutingModule({ authPreProcess: adminAuth.verify })`. Default route /file-logs. 38/38 FileLog spec (24 service + 14 controller) + 1175/0 full suite + smoke 4/4 verifikálva.
44
44
 
45
45
  - [IMPROVEMENT] (BL-20260420-004) Errors endpointok opcionális admin API key védelme
46
46
  status: ⏳ pending
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Egy log fajl meta-adata a listazasban.
3
+ */
4
+ export interface DyNTS_FileLog_Entry {
5
+ /** Fajlnev (csak basename — NEM teljes path). */
6
+ name: string;
7
+ /** Fajlmeret byte-ban. */
8
+ sizeBytes: number;
9
+ /** Modositasi ido ms-ban (mtimeMs). */
10
+ mtimeMs: number;
11
+ /** Igaz, ha ez az aktualis aktiv session fajlja. */
12
+ isCurrent: boolean;
13
+ }
14
+ //# sourceMappingURL=file-log-entry.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-log-entry.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/logs/_models/file-log-entry.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=file-log-entry.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-log-entry.interface.js","sourceRoot":"","sources":["../../../../src/_modules/logs/_models/file-log-entry.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `readLogFile()` valaszobjektum.
3
+ */
4
+ export interface DyNTS_FileLog_ReadResult {
5
+ /** Fajlnev (csak basename). */
6
+ name: string;
7
+ /** Teljes fajlmeret byte-ban. */
8
+ sizeBytes: number;
9
+ /** A fajlban talalhato osszes sor szama. */
10
+ totalLines: number;
11
+ /** A visszaadott sorok. */
12
+ lines: string[];
13
+ /** Mod amiben olvastunk: 'tail' | 'head' | 'range'. */
14
+ mode: 'tail' | 'head' | 'range';
15
+ /** Visszaadott tartomany 1-based start (range/tail/head normalizalva). */
16
+ rangeStart: number;
17
+ /** Visszaadott tartomany 1-based end (inclusive). */
18
+ rangeEnd: number;
19
+ }
20
+ /**
21
+ * `readLogFile(name, options)` opciok.
22
+ *
23
+ * Egyetlen mod aktiv egyszerre. Prioritas: range > head > tail.
24
+ * Egyik sem megadott → default `tail: 200`.
25
+ */
26
+ export interface DyNTS_FileLog_ReadOptions {
27
+ /** Utolso N sor (default mod ha semmi mas nincs). */
28
+ tail?: number;
29
+ /** Elso N sor. */
30
+ head?: number;
31
+ /** 1-based line range start (inclusive). `rangeEnd` is kell. */
32
+ rangeStart?: number;
33
+ /** 1-based line range end (inclusive). */
34
+ rangeEnd?: number;
35
+ }
36
+ //# sourceMappingURL=file-log-read-result.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-log-read-result.interface.d.ts","sourceRoot":"","sources":["../../../../src/_modules/logs/_models/file-log-read-result.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAGD;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=file-log-read-result.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-log-read-result.interface.js","sourceRoot":"","sources":["../../../../src/_modules/logs/_models/file-log-read-result.interface.ts"],"names":[],"mappings":""}
@@ -1,4 +1,6 @@
1
1
  import { DyNTS_SingletonServiceBase } from '../../_services/base/singleton.service-base';
2
+ import { DyNTS_FileLog_Entry } from './_models/file-log-entry.interface';
3
+ import { DyNTS_FileLog_ReadOptions, DyNTS_FileLog_ReadResult } from './_models/file-log-read-result.interface';
2
4
  /**
3
5
  * File-based szerver log service — duplikalja a stdout/stderr-t per-session
4
6
  * log fajl(ok)ba, miközben a console kimenet erintetlenul marad. Az
@@ -48,6 +50,50 @@ export declare class DyNTS_FileLog_Service extends DyNTS_SingletonServiceBase {
48
50
  * ha az install() sikeresen lefutott; egyebkent ures string).
49
51
  */
50
52
  getCurrentLogPath(): string;
53
+ /**
54
+ * Az aktualis aktiv log fajl basename-je (NEM teljes path). Csak akkor
55
+ * nem-ures, ha az install() sikeresen lefutott.
56
+ */
57
+ getCurrentLogFilename(): string;
58
+ /**
59
+ * Aktiv log dir abszolut path-ja. Csak akkor nem-ures, ha az install()
60
+ * sikeresen lefutott.
61
+ */
62
+ getActiveLogDir(): string;
63
+ /**
64
+ * Aktiv filename prefix (a service config-jabol). Hasznalja a controller
65
+ * a request-fajlnev whitelist regex epitesehez.
66
+ */
67
+ getFilenamePrefix(): string;
68
+ /**
69
+ * Osszes log fajl listazasa az aktiv log dir-bol. Csak a service prefix-evel
70
+ * matchelo fajlokat veszi (`{prefix}*.log`).
71
+ *
72
+ * Rendezes: mtime DESC (legujabb elol). Hibakat csendben elnyel — ha a dir
73
+ * nem letezik vagy nem olvashato, ures array-t ad vissza.
74
+ */
75
+ listLogFiles(): DyNTS_FileLog_Entry[];
76
+ /**
77
+ * Egy konkret log fajl olvasasa, line-based mode-ban (tail / head / range).
78
+ *
79
+ * **Biztonsagi safeguards:**
80
+ * - Filename whitelist: `{prefix}*.log` mintara matchelo nev kotelezo
81
+ * - Path resolution `path.resolve(activeLogDir, name)` + `startsWith(activeLogDir)` (path traversal vedelem)
82
+ * - Sor szam cap: `MAX_READ_LINES` (10000)
83
+ *
84
+ * **Hibak:**
85
+ * - Throw `Error('not installed')` ha a service nincs install-olva
86
+ * - Throw `Error('invalid filename')` ha a name nem matchel a whitelist-re VAGY kilep az activeLogDir-bol
87
+ * - Throw `Error('file not found')` ha a fajl nem letezik
88
+ *
89
+ * A hivot kell vigyaznia hogy ezeket HTTP status code-okra forditja.
90
+ */
91
+ readLogFile(name: string, options?: DyNTS_FileLog_ReadOptions): DyNTS_FileLog_ReadResult;
92
+ /**
93
+ * Filename whitelist ellenorzes. Csak a service prefix-evel matchelo,
94
+ * biztonsagos karakterkeszletu fajlnev megengedett.
95
+ */
96
+ private isValidFilename;
51
97
  /**
52
98
  * Telepitve van-e (csak akkor true, ha az enabled === true es a setup nem bukott).
53
99
  */
@@ -1 +1 @@
1
- {"version":3,"file":"file-log.service.d.ts","sourceRoot":"","sources":["../../../src/_modules/logs/file-log.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAsBzF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,qBAAsB,SAAQ,0BAA0B;IAEnE,MAAM,CAAC,WAAW,IAAI,qBAAqB;IAI3C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,gBAAgB,CAAkD;IAC1E,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,mBAAmB,CAAa;IAExC,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,mBAAmB,CAA4C;IAGvE;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAoEf;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,mBAAmB,IAAI,IAAI;IAgB3B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAsBhB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAWd;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;CAoCvB"}
1
+ {"version":3,"file":"file-log.service.d.ts","sourceRoot":"","sources":["../../../src/_modules/logs/file-log.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAEzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AA2B/G;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,qBAAsB,SAAQ,0BAA0B;IAEnE,MAAM,CAAC,WAAW,IAAI,qBAAqB;IAI3C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,gBAAgB,CAAkD;IAC1E,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,mBAAmB,CAAa;IAExC,OAAO,CAAC,mBAAmB,CAA4C;IACvE,OAAO,CAAC,mBAAmB,CAA4C;IAGvE;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IAoEf;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;OAGG;IACH,qBAAqB,IAAI,MAAM;IAK/B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;;;;;OAMG;IACH,YAAY,IAAI,mBAAmB,EAAE;IAiCrC;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,yBAA8B,GAAG,wBAAwB;IAiF5F;;;OAGG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;;OAGG;IACH,mBAAmB,IAAI,IAAI;IAgB3B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAsBhB;;;OAGG;IACH,OAAO,CAAC,MAAM;IAWd;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;CAoCvB"}
@@ -21,6 +21,10 @@ const DEFAULT_INCLUDE_STDOUT = true;
21
21
  const DEFAULT_INCLUDE_STDERR = true;
22
22
  /** ANSI escape code regex (szin/formazas kodok). */
23
23
  const ANSI_ESCAPE_REGEX = /\x1b\[[0-9;]*[a-zA-Z]/g;
24
+ /** Max sor szam egy `readLogFile()` hivasra — vedi a memory-t nagy fajloknal. */
25
+ const MAX_READ_LINES = 10000;
26
+ /** Default tail sor szam (ha semmi mas mod nincs megadva). */
27
+ const DEFAULT_READ_TAIL = 200;
24
28
  /**
25
29
  * File-based szerver log service — duplikalja a stdout/stderr-t per-session
26
30
  * log fajl(ok)ba, miközben a console kimenet erintetlenul marad. Az
@@ -135,6 +139,180 @@ class DyNTS_FileLog_Service extends singleton_service_base_1.DyNTS_SingletonServ
135
139
  getCurrentLogPath() {
136
140
  return this.currentLogPath;
137
141
  }
142
+ /**
143
+ * Az aktualis aktiv log fajl basename-je (NEM teljes path). Csak akkor
144
+ * nem-ures, ha az install() sikeresen lefutott.
145
+ */
146
+ getCurrentLogFilename() {
147
+ if (!this.currentLogPath) {
148
+ return '';
149
+ }
150
+ return path.basename(this.currentLogPath);
151
+ }
152
+ /**
153
+ * Aktiv log dir abszolut path-ja. Csak akkor nem-ures, ha az install()
154
+ * sikeresen lefutott.
155
+ */
156
+ getActiveLogDir() {
157
+ return this.activeLogDir;
158
+ }
159
+ /**
160
+ * Aktiv filename prefix (a service config-jabol). Hasznalja a controller
161
+ * a request-fajlnev whitelist regex epitesehez.
162
+ */
163
+ getFilenamePrefix() {
164
+ return this.filenamePrefix;
165
+ }
166
+ /**
167
+ * Osszes log fajl listazasa az aktiv log dir-bol. Csak a service prefix-evel
168
+ * matchelo fajlokat veszi (`{prefix}*.log`).
169
+ *
170
+ * Rendezes: mtime DESC (legujabb elol). Hibakat csendben elnyel — ha a dir
171
+ * nem letezik vagy nem olvashato, ures array-t ad vissza.
172
+ */
173
+ listLogFiles() {
174
+ if (!this.activeLogDir || !this.installed) {
175
+ return [];
176
+ }
177
+ const currentBasename = this.getCurrentLogFilename();
178
+ const entries = [];
179
+ try {
180
+ const dirContents = fs.readdirSync(this.activeLogDir);
181
+ for (const name of dirContents) {
182
+ if (!name.startsWith(this.filenamePrefix) || !name.endsWith(DEFAULT_FILENAME_SUFFIX)) {
183
+ continue;
184
+ }
185
+ const fullPath = path.join(this.activeLogDir, name);
186
+ try {
187
+ const stats = fs.statSync(fullPath);
188
+ if (!stats.isFile()) {
189
+ continue;
190
+ }
191
+ entries.push({
192
+ name: name,
193
+ sizeBytes: stats.size,
194
+ mtimeMs: stats.mtimeMs,
195
+ isCurrent: name === currentBasename,
196
+ });
197
+ }
198
+ catch {
199
+ // egy fajlonkenti hiba ne szakitsa meg a listat
200
+ }
201
+ }
202
+ }
203
+ catch {
204
+ // dir read hiba → ures listat adunk vissza
205
+ return [];
206
+ }
207
+ // Legujabb elol
208
+ entries.sort((a, b) => b.mtimeMs - a.mtimeMs);
209
+ return entries;
210
+ }
211
+ /**
212
+ * Egy konkret log fajl olvasasa, line-based mode-ban (tail / head / range).
213
+ *
214
+ * **Biztonsagi safeguards:**
215
+ * - Filename whitelist: `{prefix}*.log` mintara matchelo nev kotelezo
216
+ * - Path resolution `path.resolve(activeLogDir, name)` + `startsWith(activeLogDir)` (path traversal vedelem)
217
+ * - Sor szam cap: `MAX_READ_LINES` (10000)
218
+ *
219
+ * **Hibak:**
220
+ * - Throw `Error('not installed')` ha a service nincs install-olva
221
+ * - Throw `Error('invalid filename')` ha a name nem matchel a whitelist-re VAGY kilep az activeLogDir-bol
222
+ * - Throw `Error('file not found')` ha a fajl nem letezik
223
+ *
224
+ * A hivot kell vigyaznia hogy ezeket HTTP status code-okra forditja.
225
+ */
226
+ readLogFile(name, options = {}) {
227
+ if (!this.installed || !this.activeLogDir) {
228
+ throw new Error('FileLog service not installed');
229
+ }
230
+ // Whitelist regex: csak a service prefix-evel matchelo fajlnev
231
+ if (!this.isValidFilename(name)) {
232
+ throw new Error('invalid filename');
233
+ }
234
+ // Path resolve + traversal check
235
+ const resolvedPath = path.resolve(this.activeLogDir, name);
236
+ const resolvedDir = path.resolve(this.activeLogDir);
237
+ // path.sep + sufix ellenőrzéssel megelőzzük a hasonló prefixű dir átverést
238
+ // (pl. '/logs' vs '/logs-other'); a resolvedPath az activeLogDir-en BELUL
239
+ // kell legyen.
240
+ if (!resolvedPath.startsWith(resolvedDir + path.sep) && resolvedPath !== resolvedDir) {
241
+ throw new Error('invalid filename');
242
+ }
243
+ if (!fs.existsSync(resolvedPath)) {
244
+ throw new Error('file not found');
245
+ }
246
+ const stats = fs.statSync(resolvedPath);
247
+ if (!stats.isFile()) {
248
+ throw new Error('file not found');
249
+ }
250
+ // Olvass + split soroka. UTF-8 encoding alapertelmezett. Nagy fajloknal a
251
+ // teljes betoltes nem ideal, de a 10000-soros cap es a Stream-based
252
+ // optimization egy kesobbi iteracio lehet ha kell.
253
+ const fullContent = fs.readFileSync(resolvedPath, 'utf-8');
254
+ // Split a sorvegekre — utolso ures stringet kivagjuk ha a fajl
255
+ // sorvégzodessel zarult (regenerált sor szám hibakerulest celozzuk meg)
256
+ const allLines = fullContent.split(/\r?\n/);
257
+ if (allLines.length > 0 && allLines[allLines.length - 1] === '') {
258
+ allLines.pop();
259
+ }
260
+ const totalLines = allLines.length;
261
+ // Mod meghatarozasa: range > head > tail
262
+ let mode;
263
+ let startIdx;
264
+ let endIdx; // exclusive
265
+ if (options.rangeStart !== undefined && options.rangeEnd !== undefined) {
266
+ mode = 'range';
267
+ const start1 = Math.max(1, Math.floor(options.rangeStart));
268
+ const end1 = Math.max(start1, Math.floor(options.rangeEnd));
269
+ startIdx = Math.max(0, Math.min(totalLines, start1 - 1));
270
+ endIdx = Math.max(startIdx, Math.min(totalLines, end1));
271
+ // Cap
272
+ if (endIdx - startIdx > MAX_READ_LINES) {
273
+ endIdx = startIdx + MAX_READ_LINES;
274
+ }
275
+ }
276
+ else if (options.head !== undefined) {
277
+ mode = 'head';
278
+ const headN = Math.min(Math.max(1, Math.floor(options.head)), MAX_READ_LINES);
279
+ startIdx = 0;
280
+ endIdx = Math.min(totalLines, headN);
281
+ }
282
+ else {
283
+ mode = 'tail';
284
+ const tailN = Math.min(Math.max(1, Math.floor(options.tail ?? DEFAULT_READ_TAIL)), MAX_READ_LINES);
285
+ startIdx = Math.max(0, totalLines - tailN);
286
+ endIdx = totalLines;
287
+ }
288
+ const lines = allLines.slice(startIdx, endIdx);
289
+ return {
290
+ name: path.basename(resolvedPath),
291
+ sizeBytes: stats.size,
292
+ totalLines: totalLines,
293
+ lines: lines,
294
+ mode: mode,
295
+ rangeStart: startIdx + 1, // 1-based, inclusive
296
+ rangeEnd: Math.max(startIdx, endIdx), // 1-based, inclusive ha lines van; egyebkent 0-szeru
297
+ };
298
+ }
299
+ /**
300
+ * Filename whitelist ellenorzes. Csak a service prefix-evel matchelo,
301
+ * biztonsagos karakterkeszletu fajlnev megengedett.
302
+ */
303
+ isValidFilename(name) {
304
+ if (typeof name !== 'string' || name.length === 0 || name.length > 256) {
305
+ return false;
306
+ }
307
+ // Path-szeparatorokat kifejezetten tiltjuk (mar a regex is, de gyors check)
308
+ if (name.includes('/') || name.includes('\\') || name.includes('..')) {
309
+ return false;
310
+ }
311
+ // `{prefix}[\w\-.]+\.log` — szigoru ASCII set
312
+ const escapedPrefix = this.filenamePrefix.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
313
+ const regex = new RegExp(`^${escapedPrefix}[\\w\\-.]+\\.log$`);
314
+ return regex.test(name);
315
+ }
138
316
  /**
139
317
  * Telepitve van-e (csak akkor true, ha az enabled === true es a setup nem bukott).
140
318
  */
@@ -1 +1 @@
1
- {"version":3,"file":"file-log.service.js","sourceRoot":"","sources":["../../../src/_modules/logs/file-log.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-log.service.js","sourceRoot":"","sources":["../../../src/_modules/logs/file-log.service.ts"],"names":[],"mappings":";;;;AAAA,+CAAyB;AACzB,mDAA6B;AAE7B,wFAAyF;AACzF,oFAAiF;AAKjF;;;GAGG;AACH,MAAM,eAAe,GAAW,eAAe,CAAC;AAChD,MAAM,uBAAuB,GAAW,SAAS,CAAC;AAClD,MAAM,uBAAuB,GAAW,MAAM,CAAC;AAC/C,MAAM,wBAAwB,GAAW,EAAE,CAAC;AAC5C,MAAM,iBAAiB,GAAW,EAAE,CAAC;AACrC,MAAM,sBAAsB,GAAW,EAAE,CAAC;AAC1C,MAAM,kBAAkB,GAAY,IAAI,CAAC;AACzC,MAAM,sBAAsB,GAAY,IAAI,CAAC;AAC7C,MAAM,sBAAsB,GAAY,IAAI,CAAC;AAE7C,oDAAoD;AACpD,MAAM,iBAAiB,GAAW,wBAAwB,CAAC;AAE3D,iFAAiF;AACjF,MAAM,cAAc,GAAW,KAAK,CAAC;AAErC,8DAA8D;AAC9D,MAAM,iBAAiB,GAAW,GAAG,CAAC;AAGtC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAa,qBAAsB,SAAQ,mDAA0B;IAEnE,MAAM,CAAC,WAAW;QAChB,OAAO,qBAAqB,CAAC,oBAAoB,EAA2B,CAAC;IAC/E,CAAC;IAEO,SAAS,GAAY,KAAK,CAAC;IAC3B,YAAY,GAAW,EAAE,CAAC;IAC1B,cAAc,GAAW,uBAAuB,CAAC;IACjD,gBAAgB,GAAW,wBAAwB,GAAG,IAAI,GAAG,IAAI,CAAC;IAClE,QAAQ,GAAW,iBAAiB,CAAC;IACrC,aAAa,GAAW,sBAAsB,CAAC;IAC/C,gBAAgB,GAAY,kBAAkB,CAAC;IAC/C,cAAc,GAAW,EAAE,CAAC;IAC5B,mBAAmB,GAAW,CAAC,CAAC;IAEhC,mBAAmB,GAAuC,IAAI,CAAC;IAC/D,mBAAmB,GAAuC,IAAI,CAAC;IAGvE;;;;;;OAMG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAE/B,MAAM,MAAM,GAAG,6CAAqB,CAAC,YAAY,EAAE,QAAQ,CAAC;QAC5D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAE3C,kCAAkC;QAClC,IAAI,CAAC,YAAY,GAAS,MAAM,CAAC,MAAM,IAAe,eAAe,CAAC;QACtE,IAAI,CAAC,cAAc,GAAO,MAAM,CAAC,cAAc,IAAO,uBAAuB,CAAC;QAC9E,IAAI,CAAC,gBAAgB,GAAK,CAAC,MAAM,CAAC,aAAa,IAAO,wBAAwB,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QAC9F,IAAI,CAAC,QAAQ,GAAa,MAAM,CAAC,QAAQ,IAAa,iBAAiB,CAAC;QACxE,IAAI,CAAC,aAAa,GAAQ,MAAM,CAAC,aAAa,IAAQ,sBAAsB,CAAC;QAC7E,IAAI,CAAC,gBAAgB,GAAK,MAAM,CAAC,SAAS,IAAY,kBAAkB,CAAC;QACzE,MAAM,aAAa,GAAY,MAAM,CAAC,aAAa,IAAI,sBAAsB,CAAC;QAC9E,MAAM,aAAa,GAAY,MAAM,CAAC,aAAa,IAAI,sBAAsB,CAAC;QAE9E,+BAA+B;QAC/B,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBACtC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;YACnE,OAAO;QACT,CAAC;QAED,0EAA0E;QAC1E,gDAAgD;QAChD,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,mCAAmC;QACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAE7B,4DAA4D;QAC5D,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,IAAI,GAA0B,IAAI,CAAC;YACzC,8DAA8D;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,kBAAkB,CAAC,GAAG,IAAW;gBAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,8DAA8D;gBAC9D,OAAQ,IAAI,CAAC,mBAA2B,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpD,8DAA8D;YAC9D,CAAQ,CAAC;QACX,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,IAAI,GAA0B,IAAI,CAAC;YACzC,8DAA8D;YAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,kBAAkB,CAAC,GAAG,IAAW;gBAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvB,8DAA8D;gBAC9D,OAAQ,IAAI,CAAC,mBAA2B,CAAC,GAAG,IAAI,CAAC,CAAC;gBACpD,8DAA8D;YAC9D,CAAQ,CAAC;QACX,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,wDAAwD;QACxD,IAAI,CAAC,QAAQ,CACX,6CAA6C,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU;YAC/E,cAAc,OAAO,CAAC,GAAG,WAAW,OAAO,CAAC,OAAO,UAAU;YAC7D,oBAAoB,IAAI,CAAC,aAAa,qBAAqB,IAAI,CAAC,QAAQ,eAAe,MAAM,CAAC,aAAa,IAAI,wBAAwB,cAAc,CACtJ,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QACzD,MAAM,eAAe,GAAW,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7D,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,IAAI,CAAC;YACH,MAAM,WAAW,GAAa,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACnG,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC5D,IAAI,CAAC;oBACH,MAAM,KAAK,GAAa,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;wBAAC,SAAS;oBAAC,CAAC;oBAClC,OAAO,CAAC,IAAI,CAAC;wBACX,IAAI,EAAO,IAAI;wBACf,SAAS,EAAE,KAAK,CAAC,IAAI;wBACrB,OAAO,EAAI,KAAK,CAAC,OAAO;wBACxB,SAAS,EAAE,IAAI,KAAK,eAAe;qBACpC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,gDAAgD;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,gBAAgB;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAsB,EAAE,CAAsB,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;QAChG,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,IAAY,EAAE,UAAqC,EAAE;QAC/D,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,iCAAiC;QACjC,MAAM,YAAY,GAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,WAAW,GAAW,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,2EAA2E;QAC3E,0EAA0E;QAC1E,eAAe;QACf,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;YACrF,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,0EAA0E;QAC1E,oEAAoE;QACpE,mDAAmD;QACnD,MAAM,WAAW,GAAW,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACnE,+DAA+D;QAC/D,wEAAwE;QACxE,MAAM,QAAQ,GAAa,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAChE,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;QACD,MAAM,UAAU,GAAW,QAAQ,CAAC,MAAM,CAAC;QAE3C,yCAAyC;QACzC,IAAI,IAA+B,CAAC;QACpC,IAAI,QAAgB,CAAC;QACrB,IAAI,MAAc,CAAC,CAAE,YAAY;QAEjC,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACvE,IAAI,GAAG,OAAO,CAAC;YACf,MAAM,MAAM,GAAW,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACnE,MAAM,IAAI,GAAW,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,GAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1D,MAAM;YACN,IAAI,MAAM,GAAG,QAAQ,GAAG,cAAc,EAAE,CAAC;gBACvC,MAAM,GAAG,QAAQ,GAAG,cAAc,CAAC;YACrC,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,GAAG,MAAM,CAAC;YACd,MAAM,KAAK,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YACtF,QAAQ,GAAG,CAAC,CAAC;YACb,MAAM,GAAK,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,CAAC;YACd,MAAM,KAAK,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;YAC3G,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;YAC3C,MAAM,GAAK,UAAU,CAAC;QACxB,CAAC;QAED,MAAM,KAAK,GAAa,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEzD,OAAO;YACL,IAAI,EAAQ,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YACvC,SAAS,EAAG,KAAK,CAAC,IAAI;YACtB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAO,KAAK;YACjB,IAAI,EAAQ,IAAI;YAChB,UAAU,EAAE,QAAQ,GAAG,CAAC,EAAwB,qBAAqB;YACrE,QAAQ,EAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAU,qDAAqD;SACtG,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,IAAY;QAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QACzF,4EAA4E;QAC5E,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;QACvF,8CAA8C;QAC9C,MAAM,aAAa,GAAW,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACzF,MAAM,KAAK,GAAW,IAAI,MAAM,CAAC,IAAI,aAAa,mBAAmB,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,mBAAmB;QACjB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAChD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAChD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAC/B,CAAC;IAGD;;;;OAIG;IACK,oBAAoB;QAC1B,MAAM,GAAG,GAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAW,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAW,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAClE,MAAM,GAAG,GAAW,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAW,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAW,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,MAAM,GAAW,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,GAAG,uBAAuB,EAAE,CAAC;IACvH,CAAC;IAGD;;;;OAIG;IACK,QAAQ,CAAC,IAAyB;QACxC,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YAErC,MAAM,QAAQ,GAAW,OAAO,IAAI,KAAK,QAAQ;gBAC/C,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,OAAO,GAAW,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnG,MAAM,UAAU,GAAW,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAE/D,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,CAAC,mBAAmB,IAAI,UAAU,CAAC;YAEvC,mBAAmB;YACnB,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;QAC1C,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,MAAM;QACZ,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IAGD;;;;;;;OAOG;IACK,cAAc;QACpB,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YAElD,MAAM,QAAQ,GAAW,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAC/E,MAAM,OAAO,GAAa,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAG5D,MAAM,aAAa,GAAe,EAAE,CAAC;YAErC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACrG,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC7D,IAAI,CAAC;oBACH,MAAM,KAAK,GAAa,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC9C,aAAa,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;YACH,CAAC;YAED,2DAA2D;YAC3D,aAAa,CAAC,IAAI,CAAC,CAAC,CAAW,EAAE,CAAW,EAAU,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;YAEhF,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtD,MAAM,IAAI,GAAa,aAAa,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,WAAW,GAAY,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;gBACrD,MAAM,cAAc,GAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;gBACnD,IAAI,WAAW,IAAI,cAAc,EAAE,CAAC;oBAClC,IAAI,CAAC;wBAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;CACF;AAzZD,sDAyZC"}
@@ -0,0 +1,41 @@
1
+ import { Request, Response } from 'express';
2
+ import { DyNTS_Controller } from '../../_services/route/controller.service';
3
+ /**
4
+ * Config a `DyNTS_FileLogs_Controller`-hez (opcionalis auth pre-process).
5
+ */
6
+ export interface DyNTS_FileLogsController_Config {
7
+ /**
8
+ * Opcionalis auth pre-process — ha megadod, a controller-en levo endpointok
9
+ * vedettek. Tipikusan: `DyNTS_AdminApiKey_AuthService.getInstance().verify`.
10
+ */
11
+ authPreProcess?: (req: Request, res: Response) => Promise<void>;
12
+ }
13
+ /**
14
+ * NTS File Logs Controller — endpointok a `DyNTS_FileLog_Service` altal irt
15
+ * log fajl-ok lekeresehez.
16
+ *
17
+ * **Endpoint-ok:**
18
+ * GET /list — log fajlok listazasa (basename, sizeBytes, mtimeMs, isCurrent)
19
+ * GET /file/:filename — egy fajl olvasasa, line-based: ?tail=N | ?head=N | ?rangeStart=A&rangeEnd=B
20
+ *
21
+ * **Mount-olas (host app):**
22
+ * app.use(DyNTS_getFileLogsRoutingModule({
23
+ * authPreProcess: adminAuth.verify, // opcionalis
24
+ * route: '/admin/file-logs', // default '/file-logs'
25
+ * }));
26
+ *
27
+ * **Status code-ok:**
28
+ * 200 — sikeres response (lehet ures lista is)
29
+ * 400 — invalid query parameter (tail/head/range)
30
+ * 401 — auth pre-process throw-ol DyFM_Error(401)
31
+ * 404 — fajl nem letezik vagy nem megfelelo nev (whitelist failure / path traversal kiserlet)
32
+ * 503 — a DyNTS_FileLog_Service nincs install-olva (vagy file_log.enabled=false)
33
+ */
34
+ export declare class DyNTS_FileLogs_Controller extends DyNTS_Controller {
35
+ private static config;
36
+ static configure(config: DyNTS_FileLogsController_Config): void;
37
+ static getInstance(): DyNTS_FileLogs_Controller;
38
+ private readonly fileLogService;
39
+ setupEndpoints(): void;
40
+ }
41
+ //# sourceMappingURL=file-logs.controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-logs.controller.d.ts","sourceRoot":"","sources":["../../../src/_modules/logs/file-logs.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAQ5E;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjE;AAGD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,yBAA0B,SAAQ,gBAAgB;IAE7D,OAAO,CAAC,MAAM,CAAC,MAAM,CAAuC;IAE5D,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,+BAA+B,GAAG,IAAI;IAI/D,MAAM,CAAC,WAAW,IAAI,yBAAyB;IAI/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8D;IAE7F,cAAc,IAAI,IAAI;CAyGvB"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DyNTS_FileLogs_Controller = void 0;
4
+ const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
5
+ const controller_service_1 = require("../../_services/route/controller.service");
6
+ const endpoint_params_control_model_1 = require("../../_models/control-models/endpoint-params.control-model");
7
+ const file_log_service_1 = require("./file-log.service");
8
+ /**
9
+ * NTS File Logs Controller — endpointok a `DyNTS_FileLog_Service` altal irt
10
+ * log fajl-ok lekeresehez.
11
+ *
12
+ * **Endpoint-ok:**
13
+ * GET /list — log fajlok listazasa (basename, sizeBytes, mtimeMs, isCurrent)
14
+ * GET /file/:filename — egy fajl olvasasa, line-based: ?tail=N | ?head=N | ?rangeStart=A&rangeEnd=B
15
+ *
16
+ * **Mount-olas (host app):**
17
+ * app.use(DyNTS_getFileLogsRoutingModule({
18
+ * authPreProcess: adminAuth.verify, // opcionalis
19
+ * route: '/admin/file-logs', // default '/file-logs'
20
+ * }));
21
+ *
22
+ * **Status code-ok:**
23
+ * 200 — sikeres response (lehet ures lista is)
24
+ * 400 — invalid query parameter (tail/head/range)
25
+ * 401 — auth pre-process throw-ol DyFM_Error(401)
26
+ * 404 — fajl nem letezik vagy nem megfelelo nev (whitelist failure / path traversal kiserlet)
27
+ * 503 — a DyNTS_FileLog_Service nincs install-olva (vagy file_log.enabled=false)
28
+ */
29
+ class DyNTS_FileLogs_Controller extends controller_service_1.DyNTS_Controller {
30
+ static config = {};
31
+ static configure(config) {
32
+ DyNTS_FileLogs_Controller.config = config;
33
+ }
34
+ static getInstance() {
35
+ return DyNTS_FileLogs_Controller.getSingletonInstance();
36
+ }
37
+ fileLogService = file_log_service_1.DyNTS_FileLog_Service.getInstance();
38
+ setupEndpoints() {
39
+ const preProcesses = [];
40
+ if (DyNTS_FileLogs_Controller.config.authPreProcess) {
41
+ preProcesses.push(DyNTS_FileLogs_Controller.config.authPreProcess);
42
+ }
43
+ this.endpoints = [
44
+ // GET /list — fajllista
45
+ new endpoint_params_control_model_1.DyNTS_Endpoint_Params({
46
+ name: 'listFileLogs',
47
+ type: fsm_dynamo_1.DyFM_HttpCallType.get,
48
+ endpoint: '/list',
49
+ preProcesses: preProcesses,
50
+ logRequest: false,
51
+ tasks: [
52
+ async (req, res) => {
53
+ if (!this.fileLogService.isInstalled()) {
54
+ res.status(503).send({
55
+ error: 'FileLog service is not installed.',
56
+ hint: 'Set DyNTS_global_settings.log_settings.file_log.enabled = true and call DyNTS_FileLog_Service.getInstance().install() at server startup.',
57
+ });
58
+ return;
59
+ }
60
+ const files = this.fileLogService.listLogFiles();
61
+ const totalSizeBytes = files.reduce((acc, f) => acc + f.sizeBytes, 0);
62
+ res.send({
63
+ count: files.length,
64
+ totalSizeBytes: totalSizeBytes,
65
+ files: files,
66
+ });
67
+ },
68
+ ],
69
+ }),
70
+ // GET /file/:filename — egy fajl olvasasa tail / head / range modban
71
+ new endpoint_params_control_model_1.DyNTS_Endpoint_Params({
72
+ name: 'readFileLog',
73
+ type: fsm_dynamo_1.DyFM_HttpCallType.get,
74
+ endpoint: '/file/:filename',
75
+ preProcesses: preProcesses,
76
+ logRequest: false,
77
+ tasks: [
78
+ async (req, res) => {
79
+ if (!this.fileLogService.isInstalled()) {
80
+ res.status(503).send({
81
+ error: 'FileLog service is not installed.',
82
+ });
83
+ return;
84
+ }
85
+ const filename = req.params.filename;
86
+ const options = {};
87
+ // Mod prioritas: range > head > tail. Csak a megadott mezo aktivalja az adott modot.
88
+ if (req.query.rangeStart !== undefined && req.query.rangeEnd !== undefined) {
89
+ const start = parseInt(req.query.rangeStart, 10);
90
+ const end = parseInt(req.query.rangeEnd, 10);
91
+ if (!Number.isFinite(start) || !Number.isFinite(end) || start < 1 || end < start) {
92
+ res.status(400).send({ error: 'Invalid rangeStart/rangeEnd query parameters' });
93
+ return;
94
+ }
95
+ options.rangeStart = start;
96
+ options.rangeEnd = end;
97
+ }
98
+ else if (req.query.head !== undefined) {
99
+ const head = parseInt(req.query.head, 10);
100
+ if (!Number.isFinite(head) || head < 1) {
101
+ res.status(400).send({ error: 'Invalid head query parameter' });
102
+ return;
103
+ }
104
+ options.head = head;
105
+ }
106
+ else if (req.query.tail !== undefined) {
107
+ const tail = parseInt(req.query.tail, 10);
108
+ if (!Number.isFinite(tail) || tail < 1) {
109
+ res.status(400).send({ error: 'Invalid tail query parameter' });
110
+ return;
111
+ }
112
+ options.tail = tail;
113
+ }
114
+ // egyik query mezo sincs → service alapertelmezett tail (200)
115
+ try {
116
+ const result = this.fileLogService.readLogFile(filename, options);
117
+ res.send(result);
118
+ }
119
+ catch (err) {
120
+ const msg = err instanceof Error ? err.message : String(err);
121
+ if (msg === 'FileLog service not installed') {
122
+ res.status(503).send({ error: msg });
123
+ return;
124
+ }
125
+ if (msg === 'invalid filename' || msg === 'file not found') {
126
+ res.status(404).send({ error: msg, filename: filename });
127
+ return;
128
+ }
129
+ // Egyeb hibak (pl. FS read failure) — 500
130
+ res.status(500).send({ error: msg });
131
+ }
132
+ },
133
+ ],
134
+ }),
135
+ ];
136
+ }
137
+ }
138
+ exports.DyNTS_FileLogs_Controller = DyNTS_FileLogs_Controller;
139
+ //# sourceMappingURL=file-logs.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-logs.controller.js","sourceRoot":"","sources":["../../../src/_modules/logs/file-logs.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { DyNTS_RoutingModule } from '../../_services/route/routing-module.service';
2
+ import { DyNTS_FileLogsController_Config } from './file-logs.controller';
3
+ /**
4
+ * Config a `DyNTS_getFileLogsRoutingModule()`-hoz.
5
+ */
6
+ export interface DyNTS_FileLogsRoutingModule_Config extends DyNTS_FileLogsController_Config {
7
+ /** Route prefix. Default: `/file-logs`. */
8
+ route?: string;
9
+ }
10
+ /**
11
+ * Letrehoz egy routing module-t a `DyNTS_FileLogs_Controller`-rel.
12
+ *
13
+ * **Hasznalat (auth nelkul, fejlesztoi env):**
14
+ * ```ts
15
+ * app.use(DyNTS_getFileLogsRoutingModule());
16
+ * ```
17
+ *
18
+ * **Hasznalat (admin API key auth-tal — javasolt produkcios env-re):**
19
+ * ```ts
20
+ * const adminAuth = DyNTS_AdminApiKey_AuthService.getInstance();
21
+ * app.use(DyNTS_getFileLogsRoutingModule({
22
+ * authPreProcess: adminAuth.verify,
23
+ * route: '/admin/file-logs', // opcionalis override
24
+ * }));
25
+ * ```
26
+ *
27
+ * **Elofeltetel:** `DyNTS_FileLog_Service.getInstance().install()` lefutott
28
+ * a szerver startup-on (es a `log_settings.file_log.enabled = true`).
29
+ * Egyebkent a controller endpointjai 503-at adnak.
30
+ */
31
+ export declare function DyNTS_getFileLogsRoutingModule(config?: DyNTS_FileLogsRoutingModule_Config): DyNTS_RoutingModule;
32
+ //# sourceMappingURL=get-file-logs-routing-module.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-file-logs-routing-module.util.d.ts","sourceRoot":"","sources":["../../../src/_modules/logs/get-file-logs-routing-module.util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAA6B,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAGpG;;GAEG;AACH,MAAM,WAAW,kCAAmC,SAAQ,+BAA+B;IACzF,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,8BAA8B,CAC5C,MAAM,CAAC,EAAE,kCAAkC,GAC1C,mBAAmB,CAYrB"}