From 44cd9ab0016d907f19d4f3cf10e77a5ae23e0201 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 4 May 2026 13:50:15 +0200 Subject: [PATCH] Initial commit: LogMaster with Viewer Collector Monitor modes --- .dockerignore | 9 + .env.collector | 24 + .env.example | 24 + .env.monitor | 12 + .env.viewer | 15 + .gitea/workflows/ci.yaml | 64 + .gitignore | 4 + .vscode/settings.json | 2 + DOCS.md | 690 + Dockerfile | 38 + README.md | 44 + collector-data/_streams.json | 58 + ...app-server_2026-05-04T09-07-20-156Z.log.gz | Bin 0 -> 220 bytes ...th-service_2026-05-02T14-43-01-876Z.log.gz | Bin 0 -> 4142 bytes ...th-service_2026-05-02T14-53-02-035Z.log.gz | Bin 0 -> 4081 bytes ...th-service_2026-05-02T15-03-02-176Z.log.gz | Bin 0 -> 4408 bytes ...th-service_2026-05-02T15-13-02-355Z.log.gz | Bin 0 -> 4096 bytes ...th-service_2026-05-02T15-23-02-525Z.log.gz | Bin 0 -> 4310 bytes ...th-service_2026-05-02T15-33-02-728Z.log.gz | Bin 0 -> 4108 bytes ...th-service_2026-05-02T15-43-02-883Z.log.gz | Bin 0 -> 4466 bytes ...th-service_2026-05-02T15-53-03-023Z.log.gz | Bin 0 -> 4343 bytes ...th-service_2026-05-02T16-03-03-174Z.log.gz | Bin 0 -> 3925 bytes ...th-service_2026-05-02T16-13-03-324Z.log.gz | Bin 0 -> 4229 bytes ...th-service_2026-05-02T16-23-03-499Z.log.gz | Bin 0 -> 4201 bytes ...th-service_2026-05-02T16-33-03-671Z.log.gz | Bin 0 -> 4268 bytes ...th-service_2026-05-02T16-43-03-772Z.log.gz | Bin 0 -> 4337 bytes ...th-service_2026-05-02T16-53-03-961Z.log.gz | Bin 0 -> 4349 bytes ...th-service_2026-05-02T17-03-04-098Z.log.gz | Bin 0 -> 3989 bytes ...th-service_2026-05-02T17-13-04-225Z.log.gz | Bin 0 -> 4139 bytes ...th-service_2026-05-02T17-23-04-392Z.log.gz | Bin 0 -> 4251 bytes ...th-service_2026-05-02T17-33-04-572Z.log.gz | Bin 0 -> 4283 bytes ...th-service_2026-05-02T17-43-04-725Z.log.gz | Bin 0 -> 4291 bytes ...th-service_2026-05-02T17-53-04-876Z.log.gz | Bin 0 -> 4194 bytes ...th-service_2026-05-02T18-03-04-988Z.log.gz | Bin 0 -> 4204 bytes ...th-service_2026-05-02T18-13-05-086Z.log.gz | Bin 0 -> 4075 bytes ...th-service_2026-05-02T18-23-05-266Z.log.gz | Bin 0 -> 4442 bytes ...th-service_2026-05-02T18-33-05-422Z.log.gz | Bin 0 -> 4074 bytes ...th-service_2026-05-02T18-43-05-548Z.log.gz | Bin 0 -> 3901 bytes ...th-service_2026-05-02T18-53-05-697Z.log.gz | Bin 0 -> 4172 bytes ...th-service_2026-05-02T19-03-05-850Z.log.gz | Bin 0 -> 4348 bytes ...th-service_2026-05-02T19-13-06-025Z.log.gz | Bin 0 -> 4163 bytes ...th-service_2026-05-02T19-23-06-171Z.log.gz | Bin 0 -> 4254 bytes ...th-service_2026-05-02T19-33-06-322Z.log.gz | Bin 0 -> 4064 bytes ...th-service_2026-05-02T19-43-06-482Z.log.gz | Bin 0 -> 4194 bytes ...th-service_2026-05-02T19-53-06-639Z.log.gz | Bin 0 -> 4340 bytes ...th-service_2026-05-02T20-03-06-777Z.log.gz | Bin 0 -> 4276 bytes ...th-service_2026-05-02T20-13-06-961Z.log.gz | Bin 0 -> 4404 bytes ...th-service_2026-05-02T20-23-07-105Z.log.gz | Bin 0 -> 4487 bytes ...th-service_2026-05-04T08-50-49-889Z.log.gz | Bin 0 -> 2413 bytes .../auth-svc_2026-05-04T09-07-20-158Z.log.gz | Bin 0 -> 43 bytes ...ayment-api_2026-05-02T14-43-01-877Z.log.gz | Bin 0 -> 4401 bytes ...ayment-api_2026-05-02T14-53-02-036Z.log.gz | Bin 0 -> 4323 bytes ...ayment-api_2026-05-02T15-03-02-177Z.log.gz | Bin 0 -> 4273 bytes ...ayment-api_2026-05-02T15-13-02-356Z.log.gz | Bin 0 -> 4155 bytes ...ayment-api_2026-05-02T15-23-02-526Z.log.gz | Bin 0 -> 4436 bytes ...ayment-api_2026-05-02T15-33-02-729Z.log.gz | Bin 0 -> 4262 bytes ...ayment-api_2026-05-02T15-43-02-884Z.log.gz | Bin 0 -> 4338 bytes ...ayment-api_2026-05-02T15-53-03-024Z.log.gz | Bin 0 -> 4133 bytes ...ayment-api_2026-05-02T16-03-03-175Z.log.gz | Bin 0 -> 4314 bytes ...ayment-api_2026-05-02T16-13-03-325Z.log.gz | Bin 0 -> 4258 bytes ...ayment-api_2026-05-02T16-23-03-500Z.log.gz | Bin 0 -> 4424 bytes ...ayment-api_2026-05-02T16-33-03-672Z.log.gz | Bin 0 -> 4311 bytes ...ayment-api_2026-05-02T16-43-03-773Z.log.gz | Bin 0 -> 3917 bytes ...ayment-api_2026-05-02T16-53-03-962Z.log.gz | Bin 0 -> 4190 bytes ...ayment-api_2026-05-02T17-03-04-099Z.log.gz | Bin 0 -> 4358 bytes ...ayment-api_2026-05-02T17-13-04-226Z.log.gz | Bin 0 -> 4070 bytes ...ayment-api_2026-05-02T17-23-04-393Z.log.gz | Bin 0 -> 4091 bytes ...ayment-api_2026-05-02T17-33-04-573Z.log.gz | Bin 0 -> 4271 bytes ...ayment-api_2026-05-02T17-43-04-726Z.log.gz | Bin 0 -> 4352 bytes ...ayment-api_2026-05-02T17-53-04-877Z.log.gz | Bin 0 -> 4260 bytes ...ayment-api_2026-05-02T18-03-04-989Z.log.gz | Bin 0 -> 4040 bytes ...ayment-api_2026-05-02T18-13-05-087Z.log.gz | Bin 0 -> 4170 bytes ...ayment-api_2026-05-02T18-23-05-267Z.log.gz | Bin 0 -> 4291 bytes ...ayment-api_2026-05-02T18-33-05-423Z.log.gz | Bin 0 -> 4032 bytes ...ayment-api_2026-05-02T18-43-05-549Z.log.gz | Bin 0 -> 4041 bytes ...ayment-api_2026-05-02T18-53-05-698Z.log.gz | Bin 0 -> 4318 bytes ...ayment-api_2026-05-02T19-03-05-851Z.log.gz | Bin 0 -> 4061 bytes ...ayment-api_2026-05-02T19-13-06-026Z.log.gz | Bin 0 -> 4430 bytes ...ayment-api_2026-05-02T19-23-06-172Z.log.gz | Bin 0 -> 4231 bytes ...ayment-api_2026-05-02T19-33-06-323Z.log.gz | Bin 0 -> 4309 bytes ...ayment-api_2026-05-02T19-43-06-483Z.log.gz | Bin 0 -> 4403 bytes ...ayment-api_2026-05-02T19-53-06-640Z.log.gz | Bin 0 -> 4539 bytes ...ayment-api_2026-05-02T20-03-06-778Z.log.gz | Bin 0 -> 4203 bytes ...ayment-api_2026-05-02T20-13-06-962Z.log.gz | Bin 0 -> 4326 bytes ...ayment-api_2026-05-02T20-23-07-107Z.log.gz | Bin 0 -> 4068 bytes ...ayment-api_2026-05-04T08-50-49-890Z.log.gz | Bin 0 -> 2278 bytes ...ayment-svc_2026-05-04T09-07-20-157Z.log.gz | Bin 0 -> 131 bytes .../web-app_2026-05-02T14-43-01-875Z.log.gz | Bin 0 -> 4129 bytes .../web-app_2026-05-02T14-53-02-033Z.log.gz | Bin 0 -> 4360 bytes .../web-app_2026-05-02T15-03-02-174Z.log.gz | Bin 0 -> 3926 bytes .../web-app_2026-05-02T15-13-02-353Z.log.gz | Bin 0 -> 4237 bytes .../web-app_2026-05-02T15-23-02-523Z.log.gz | Bin 0 -> 4014 bytes .../web-app_2026-05-02T15-33-02-727Z.log.gz | Bin 0 -> 4389 bytes .../web-app_2026-05-02T15-43-02-882Z.log.gz | Bin 0 -> 4062 bytes .../web-app_2026-05-02T15-53-03-021Z.log.gz | Bin 0 -> 4217 bytes .../web-app_2026-05-02T16-03-03-173Z.log.gz | Bin 0 -> 4435 bytes .../web-app_2026-05-02T16-13-03-323Z.log.gz | Bin 0 -> 4082 bytes .../web-app_2026-05-02T16-23-03-498Z.log.gz | Bin 0 -> 3935 bytes .../web-app_2026-05-02T16-33-03-670Z.log.gz | Bin 0 -> 4162 bytes .../web-app_2026-05-02T16-43-03-771Z.log.gz | Bin 0 -> 4316 bytes .../web-app_2026-05-02T16-53-03-959Z.log.gz | Bin 0 -> 4229 bytes .../web-app_2026-05-02T17-03-04-097Z.log.gz | Bin 0 -> 4312 bytes .../web-app_2026-05-02T17-13-04-223Z.log.gz | Bin 0 -> 4528 bytes .../web-app_2026-05-02T17-23-04-391Z.log.gz | Bin 0 -> 4530 bytes .../web-app_2026-05-02T17-33-04-570Z.log.gz | Bin 0 -> 4248 bytes .../web-app_2026-05-02T17-43-04-723Z.log.gz | Bin 0 -> 4001 bytes .../web-app_2026-05-02T17-53-04-875Z.log.gz | Bin 0 -> 4139 bytes .../web-app_2026-05-02T18-03-04-986Z.log.gz | Bin 0 -> 4247 bytes .../web-app_2026-05-02T18-13-05-085Z.log.gz | Bin 0 -> 4436 bytes .../web-app_2026-05-02T18-23-05-264Z.log.gz | Bin 0 -> 4142 bytes .../web-app_2026-05-02T18-33-05-420Z.log.gz | Bin 0 -> 4348 bytes .../web-app_2026-05-02T18-43-05-547Z.log.gz | Bin 0 -> 4450 bytes .../web-app_2026-05-02T18-53-05-696Z.log.gz | Bin 0 -> 4178 bytes .../web-app_2026-05-02T19-03-05-848Z.log.gz | Bin 0 -> 4369 bytes .../web-app_2026-05-02T19-13-06-024Z.log.gz | Bin 0 -> 4395 bytes .../web-app_2026-05-02T19-23-06-170Z.log.gz | Bin 0 -> 4403 bytes .../web-app_2026-05-02T19-33-06-320Z.log.gz | Bin 0 -> 4273 bytes .../web-app_2026-05-02T19-43-06-480Z.log.gz | Bin 0 -> 4057 bytes .../web-app_2026-05-02T19-53-06-638Z.log.gz | Bin 0 -> 3897 bytes .../web-app_2026-05-02T20-03-06-775Z.log.gz | Bin 0 -> 4319 bytes .../web-app_2026-05-02T20-13-06-960Z.log.gz | Bin 0 -> 4010 bytes .../web-app_2026-05-02T20-23-07-104Z.log.gz | Bin 0 -> 4173 bytes .../web-app_2026-05-04T08-50-49-884Z.log.gz | Bin 0 -> 2593 bytes .../web-app_2026-05-04T09-00-50-036Z.log.gz | Bin 0 -> 8328 bytes .../web-app_2026-05-04T09-10-50-193Z.log.gz | Bin 0 -> 8896 bytes .../web-app_2026-05-04T09-20-50-309Z.log.gz | Bin 0 -> 8891 bytes .../web-app_2026-05-04T09-30-50-437Z.log.gz | Bin 0 -> 8816 bytes .../web-app_2026-05-04T09-40-50-573Z.log.gz | Bin 0 -> 8882 bytes .../web-app_2026-05-04T09-50-50-730Z.log.gz | Bin 0 -> 8868 bytes .../web-app_2026-05-04T10-00-50-870Z.log.gz | Bin 0 -> 8908 bytes .../web-app_2026-05-04T10-10-51-015Z.log.gz | Bin 0 -> 8870 bytes .../web-app_2026-05-04T10-20-51-163Z.log.gz | Bin 0 -> 8835 bytes .../web-app_2026-05-04T10-30-51-304Z.log.gz | Bin 0 -> 8890 bytes .../web-app_2026-05-04T10-40-51-472Z.log.gz | Bin 0 -> 8890 bytes .../web-app_2026-05-04T10-50-51-626Z.log.gz | Bin 0 -> 8890 bytes .../web-app_2026-05-04T11-00-51-764Z.log.gz | Bin 0 -> 8907 bytes .../web-app_2026-05-04T11-10-51-938Z.log.gz | Bin 0 -> 8929 bytes .../web-app_2026-05-04T11-20-52-093Z.log.gz | Bin 0 -> 8864 bytes .../web-app_2026-05-04T11-30-52-250Z.log.gz | Bin 0 -> 8913 bytes .../web-app_2026-05-04T11-40-52-391Z.log.gz | Bin 0 -> 8934 bytes .../worker-1_2026-05-02T14-43-01-879Z.log.gz | Bin 0 -> 4288 bytes .../worker-1_2026-05-02T14-53-02-037Z.log.gz | Bin 0 -> 4163 bytes .../worker-1_2026-05-02T15-03-02-179Z.log.gz | Bin 0 -> 4446 bytes .../worker-1_2026-05-02T15-13-02-357Z.log.gz | Bin 0 -> 4387 bytes .../worker-1_2026-05-02T15-23-02-527Z.log.gz | Bin 0 -> 4152 bytes .../worker-1_2026-05-02T15-33-02-730Z.log.gz | Bin 0 -> 4124 bytes .../worker-1_2026-05-02T15-43-02-885Z.log.gz | Bin 0 -> 4035 bytes .../worker-1_2026-05-02T15-53-03-025Z.log.gz | Bin 0 -> 4219 bytes .../worker-1_2026-05-02T16-03-03-176Z.log.gz | Bin 0 -> 4174 bytes .../worker-1_2026-05-02T16-13-03-327Z.log.gz | Bin 0 -> 4301 bytes .../worker-1_2026-05-02T16-23-03-501Z.log.gz | Bin 0 -> 4237 bytes .../worker-1_2026-05-02T16-33-03-674Z.log.gz | Bin 0 -> 4226 bytes .../worker-1_2026-05-02T16-43-03-775Z.log.gz | Bin 0 -> 4412 bytes .../worker-1_2026-05-02T16-53-03-963Z.log.gz | Bin 0 -> 4135 bytes .../worker-1_2026-05-02T17-03-04-101Z.log.gz | Bin 0 -> 4279 bytes .../worker-1_2026-05-02T17-13-04-227Z.log.gz | Bin 0 -> 4178 bytes .../worker-1_2026-05-02T17-23-04-394Z.log.gz | Bin 0 -> 4043 bytes .../worker-1_2026-05-02T17-33-04-574Z.log.gz | Bin 0 -> 4122 bytes .../worker-1_2026-05-02T17-43-04-727Z.log.gz | Bin 0 -> 4269 bytes .../worker-1_2026-05-02T17-53-04-878Z.log.gz | Bin 0 -> 4235 bytes .../worker-1_2026-05-02T18-03-04-990Z.log.gz | Bin 0 -> 4371 bytes .../worker-1_2026-05-02T18-13-05-088Z.log.gz | Bin 0 -> 4219 bytes .../worker-1_2026-05-02T18-23-05-268Z.log.gz | Bin 0 -> 4040 bytes .../worker-1_2026-05-02T18-33-05-424Z.log.gz | Bin 0 -> 4501 bytes .../worker-1_2026-05-02T18-43-05-550Z.log.gz | Bin 0 -> 4504 bytes .../worker-1_2026-05-02T18-53-05-699Z.log.gz | Bin 0 -> 4329 bytes .../worker-1_2026-05-02T19-03-05-852Z.log.gz | Bin 0 -> 4198 bytes .../worker-1_2026-05-02T19-13-06-028Z.log.gz | Bin 0 -> 3951 bytes .../worker-1_2026-05-02T19-23-06-173Z.log.gz | Bin 0 -> 4080 bytes .../worker-1_2026-05-02T19-33-06-325Z.log.gz | Bin 0 -> 4256 bytes .../worker-1_2026-05-02T19-43-06-484Z.log.gz | Bin 0 -> 4338 bytes .../worker-1_2026-05-02T19-53-06-642Z.log.gz | Bin 0 -> 4145 bytes .../worker-1_2026-05-02T20-03-06-779Z.log.gz | Bin 0 -> 4131 bytes .../worker-1_2026-05-02T20-13-06-963Z.log.gz | Bin 0 -> 4100 bytes .../worker-1_2026-05-02T20-23-07-108Z.log.gz | Bin 0 -> 4137 bytes .../worker-1_2026-05-04T08-50-49-891Z.log.gz | Bin 0 -> 2394 bytes dist-server/collector.js | 497 + dist-server/collector.js.map | 1 + dist-server/configFile.js | 101 + dist-server/configFile.js.map | 1 + dist-server/configManager.js | 97 + dist-server/configManager.js.map | 1 + dist-server/logSourceManager.js | 280 + dist-server/logSourceManager.js.map | 1 + dist-server/monitor.js | 516 + dist-server/monitor.js.map | 1 + dist-server/s3Source.js | 192 + dist-server/s3Source.js.map | 1 + dist-server/server.js | 448 + dist-server/server.js.map | 1 + docs/COLLECTOR.md | 358 + docs/MONITOR.md | 377 + docs/VIEWER.md | 229 + fresh-start.js | 312 + logviewer.config.json | 41 + monitor-data/_monitor_state.json | 15716 ++++++++++++++++ package-lock.json | 835 + package.json | 24 + run-all-tests.js | 188 + sample-logs/archived.log.gz | Bin 0 -> 2456 bytes sample-logs/generate-logs.js | 200 + sample-logs/syslog | 200 + send-test-logs.js | 51 + setup-monitor-test.js | 118 + src/main/configManager.ts | 80 + src/main/logSourceManager.ts | 334 + src/main/main.ts | 235 + src/preload/preload.ts | 49 + src/renderer/index.html | 206 + src/renderer/renderer.js | 887 + src/renderer/styles.css | 963 + src/server/collector.ts | 508 + src/server/configFile.ts | 93 + src/server/configManager.ts | 79 + src/server/logSourceManager.ts | 274 + src/server/monitor.ts | 539 + src/server/s3Source.ts | 191 + src/server/server.ts | 418 + src/web/app.js | 521 + src/web/collector-app.js | 320 + src/web/collector.html | 205 + src/web/index.html | 218 + src/web/monitor-app.js | 318 + src/web/monitor.html | 182 + src/web/styles.css | 163 + test-all.js | 306 + test-full-alert.js | 61 + test-monitor-telegram.js | 27 + test-telegram.js | 34 + tsconfig.json | 19 + tsconfig.server.json | 17 + 231 files changed, 29018 insertions(+) create mode 100644 .dockerignore create mode 100644 .env.collector create mode 100644 .env.example create mode 100644 .env.monitor create mode 100644 .env.viewer create mode 100644 .gitea/workflows/ci.yaml create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 DOCS.md create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 collector-data/_streams.json create mode 100644 collector-data/app-server_2026-05-04T09-07-20-156Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T14-43-01-876Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T14-53-02-035Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T15-03-02-176Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T15-13-02-355Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T15-23-02-525Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T15-33-02-728Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T15-43-02-883Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T15-53-03-023Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T16-03-03-174Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T16-13-03-324Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T16-23-03-499Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T16-33-03-671Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T16-43-03-772Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T16-53-03-961Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T17-03-04-098Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T17-13-04-225Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T17-23-04-392Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T17-33-04-572Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T17-43-04-725Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T17-53-04-876Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T18-03-04-988Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T18-13-05-086Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T18-23-05-266Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T18-33-05-422Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T18-43-05-548Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T18-53-05-697Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T19-03-05-850Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T19-13-06-025Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T19-23-06-171Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T19-33-06-322Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T19-43-06-482Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T19-53-06-639Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T20-03-06-777Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T20-13-06-961Z.log.gz create mode 100644 collector-data/auth-service_2026-05-02T20-23-07-105Z.log.gz create mode 100644 collector-data/auth-service_2026-05-04T08-50-49-889Z.log.gz create mode 100644 collector-data/auth-svc_2026-05-04T09-07-20-158Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T14-43-01-877Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T14-53-02-036Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T15-03-02-177Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T15-13-02-356Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T15-23-02-526Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T15-33-02-729Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T15-43-02-884Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T15-53-03-024Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T16-03-03-175Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T16-13-03-325Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T16-23-03-500Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T16-33-03-672Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T16-43-03-773Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T16-53-03-962Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T17-03-04-099Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T17-13-04-226Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T17-23-04-393Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T17-33-04-573Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T17-43-04-726Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T17-53-04-877Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T18-03-04-989Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T18-13-05-087Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T18-23-05-267Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T18-33-05-423Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T18-43-05-549Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T18-53-05-698Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T19-03-05-851Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T19-13-06-026Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T19-23-06-172Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T19-33-06-323Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T19-43-06-483Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T19-53-06-640Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T20-03-06-778Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T20-13-06-962Z.log.gz create mode 100644 collector-data/payment-api_2026-05-02T20-23-07-107Z.log.gz create mode 100644 collector-data/payment-api_2026-05-04T08-50-49-890Z.log.gz create mode 100644 collector-data/payment-svc_2026-05-04T09-07-20-157Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T14-43-01-875Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T14-53-02-033Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T15-03-02-174Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T15-13-02-353Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T15-23-02-523Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T15-33-02-727Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T15-43-02-882Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T15-53-03-021Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T16-03-03-173Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T16-13-03-323Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T16-23-03-498Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T16-33-03-670Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T16-43-03-771Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T16-53-03-959Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T17-03-04-097Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T17-13-04-223Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T17-23-04-391Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T17-33-04-570Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T17-43-04-723Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T17-53-04-875Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T18-03-04-986Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T18-13-05-085Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T18-23-05-264Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T18-33-05-420Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T18-43-05-547Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T18-53-05-696Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T19-03-05-848Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T19-13-06-024Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T19-23-06-170Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T19-33-06-320Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T19-43-06-480Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T19-53-06-638Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T20-03-06-775Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T20-13-06-960Z.log.gz create mode 100644 collector-data/web-app_2026-05-02T20-23-07-104Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T08-50-49-884Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T09-00-50-036Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T09-10-50-193Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T09-20-50-309Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T09-30-50-437Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T09-40-50-573Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T09-50-50-730Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T10-00-50-870Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T10-10-51-015Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T10-20-51-163Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T10-30-51-304Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T10-40-51-472Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T10-50-51-626Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T11-00-51-764Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T11-10-51-938Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T11-20-52-093Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T11-30-52-250Z.log.gz create mode 100644 collector-data/web-app_2026-05-04T11-40-52-391Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T14-43-01-879Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T14-53-02-037Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T15-03-02-179Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T15-13-02-357Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T15-23-02-527Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T15-33-02-730Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T15-43-02-885Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T15-53-03-025Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T16-03-03-176Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T16-13-03-327Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T16-23-03-501Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T16-33-03-674Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T16-43-03-775Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T16-53-03-963Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T17-03-04-101Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T17-13-04-227Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T17-23-04-394Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T17-33-04-574Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T17-43-04-727Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T17-53-04-878Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T18-03-04-990Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T18-13-05-088Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T18-23-05-268Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T18-33-05-424Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T18-43-05-550Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T18-53-05-699Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T19-03-05-852Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T19-13-06-028Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T19-23-06-173Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T19-33-06-325Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T19-43-06-484Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T19-53-06-642Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T20-03-06-779Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T20-13-06-963Z.log.gz create mode 100644 collector-data/worker-1_2026-05-02T20-23-07-108Z.log.gz create mode 100644 collector-data/worker-1_2026-05-04T08-50-49-891Z.log.gz create mode 100644 dist-server/collector.js create mode 100644 dist-server/collector.js.map create mode 100644 dist-server/configFile.js create mode 100644 dist-server/configFile.js.map create mode 100644 dist-server/configManager.js create mode 100644 dist-server/configManager.js.map create mode 100644 dist-server/logSourceManager.js create mode 100644 dist-server/logSourceManager.js.map create mode 100644 dist-server/monitor.js create mode 100644 dist-server/monitor.js.map create mode 100644 dist-server/s3Source.js create mode 100644 dist-server/s3Source.js.map create mode 100644 dist-server/server.js create mode 100644 dist-server/server.js.map create mode 100644 docs/COLLECTOR.md create mode 100644 docs/MONITOR.md create mode 100644 docs/VIEWER.md create mode 100644 fresh-start.js create mode 100644 logviewer.config.json create mode 100644 monitor-data/_monitor_state.json create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 run-all-tests.js create mode 100644 sample-logs/archived.log.gz create mode 100644 sample-logs/generate-logs.js create mode 100644 sample-logs/syslog create mode 100644 send-test-logs.js create mode 100644 setup-monitor-test.js create mode 100644 src/main/configManager.ts create mode 100644 src/main/logSourceManager.ts create mode 100644 src/main/main.ts create mode 100644 src/preload/preload.ts create mode 100644 src/renderer/index.html create mode 100644 src/renderer/renderer.js create mode 100644 src/renderer/styles.css create mode 100644 src/server/collector.ts create mode 100644 src/server/configFile.ts create mode 100644 src/server/configManager.ts create mode 100644 src/server/logSourceManager.ts create mode 100644 src/server/monitor.ts create mode 100644 src/server/s3Source.ts create mode 100644 src/server/server.ts create mode 100644 src/web/app.js create mode 100644 src/web/collector-app.js create mode 100644 src/web/collector.html create mode 100644 src/web/index.html create mode 100644 src/web/monitor-app.js create mode 100644 src/web/monitor.html create mode 100644 src/web/styles.css create mode 100644 test-all.js create mode 100644 test-full-alert.js create mode 100644 test-monitor-telegram.js create mode 100644 test-telegram.js create mode 100644 tsconfig.json create mode 100644 tsconfig.server.json diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0563df0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,9 @@ +node_modules +dist +dist-server +.git +.env +*.md +src/main +src/preload +src/renderer diff --git a/.env.collector b/.env.collector new file mode 100644 index 0000000..93e35f2 --- /dev/null +++ b/.env.collector @@ -0,0 +1,24 @@ +# Log Viewer - COLLECTOR MODE +LOG_MODE=collector +PORT=8081 +HOST=0.0.0.0 + +# UDP receiver +COLLECTOR_UDP_ENABLED=true +COLLECTOR_UDP_PORT=5140 + +# Storage +COLLECTOR_STORAGE_DIR=./collector-data +COLLECTOR_MAX_LINES=100000 +COLLECTOR_MAX_STREAMS=50 +COLLECTOR_PERSIST=true + +# Rotation (what triggers first) +COLLECTOR_ROTATION_MAX_SIZE=5242880 +COLLECTOR_ROTATION_MAX_AGE=600000 +COLLECTOR_ROTATION_COMPRESSION=gzip +COLLECTOR_ROTATION_EXTENSION=.log + +# Forward targets (JSON array) +# COLLECTOR_FORWARD_TARGETS=[{"type":"http","url":"http://other-server:8080/collect/forwarded","format":"json"},{"type":"file","path":"./forwarded.log"},{"type":"console"}] +COLLECTOR_FORWARD_TARGETS=[{"type":"console"}] diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..33fd635 --- /dev/null +++ b/.env.example @@ -0,0 +1,24 @@ +# Log Viewer - Environment Configuration +# ======================================== + +# Log sources - comma-separated list of file paths or glob patterns +# Supports: .log, .txt, plain files (no extension), .gz, .bz2, .xz, .zst +LOG_SOURCES=/var/log/syslog,/var/log/auth.log,/tmp/myapp/*.log + +# Optional: Refresh interval in milliseconds (default: 2000) +LOG_REFRESH_INTERVAL=2000 + +# Optional: Maximum lines to load per file (default: 50000) +LOG_MAX_LINES=50000 + +# Optional: Default theme (dark or light, default: dark) +LOG_THEME=dark + +# Optional: Default log level filter (ALL, DEBUG, INFO, WARN, ERROR, FATAL) +LOG_DEFAULT_LEVEL=ALL + +# Optional: Enable tail mode by default (true/false, default: true) +LOG_TAIL_MODE=true + +# Optional: Custom timestamp format regex for parsing +# LOG_TIMESTAMP_REGEX=\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2} diff --git a/.env.monitor b/.env.monitor new file mode 100644 index 0000000..f73e129 --- /dev/null +++ b/.env.monitor @@ -0,0 +1,12 @@ +# Log Viewer - MONITOR MODE +LOG_MODE=monitor +PORT=8082 +HOST=0.0.0.0 + +# Monitor settings +MONITOR_ENABLED=true +MONITOR_SCAN_INTERVAL=60000 +MONITOR_STORAGE_DIR=./monitor-data + +# Rules can be configured via the GUI or as JSON: +# MONITOR_RULES=[{"id":"rule-1","name":"DB Admin Login","enabled":true,"sources":["sample-logs/app.log"],"patterns":["admin.*authenticated","GRANT"],"patternLogic":"any","timeRange":{"type":"week"},"notifications":[{"type":"webhook","url":"http://localhost:9999/hook"}],"maxLinesInMessage":20,"cooldownMs":300000,"matchCount":0,"lastTriggered":null}] diff --git a/.env.viewer b/.env.viewer new file mode 100644 index 0000000..3af013a --- /dev/null +++ b/.env.viewer @@ -0,0 +1,15 @@ +# Log Viewer - VIEWER MODE +LOG_MODE=viewer +PORT=9090 +HOST=0.0.0.0 + +# Connect to the collector +REMOTE_COLLECTOR_URL=http://localhost:8081 + +# Local file sources (optional, in addition to remote streams) +LOG_SOURCES=sample-logs/app.log,sample-logs/nginx-access.log,sample-logs/syslog,sample-logs/archived.log.gz + +# UI settings +LOG_THEME=dark +LOG_REFRESH_INTERVAL=2000 +LOG_TAIL_MODE=true diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml new file mode 100644 index 0000000..602d3eb --- /dev/null +++ b/.gitea/workflows/ci.yaml @@ -0,0 +1,64 @@ +name: LogMaster CI/CD + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + build-and-test: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Build (TypeScript compile) + run: npx tsc -p tsconfig.server.json + + - name: Generate sample logs + run: node sample-logs/generate-logs.js + + - name: Start services + run: | + LOG_MODE=collector PORT=8081 COLLECTOR_UDP_ENABLED=false node dist-server/server.js & + LOG_MODE=viewer PORT=9090 REMOTE_COLLECTOR_URL=http://localhost:8081 LOG_SOURCES=sample-logs/app.log,sample-logs/nginx-access.log,sample-logs/syslog,sample-logs/archived.log.gz node dist-server/server.js & + LOG_MODE=monitor PORT=8082 MONITOR_ENABLED=true node dist-server/server.js & + sleep 3 + + - name: Run integration tests + run: node run-all-tests.js + + - name: Stop services + if: always() + run: pkill -f "node dist-server" || true + + docker: + runs-on: ubuntu-latest + needs: build-and-test + if: github.ref == 'refs/heads/main' + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Build Docker image + run: docker build -t logmaster:latest -t logmaster:${{ github.sha }} . + + - name: Login to Gitea Registry + run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login git.kgessner.de -u "${{ secrets.REGISTRY_USER }}" --password-stdin + + - name: Tag and push + run: | + docker tag logmaster:latest git.kgessner.de/keviin/logmaster:latest + docker tag logmaster:${{ github.sha }} git.kgessner.de/keviin/logmaster:${{ github.sha }} + docker push git.kgessner.de/keviin/logmaster:latest + docker push git.kgessner.de/keviin/logmaster:${{ github.sha }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa0926a --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +dist/ +.env +*.log diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7a73a41 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,2 @@ +{ +} \ No newline at end of file diff --git a/DOCS.md b/DOCS.md new file mode 100644 index 0000000..3264282 --- /dev/null +++ b/DOCS.md @@ -0,0 +1,690 @@ +# LogMaster — Complete Documentation + +A modular log management platform with four operating modes, a web UI for each, and full API control. Zero external dependencies beyond Node.js. + +--- + +## Table of Contents + +- [Architecture](#architecture) +- [Quick Start](#quick-start) +- [Operating Modes](#operating-modes) +- [Viewer](#viewer) +- [Collector](#collector) +- [Monitor](#monitor) +- [S3 Integration](#s3-integration) +- [Configuration](#configuration) +- [API Reference](#api-reference) +- [GUI Walkthroughs](#gui-walkthroughs) +- [Example Scenarios](#example-scenarios) +- [Docker & CI/CD](#docker--cicd) +- [Keyboard Shortcuts](#keyboard-shortcuts) + +--- + +## Architecture + +``` + ┌──────────────────────────┐ + │ LOG SOURCES │ + ├──────┬──────┬──────┬──────┤ + │Files │ S3 │ UDP │ HTTP │ + │.log │Bucket│:5140 │POST │ + │.gz │ │ │/collect + └──┬───┴──┬───┴──┬───┴──┬───┘ + │ │ │ │ + ▼ ▼ ▼ ▼ +┌──────────────────────────────────────────────────────────────┐ +│ LOGMASTER SERVER │ +│ │ +│ ┌──────────┐ ┌───────────┐ ┌──────────┐ ┌─────────┐ │ +│ │ VIEWER │ │ COLLECTOR │ │ MONITOR │ │ ALL │ │ +│ │ │ │ │ │ │ │ │ │ +│ │ Read │ │ Receive │ │ Scan │ │ Every │ │ +│ │ Filter │ │ Store │ │ Pattern │ │ feature │ │ +│ │ Search │ │ Rotate │ │ Alert │ │ active │ │ +│ │ Export │ │ Forward │ │ Notify │ │ │ │ +│ └──────────┘ └───────────┘ └──────────┘ └─────────┘ │ +│ │ +│ Forward Targets: HTTP │ File │ UDP │ Stream │ Console │ +│ Notifications: Telegram │ Webhook │ Teams │ Email │ +└──────────────────────────────────────────────────────────────┘ +``` + +--- + +## Quick Start + +```bash +npm install +npm run build # Compile TypeScript +node dist-server/server.js # Start in "both" mode (viewer+collector) on :8080 +``` + +Open http://localhost:8080. + +### Start specific modes + +```bash +# Collector on port 8081 +LOG_MODE=collector PORT=8081 node dist-server/server.js + +# Viewer on port 9090, reading from collector +LOG_MODE=viewer PORT=9090 REMOTE_COLLECTOR_URL=http://localhost:8081 LOG_SOURCES=./logs/*.log node dist-server/server.js + +# Monitor on port 8082 +LOG_MODE=monitor PORT=8082 node dist-server/server.js +``` + +--- + +## Operating Modes + +| Mode | `LOG_MODE=` | What it does | Web UI | +|------|-------------|-------------|--------| +| Viewer | `viewer` | Read & display logs | Log viewer with filter, search, export | +| Collector | `collector` | Receive, store, rotate, forward logs | Stream dashboard with live feed | +| Monitor | `monitor` | Scan files for patterns, send alerts | Rule editor with test & alert history | +| Both | `both` | Viewer + Collector | Viewer UI with collector active | +| All | `all` | All three modes | Viewer UI, all features via API | + +Each mode serves its own dedicated web UI at the root URL. + +--- + +## Viewer + +### What it does + +Reads logs from local files (plain, gzip, bz2, xz, zstd), S3 buckets, and remote collector streams. Displays them in a web UI with filtering, regex search, bookmarks, export, and live tail mode. + +### GUI walkthrough + +1. **Open** http://localhost:9090 +2. **Sidebar** shows all sources grouped by type (Files, S3, Collector Streams, Remote) +3. **Click a source** to filter to just that file/stream +4. **Search bar** — type to filter. Click `.*` for regex, `Aa` for case-sensitive +5. **Level dropdown** — filter by ERROR, WARN, INFO, etc. +6. **Tail button** — auto-scrolls to new lines. New lines flash blue briefly +7. **Right-click** any line for copy, bookmark, filter options +8. **Export** — download visible logs as .txt or .json + +### API examples + +```bash +# List file sources +curl http://localhost:9090/api/sources + +# Add a source +curl -X POST http://localhost:9090/api/sources \ + -H "Content-Type: application/json" \ + -d '{"path": "/var/log/syslog"}' + +# Read all logs +curl http://localhost:9090/api/logs + +# Read specific source +curl "http://localhost:9090/api/logs?source=/var/log/syslog" + +# Read remote collector streams +curl http://localhost:9090/api/remote/streams +curl http://localhost:9090/api/remote/stream/my-app +``` + +### Configuration + +```env +LOG_MODE=viewer +PORT=9090 +LOG_SOURCES=/var/log/syslog,/app/logs/*.log +LOG_THEME=dark +LOG_REFRESH_INTERVAL=2000 +LOG_TAIL_MODE=true +LOG_MAX_LINES=50000 +REMOTE_COLLECTOR_URL=http://collector:8081 +``` + +--- + +## Collector + +### What it does + +Receives logs via HTTP POST and UDP, stores them in named streams, rotates files by size or time, compresses rotated files, and forwards to other targets (HTTP, file, UDP, another stream, console). + +### Sending logs + +```bash +# Plain text (each line = one log entry) +curl -X POST http://localhost:8081/collect/my-app \ + -d "2026-05-04 ERROR Database connection lost" + +# JSON array +curl -X POST http://localhost:8081/collect/my-app/json \ + -H "Content-Type: application/json" \ + -d '["INFO Started", "ERROR Crashed", "WARN Low memory"]' + +# UDP (format: streamId|logline) +echo "my-app|2026-05-04 ERROR disk full" | nc -u localhost 5140 +``` + +Streams are created automatically on first ingest. No pre-configuration needed. + +### GUI walkthrough + +1. **Open** http://localhost:8081 +2. **Overview** shows stream count, total lines, lines/minute +3. **Stream list** — click a stream to filter the live feed +4. **Live Feed tab** — real-time log lines with color coding (red=ERROR, orange=WARN) +5. **Configuration tab** — edit storage, UDP, rotation, compression settings +6. **Forwarding tab** — add/remove forward targets + +### API examples + +```bash +# List streams +curl http://localhost:8081/collector/streams + +# Read a stream +curl http://localhost:8081/collector/stream/my-app + +# Read last 10 lines +curl "http://localhost:8081/collector/stream/my-app?tail=10" + +# Delete a stream +curl -X DELETE http://localhost:8081/collector/stream/my-app + +# Get config +curl http://localhost:8081/collector/config +``` + +### Log rotation + +Rotation triggers on whichever condition is met first: + +| Trigger | Variable | Default | +|---------|----------|---------| +| File size | `COLLECTOR_ROTATION_MAX_SIZE` | 5MB (5242880) | +| File age | `COLLECTOR_ROTATION_MAX_AGE` | 10min (600000) | + +Compression options: `none`, `gzip`, `bzip2`, `xz`, `zstd` + +### Forward targets + +```env +# Forward to HTTP + local file + aggregate stream +COLLECTOR_FORWARD_TARGETS=[ + {"type":"http","url":"http://elk:9200/_bulk","format":"json","batchSize":100}, + {"type":"file","path":"/backup/all.log"}, + {"type":"stream","targetStream":"all-logs"}, + {"type":"console"} +] +``` + +The `stream` type copies logs from any stream into another stream on the same collector. Lines are prefixed with `[fwd:source-stream]`. + +### Configuration + +```env +LOG_MODE=collector +PORT=8081 +COLLECTOR_UDP_ENABLED=true +COLLECTOR_UDP_PORT=5140 +COLLECTOR_STORAGE_DIR=./collector-data +COLLECTOR_MAX_LINES=100000 +COLLECTOR_MAX_STREAMS=50 +COLLECTOR_PERSIST=true +COLLECTOR_ROTATION_MAX_SIZE=5242880 +COLLECTOR_ROTATION_MAX_AGE=600000 +COLLECTOR_ROTATION_COMPRESSION=gzip +COLLECTOR_ROTATION_EXTENSION=.log +``` + +--- + +## Monitor + +### What it does + +Scans log files on a schedule, matches regex patterns, and sends notifications via Telegram, Webhook, Microsoft Teams, or Email. Supports time-range filtering, scheduled scans (continuous, daily, hourly), and automatic gzip attachment when matches exceed a threshold. + +### How scanning works + +1. Every N seconds, the monitor reads all source files for each enabled rule +2. Only files matching the time range are scanned (today, week, month, last N hours) +3. Each line is tested against the regex patterns (match any OR match all) +4. If matches found AND cooldown expired → notifications sent +5. If matches > `maxLinesInMessage` → first N lines inline, full results as .gz attachment + +### GUI walkthrough + +1. **Open** http://localhost:8082 +2. **Click "+ New"** to create a rule +3. **Fill in:** + - Name, sources (file paths, one per line, globs supported) + - Patterns (one regex per line) + - Time range (today, week, month, hours, all) + - Schedule (continuous, daily at HH:MM, every N hours) + - Max lines in notification, cooldown +4. **Add notification channels** — select type, fill fields, click "+ Add Channel" +5. **Click "🧪 Test Notification"** to verify the channel works +6. **Click "💾 Save Rule"** +7. **Click "🧪 Test Now"** to trigger the rule immediately +8. **Alerts** appear in the sidebar — click for full detail with all matched lines + +### Notification channels + +**Telegram:** +- Type: `telegram` +- Fields: Bot Token, Chat ID +- Get a bot token from @BotFather, chat ID from @userinfobot + +**Webhook (Slack, Discord, custom):** +- Type: `webhook` +- Fields: URL + +**Microsoft Teams:** +- Type: `teams` +- Fields: Incoming Webhook URL + +**Email:** +- Type: `email` +- Fields: SMTP Host, SMTP Port, SMTP User, SMTP Password, To address + +### API examples + +```bash +# Create a rule +curl -X POST http://localhost:8082/api/monitor/rules \ + -H "Content-Type: application/json" \ + -d '{ + "name": "Root Access Alert", + "enabled": true, + "sources": ["/var/log/auth.log"], + "patterns": ["root.*login", "su.*root"], + "patternLogic": "any", + "timeRange": {"type": "today"}, + "schedule": {"mode": "interval"}, + "notifications": [{"type":"telegram","botToken":"TOKEN","chatId":"CHAT_ID"}], + "maxLinesInMessage": 20, + "cooldownMs": 300000 + }' + +# List rules +curl http://localhost:8082/api/monitor/rules + +# Trigger a rule manually +curl -X POST http://localhost:8082/api/monitor/trigger/rule-id + +# View alert history +curl http://localhost:8082/api/monitor/results + +# Test a notification channel +curl -X POST http://localhost:8082/api/monitor/test-notification \ + -H "Content-Type: application/json" \ + -d '{"type":"telegram","botToken":"TOKEN","chatId":"CHAT_ID"}' + +# Update a rule +curl -X PUT http://localhost:8082/api/monitor/rule/rule-id \ + -H "Content-Type: application/json" \ + -d '{"name": "Updated Name", "enabled": false}' + +# Delete a rule +curl -X DELETE http://localhost:8082/api/monitor/rule/rule-id +``` + +### Configuration + +```env +LOG_MODE=monitor +PORT=8082 +MONITOR_ENABLED=true +MONITOR_SCAN_INTERVAL=60000 +MONITOR_STORAGE_DIR=./monitor-data +``` + +Rules can be pre-configured via `MONITOR_RULES` env var (JSON array) or created via GUI/API at runtime. + +--- + +## S3 Integration + +### Via GUI + +Click **☁️ S3** in the viewer toolbar. Fill in: name, bucket, prefix, access key, secret key, region, optional custom endpoint (for MinIO). + +### Via environment + +```env +S3_ACCESS_KEY_ID=AKIA... +S3_SECRET_ACCESS_KEY=... +S3_REGION=eu-central-1 +S3_SOURCE_PROD=my-bucket:logs/production/ +S3_SOURCE_STAGING=my-bucket:logs/staging/ +``` + +### Via API + +```bash +curl -X POST http://localhost:9090/api/s3/add \ + -H "Content-Type: application/json" \ + -d '{"name":"prod","bucket":"my-bucket","prefix":"logs/","accessKeyId":"AKIA...","secretAccessKey":"...","region":"eu-central-1"}' + +curl http://localhost:9090/api/s3/sources +curl "http://localhost:9090/api/s3/list?name=prod" +curl "http://localhost:9090/api/s3/read?name=prod&key=logs/app.log" +``` + +For S3-compatible services (MinIO, DigitalOcean Spaces), add `endpoint`: +```env +S3_ENDPOINT=http://minio:9000 +``` + +--- + +## Configuration + +### Priority (highest wins) + +1. Environment variables +2. `logviewer.config.json` (editable via GUI) +3. `.env` file +4. Built-in defaults + +### Full config file example + +```json +{ + "mode": "all", + "port": 8080, + "viewer": { + "sources": ["/var/log/syslog", "/app/logs/*.log"], + "theme": "dark", + "refreshInterval": 2000, + "tailMode": true, + "maxLines": 50000 + }, + "collector": { + "enabled": true, + "storageDir": "./collector-data", + "maxLinesPerStream": 100000, + "maxStreams": 50, + "persistToDisk": true, + "udp": {"enabled": true, "port": 5140}, + "rotation": {"maxSizeBytes": 5242880, "maxAgeMs": 600000, "compression": "gzip", "fileExtension": ".log"}, + "forwardTargets": [{"type": "stream", "targetStream": "all-logs"}] + }, + "monitor": { + "enabled": true, + "scanIntervalMs": 60000, + "rules": [] + }, + "s3": { + "sources": { + "prod": {"bucket": "logs", "prefix": "prod/", "region": "eu-central-1", "accessKeyId": "...", "secretAccessKey": "..."} + } + }, + "remoteCollector": {"url": "http://collector:8081"} +} +``` + +### All environment variables + +| Variable | Default | Description | +|----------|---------|-------------| +| `LOG_MODE` | `both` | `viewer`, `collector`, `monitor`, `both`, `all` | +| `PORT` | `8080` | HTTP port | +| `HOST` | `0.0.0.0` | Bind address | +| `LOG_SOURCES` | — | Comma-separated file paths/globs | +| `LOG_THEME` | `dark` | `dark` or `light` | +| `LOG_REFRESH_INTERVAL` | `2000` | Auto-refresh ms | +| `LOG_TAIL_MODE` | `true` | Auto-scroll | +| `LOG_MAX_LINES` | `50000` | Max lines per file | +| `COLLECTOR_UDP_ENABLED` | `true` | UDP receiver | +| `COLLECTOR_UDP_PORT` | `5140` | UDP port | +| `COLLECTOR_STORAGE_DIR` | `./collector-data` | Storage path | +| `COLLECTOR_PERSIST` | `true` | Write to disk | +| `COLLECTOR_ROTATION_MAX_SIZE` | `5242880` | Rotate at bytes | +| `COLLECTOR_ROTATION_MAX_AGE` | `600000` | Rotate at ms | +| `COLLECTOR_ROTATION_COMPRESSION` | `gzip` | `none`/`gzip`/`bzip2`/`xz`/`zstd` | +| `COLLECTOR_FORWARD_TARGETS` | `[]` | JSON array | +| `MONITOR_ENABLED` | `true` | Enable scanning | +| `MONITOR_SCAN_INTERVAL` | `60000` | Scan interval ms | +| `MONITOR_RULES` | `[]` | JSON array of rules | +| `REMOTE_COLLECTOR_URL` | — | Remote collector URL | +| `S3_ACCESS_KEY_ID` | — | S3 access key | +| `S3_SECRET_ACCESS_KEY` | — | S3 secret key | +| `S3_REGION` | `us-east-1` | S3 region | +| `S3_ENDPOINT` | — | Custom S3 endpoint | + +--- + +## API Reference + +### General +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/mode` | Current mode info | +| GET | `/api/config` | Active configuration | +| POST | `/api/config/save` | Save config to file | + +### Viewer +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/sources` | List file sources | +| POST | `/api/sources` | Add source `{"path":"..."}` | +| DELETE | `/api/sources?path=...` | Remove source | +| GET | `/api/logs?source=...` | Read logs | +| GET | `/api/remote/streams` | Remote collector streams | +| GET | `/api/remote/stream/:id` | Read remote stream | + +### Collector +| Method | Path | Description | +|--------|------|-------------| +| POST | `/collect/:id` | Ingest plain text | +| POST | `/collect/:id/json` | Ingest JSON | +| GET | `/collector/streams` | List streams | +| GET | `/collector/stream/:id?tail=N` | Read stream | +| GET | `/collector/config` | Collector config | +| DELETE | `/collector/stream/:id` | Delete stream | + +### Monitor +| Method | Path | Description | +|--------|------|-------------| +| GET | `/api/monitor/rules` | List rules | +| POST | `/api/monitor/rules` | Create rule | +| PUT | `/api/monitor/rule/:id` | Update rule | +| DELETE | `/api/monitor/rule/:id` | Delete rule | +| POST | `/api/monitor/trigger/:id` | Trigger rule now | +| GET | `/api/monitor/results` | Alert history | +| POST | `/api/monitor/test-notification` | Test a channel | + +### S3 +| Method | Path | Description | +|--------|------|-------------| +| POST | `/api/s3/add` | Add S3 source | +| GET | `/api/s3/sources` | List S3 sources | +| GET | `/api/s3/list?name=...` | List S3 objects | +| GET | `/api/s3/read?name=...&key=...` | Read S3 object | + +--- + +## GUI Walkthroughs + +### Viewer: Search for errors in the last hour + +1. Open http://localhost:9090 +2. Select **"Error"** from the level dropdown +3. Type a search term or regex in the search bar +4. Click `.*` to enable regex mode +5. Results update live. Click **💾 Export** to download + +### Collector: Watch live logs from multiple apps + +1. Open http://localhost:8081 +2. The **Live Feed** tab shows all incoming logs in real-time +3. Click a stream in the sidebar to filter +4. Click **⏸ Pause** to freeze the feed +5. Go to **⚙️ Configuration** to change rotation/compression settings + +### Monitor: Set up a daily security scan + +1. Open http://localhost:8082 +2. Click **"+ New"** +3. Name: "Daily Security Audit" +4. Sources: `/var/log/auth.log` (one per line) +5. Patterns: `root.*login`, `sudo.*COMMAND`, `Failed password` (one per line) +6. Time Range: **Today** +7. Schedule: **Daily at** `07:00` +8. Add Telegram notification: paste bot token and chat ID +9. Click **"🧪 Test Notification"** to verify +10. Click **"💾 Save Rule"** +11. Click **"🧪 Test Now"** to see immediate results + +--- + +## Example Scenarios + +### 1. Development: All-in-one + +```bash +LOG_MODE=both PORT=8080 LOG_SOURCES=./logs/*.log node dist-server/server.js +``` +View logs + receive from apps on one port. + +### 2. Production: Separate services + +```bash +# Server A: Collector +LOG_MODE=collector PORT=8081 COLLECTOR_UDP_PORT=5140 \ + COLLECTOR_ROTATION_COMPRESSION=gzip \ + COLLECTOR_FORWARD_TARGETS='[{"type":"stream","targetStream":"all-logs"}]' \ + node dist-server/server.js + +# Server B: Viewer +LOG_MODE=viewer PORT=9090 REMOTE_COLLECTOR_URL=http://serverA:8081 \ + node dist-server/server.js + +# Server C: Monitor +LOG_MODE=monitor PORT=8082 MONITOR_SCAN_INTERVAL=30000 \ + node dist-server/server.js +``` + +### 3. Security monitoring with Telegram alerts + +```bash +LOG_MODE=monitor PORT=8082 MONITOR_SCAN_INTERVAL=10000 \ + MONITOR_RULES='[{"id":"sec","name":"Security","enabled":true,"sources":["/var/log/auth.log"],"patterns":["root","sudo","Failed"],"patternLogic":"any","timeRange":{"type":"today"},"notifications":[{"type":"telegram","botToken":"YOUR_TOKEN","chatId":"YOUR_CHAT"}],"maxLinesInMessage":20,"cooldownMs":60000}]' \ + node dist-server/server.js +``` + +### 4. Log aggregation with S3 archive + +```bash +LOG_MODE=both PORT=8080 \ + S3_ACCESS_KEY_ID=AKIA... S3_SECRET_ACCESS_KEY=... S3_REGION=eu-central-1 \ + S3_SOURCE_ARCHIVE=my-bucket:logs/ \ + COLLECTOR_FORWARD_TARGETS='[{"type":"file","path":"/archive/all.log"}]' \ + node dist-server/server.js +``` + +--- + +## Docker & CI/CD + +### Build and run + +```bash +docker build -t logmaster . + +# Collector +docker run -d -p 8081:8080 -p 5140:5140/udp -e LOG_MODE=collector logmaster + +# Viewer +docker run -d -p 9090:8080 -e LOG_MODE=viewer -e REMOTE_COLLECTOR_URL=http://collector:8080 logmaster + +# Monitor +docker run -d -p 8082:8080 -e LOG_MODE=monitor -v /var/log:/logs:ro logmaster +``` + +### Docker Compose + +```yaml +services: + collector: + build: . + ports: ["8081:8080", "5140:5140/udp"] + environment: + LOG_MODE: collector + COLLECTOR_UDP_PORT: "5140" + volumes: + - collector-data:/app/collector-data + + viewer: + build: . + ports: ["9090:8080"] + environment: + LOG_MODE: viewer + REMOTE_COLLECTOR_URL: http://collector:8080 + depends_on: [collector] + + monitor: + build: . + ports: ["8082:8080"] + environment: + LOG_MODE: monitor + MONITOR_SCAN_INTERVAL: "30000" + volumes: + - /var/log:/logs:ro + +volumes: + collector-data: +``` + +### CI/CD (Gitea Actions) + +The `.gitea/workflows/ci.yaml` pipeline: +1. Installs dependencies +2. Compiles TypeScript +3. Generates sample logs +4. Starts all 3 services +5. Runs the full integration test suite (41 tests) +6. Builds Docker image +7. Pushes to Gitea container registry + +To enable: add a Gitea Actions runner and set `REGISTRY_USER` / `REGISTRY_PASSWORD` secrets. + +--- + +## Keyboard Shortcuts + +| Key | Action | +|-----|--------| +| `Ctrl+F` | Search | +| `Ctrl+Shift+F` | Regex search | +| `Ctrl+T` | Toggle tail mode | +| `Ctrl+W` | Toggle word wrap | +| `Ctrl+G` | Go to line | +| `Ctrl+Shift+T` | Toggle theme | +| `Ctrl+=` / `Ctrl+-` | Zoom in/out | +| `Ctrl+0` | Reset zoom | +| `Home` / `End` | Scroll top/bottom | +| `Escape` | Clear search / close modals | + +--- + +## Supported Log Formats + +| Format | Extensions | Decompression | +|--------|-----------|---------------| +| Plain text | `.log`, `.txt`, no extension | Direct read | +| Gzip | `.gz` | Node.js zlib (built-in) | +| Bzip2 | `.bz2` | `bzcat` CLI | +| XZ | `.xz` | `xzcat` CLI | +| Zstandard | `.zst` | `zstdcat` CLI | + +--- + +## License + +MIT diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4524fc2 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,38 @@ +FROM node:20-alpine + +WORKDIR /app + +# Install compression tools for bz2, xz, zstd support +RUN apk add --no-cache bzip2 xz zstd + +# Copy package files and install deps +COPY package.json package-lock.json* ./ +RUN npm ci --omit=dev 2>/dev/null || npm install --omit=dev + +# Copy TypeScript config and source +COPY tsconfig.server.json ./ +COPY src/server/ ./src/server/ +COPY src/web/ ./src/web/ + +# Install typescript for build, compile, then remove +RUN npm install typescript@5.7.2 && \ + npx tsc -p tsconfig.server.json && \ + npm uninstall typescript + +# Copy sample logs +COPY sample-logs/ ./sample-logs/ + +# Generate sample logs +RUN node sample-logs/generate-logs.js + +# Environment defaults +ENV LOG_SOURCES=/app/sample-logs/app.log,/app/sample-logs/nginx-access.log,/app/sample-logs/syslog,/app/sample-logs/archived.log.gz +ENV LOG_THEME=dark +ENV LOG_REFRESH_INTERVAL=3000 +ENV LOG_TAIL_MODE=true +ENV PORT=8080 +ENV HOST=0.0.0.0 + +EXPOSE 8080 + +CMD ["node", "dist-server/server.js"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb58533 --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# Log Viewer + +A powerful log management tool with four operating modes: Viewer, Collector, Monitor, and combined. Features web UIs, S3 integration, UDP ingestion, log rotation, pattern-based alerting, and multi-channel notifications. + +## Quick Start + +```bash +npm install +npm run build +node dist-server/server.js +``` + +Open http://localhost:8080 in your browser. + +## Modes + +| Mode | Command | Port | Description | +|------|---------|------|-------------| +| Both (default) | `node dist-server/server.js` | 8080 | Viewer + Collector | +| Viewer | `cp .env.viewer .env && node dist-server/server.js` | 9090 | Read & display logs | +| Collector | `cp .env.collector .env && node dist-server/server.js` | 8081 | Receive & store logs | +| Monitor | `cp .env.monitor .env && node dist-server/server.js` | 8082 | Scan & alert on patterns | + +## Documentation + +- **[Full Documentation](DOCS.md)** — Complete reference +- **[Viewer Guide](docs/VIEWER.md)** — How to use the log viewer +- **[Collector Guide](docs/COLLECTOR.md)** — How to set up log collection +- **[Monitor Guide](docs/MONITOR.md)** — How to configure pattern alerts + +## Features + +- Multi-source: local files, gzip/bz2/xz/zst, S3, UDP, HTTP +- Real-time log streaming with live highlighting +- Regex search with level filtering +- Log rotation (size + time based, with compression) +- Forward to HTTP, file, UDP, or console +- Pattern monitoring with Telegram, Webhook, Teams, Email alerts +- Scheduled scans (continuous, daily, hourly) +- Dark/Light theme, keyboard shortcuts, export + +## License + +MIT diff --git a/collector-data/_streams.json b/collector-data/_streams.json new file mode 100644 index 0000000..34dd28b --- /dev/null +++ b/collector-data/_streams.json @@ -0,0 +1,58 @@ +[ + { + "id": "web-app", + "name": "web-app", + "createdAt": "2026-05-01T19:00:40.860Z", + "lineCount": 1105, + "lastReceived": "2026-05-04T11:50:15.405Z", + "currentFileSize": 66937 + }, + { + "id": "auth-service", + "name": "auth-service", + "createdAt": "2026-05-01T19:00:40.862Z", + "lineCount": 0, + "lastReceived": "2026-05-02T20:28:12.250Z", + "currentFileSize": 0 + }, + { + "id": "payment-api", + "name": "payment-api", + "createdAt": "2026-05-01T19:00:41.742Z", + "lineCount": 0, + "lastReceived": "2026-05-02T20:28:12.868Z", + "currentFileSize": 0 + }, + { + "id": "worker-1", + "name": "worker-1", + "createdAt": "2026-05-01T19:00:43.603Z", + "lineCount": 0, + "lastReceived": "2026-05-02T20:28:10.699Z", + "currentFileSize": 0 + }, + { + "id": "app-server", + "name": "app-server", + "createdAt": "2026-05-04T08:57:18.300Z", + "lineCount": 0, + "lastReceived": "2026-05-04T08:57:18.300Z", + "currentFileSize": 0 + }, + { + "id": "payment-svc", + "name": "payment-svc", + "createdAt": "2026-05-04T08:57:18.302Z", + "lineCount": 0, + "lastReceived": "2026-05-04T08:57:18.302Z", + "currentFileSize": 0 + }, + { + "id": "auth-svc", + "name": "auth-svc", + "createdAt": "2026-05-04T08:57:18.311Z", + "lineCount": 0, + "lastReceived": "2026-05-04T08:57:18.312Z", + "currentFileSize": 0 + } +] \ No newline at end of file diff --git a/collector-data/app-server_2026-05-04T09-07-20-156Z.log.gz b/collector-data/app-server_2026-05-04T09-07-20-156Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..dbb28bf55b58c106c4a3186f5d9f4b489e33149e GIT binary patch literal 220 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T14-53-02-035Z.log.gz b/collector-data/auth-service_2026-05-02T14-53-02-035Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..6a8bbce531486b38a52354d28f96dd42dc9a288c GIT binary patch literal 4081 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 E05k|yzW@LL literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T15-33-02-728Z.log.gz b/collector-data/auth-service_2026-05-02T15-33-02-728Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..f8d4be6fea56847144e2a7cc29bf2fa12fa06c5f GIT binary patch literal 4108 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 KaI`=eX8-_cU>alq literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T15-43-02-883Z.log.gz b/collector-data/auth-service_2026-05-02T15-43-02-883Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..31baaa0df32a0efa18012a333e63714755b88cf1 GIT binary patch literal 4466 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 E0KWgang9R* literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T15-53-03-023Z.log.gz b/collector-data/auth-service_2026-05-02T15-53-03-023Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..1abfa8ed6ff2f625a190f79bd31c37ad1e466340 GIT binary patch literal 4343 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T16-03-03-174Z.log.gz b/collector-data/auth-service_2026-05-02T16-03-03-174Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..187f2d1ae5365d56a018012c7324e133f9ce09f9 GIT binary patch literal 3925 zcmV-b532AViwFP!000003Z-1zZX~x6ea}~PfCNY$TqcWEybNF<_ImAHy_>a-0Bh`n zEVZ)(OBz`k#ooUUiquHm>{d6c_i0|{G`q>V9G)r?4f;E!@$nI?f&-7 zSFgJ6hqIggyYBVbhpYbj*xlS7&ilK&{-XN>CP?XbI6(&p*1he%eEG%qUw1#8-5=k- z>%M-`-JIRu^B{c_*m_YIi9_&6u$XXo$xcimt6v&-ZA?$tkL00_qO+wQB+zx({3kAT-@`nvPm zv%B}RAQ!^h?&X^|uikV&T>SVn@fZF1<^H+U{WpMP?3 zc08K}CTAXj!_n54*)rJhG$9X@`2Agf+g%?1yT9IbXP5i){x9c;+Z#APT+Kd#BEIeZ z^ZA=^o}Tcp{_1f1p^Ny(8H5LG+~b&c=kNQA`^)}TIc@;Y^tdvEr@Xp9c88z3tNaST zpCZwKrKdN3Skt99Mgzo8Q(P>&X>rg%@OJK7zkc~$_vzWq{?q%r{`RgzW4b>PU)}wA z<{=hLs62VWX3-Y&8~Nd~U!VgfziBc(BzAMi6(_*}F`36zC~x`Z?AUjg`>Xx2OJ;5% z5)e)NS7SDqAh4?qzG*F;9eJoYnr38&z?8PeV@F^TKgN`Y_kMA>zV6SD`@?m2++X#F z`{N9f!8oU!XcvI3c^t09<8SUSFJB+_*T??$&q{?^CxS$Jlq{;yqN-!#DRwoEEDpkKi+=m@KZPQ{|GL`4M~e4 zq?oD|XJfk8ufBblpTq4%e>-O^3A_olC#+8k8$gW8RL%yXWSMceP^=+auznmg77UCn zkj!U$GGz-P;f57p1hS^G{q}go1RSaI@(wgH@K z=F^__NQk|4;nC~F{+B5Q34LaAZ7xGQD~XZR4nRU6Bl>nvG0C5+h5Ktf=%F}dGxh`-8VTL?GV9+3F%pwRCEw*QdlxdCgqRfxwJ!u z7^B)oQF4hJnb=}fCn15D25C+fa%th60d%M)xg?yA%w!&0qb%*510y+WMCJc|-`{@d zEKZqJ2KXWQ$|SR83r@ll(b!GF$OSN-^yD-nQ{rudCP0@)WNaZelPTNOhl!DYH#!d) z2x&qAG%=7YSTpM!%BPSG+N?>!kR8z|oHorbMPQB!9#29>9Gg1Awa_{eK7s=xuUH`V z;D=IGo|r~xfJj?tC`+<8HtOFuBb~D&$-pq! z-?R`c7AE2hHmVaWDq-fGqb&!Fw6=Q4LhL> zk11~VdKRrQ$}(#;6&6b42k9n%Y}-o*AQ$I|!tz|91&VPlKrJjJT8O4*pv~EyGbtGu z!ov(N3ll7Q6M1f?G8qs8SI*Gp;uyee2}ztO32l{%Soledri}r!=u$zrSKFqYCDB`^ zjWjmHX|SVh-ca$*c`(tn$1&%@N#<3BBNxD-UPou)6Kp1Ve&O}VfR&Mk33-jJvZQgt zlZwJxNFW4njW&t1NJ!Sq>dzW`qyWiGwn__&z!p4Byi_wJTS)AivkE(4n<^jp_VVy+ z_lvOQU5Ad$TK>2HQ5pQ^7^ zjT?bO+Wy+HqY)~R+_s#=?PvKPT24%k5Z2Hs0ai_%BtCZE~NpenZ>Erh>d zs2yR6Ap6W*2KLy@c{0*@Z3J{4ycohM!jv$*BsF>AJ>E>JK5L)^6v9N}UgY3D6Cd-m zKPi6FWG!UD(FQTz@5lk;tOVCKFhK~DfYdg!DA=36mJJxT_3W;*5-(y1vwjDdfkSs3 zmkif~0Xwk4SKqqKO}&(JQhegUgQaPqLS9ITnQpZeFD<0TwF~(n^BBjqPSx_ZAyXQj z5Vz(mo*xi=yS5&L4;k~cC=Vkxm_vqo+@8^bl#ODvs;Ck~;<1BKhjMx2q6Se<*m3>Q zD+7zQM+zh3ScRSyQ9Wc%6iMoOcETX!NEPrRigA__Hik=vW8Vs8CHTYYV7 z0*JyV-QaM8ij8J;()(5J=bCLKUG;otfQJfJV|g(Hqpvl+CRfWnT~VoKN0C=^wO||9 z&iI(DMudzaTxP9oqc{?!&Y418BGH&WIq-vm=Srm_W**CNOaoRvl6XY#)Due{$asy5 zk%xeF&&(PPpisI<^z1%L?-#O?2u5M%)=ti-tTwo2V4z9gSc{PhqfcAhQK&A}Z6PfR zV21i(|AaE&WyVWmlCrjzoQk5>*ovM3p$=2edO^y~Y=d6Ehn0JNt&@;N>vc+T5`M<@ zVTGl)5;|u$N0XF=NawUiMUv1v7j3J+l`^{vRLcbo!99r-$BtBIMN=kUwNlw&^(iY| zX%e3omOz+@+tQz#p}AXLWg#e~{Mmfow8c--L(bmnB3H^?Woe@%mU3zrI?>!Io1|xp ze4VCRV@MK8;4qHfcVQ8wM4IfT4SLE_Siq`9c0Dv_VBY$+W#S|vSVB!EPPt`^6`lV{ z_=TZu_AD(}zCKplluuJ;8QyLs^chb9+XE8$(dJ5*qLNStgZ05h)%!+>$=5aZr8gGt zfSXBG#)oNHZo%9bA>piSu>_*gK^oHbi}49I1{^i;E%seo@^( zo{B0L^>SB6vO`^4ct%AL_mw{BcgAGS6O{+Y3ecAReN|b%AQ8|{%%{!DPY;MOZ0Uk1 za0hW59WJ!B8zCa1cH0=RSe;=Ot)8wdv4}gZ+hm$6Ou~hjiWhwxPibmOo zlaXk^4c<%>wNLnjn%GoOax=lCvv_$oT!0?Xnkrnc)8B#(K!YR5Eq&rAT<~5|$Id9x z(YW@`g-BmO7T8PGg5MdNkCYA$xoKK3PxzE( zH$x2{Y%?w8#&T!@NS~>#_lHe6&Sp|MU=C{y+y%p>uApITHeZ@yKB6dH9ufd?;}shD z0irI(NxoA(LF&k1&OBB&bp=h}Lw!qIr%?*o#PU@B}k&F|)Gt6E!r&vG{ zGM(8LMrVr~kF&H=_rdqW$PfL+V|H|5_9Ax_kYmEDOI5=_%$ zLkh1Dd6yed|@zsz_y;wo4f{cU$@`-QERF zV56^ntTAJX985vmGI@e})?F!3aG~7g(|o$WpkleYu9--XT<2(XEw>rSBF0SiaSJ1{ zEe&ezT^J`Ar}~DGHd4mEwC8Ty=VpA2{&hiuoW^h^G>b0XMkn>5g^~sQw>bAgk!$SlUaqeRk&tPDqEXNn1+?zGIS7Dvl zV(yx=>YD>k&@{04R@DIWt!Y$mh!wLWI##6*YYa*V+2mf?rYwfS#yHOI0~Y*98tA4J zN%hJBoT-}IpN*kd&ed{r$6di#Ff`lmu#}%s=nSVVHY+D-y;F6U7aW6YI(u>Yw;x=0 z+-{^40GYR2nVj|=^su$25#b?(x}_5ek~9|}6%+!x`cmL^CX#{tF@!xoA#zme$QV~0dm0I!*V5xl*9%C+-7%^%defi$p#0^ zVjmp4b7RC~PwaM*`R@a&dfZj2>S{^`{McW2l|+#rKT1-?p)Y8g23`_ z`0aPUelrX|UOgY)|1^Am_36X@{xE!ee7N2}J?(FXU!Z`<&u{@}KuHz+H{bp+e0lZp z_RHs|{o~Vs&JF)b{Nd@pR`3ZZ`FF#&Z{NOoJN)?f=l%2kr{U{|`}_U%;r8KvINW~N zKRh2+kty>F^8MlP@u%Ut=exV_A8zjt`^Rtpb-n+nU$Fws;Dk;O{qeT#nKO_(!N*^2 z!3%_NTC=C?_xqdYyZvL+x(mdR-woe<`>Q|yX87^uFFy_6KRn#+hO6tt?LYRv48!fs z-Ts$p6)EiJFaPJK{o`==@c*~>yW#5Y_Im%{*AI^$;rijj67Lbn)5|Z9i}&^L@#^_$ zKjaTjtB8d0-SB^3z5VWGz5clW@bLI)$oL;CfB-H?_x|_*f#k(93jCYfr@syVe7rsE zhreFk-tBKzVG?uyuM%KNr(Z26!D7gsK%9Fw{Q9dOzWT#w;5WY-u20yzho{5OSCA1r zoeZ%Uf!Tt50+*yZKc?r+5Cc|6{&x?58Ezi#_q*Zg)BW`qH&=(NB@!KE?_La{tnii{ zpogSJeq5RIe&c%$*N<0E?^h5AlHGg{ZI2cpPR{i8)%E**%W5J4;>mc9eyrtOApxt= zPZ#Iy{_yx|z%Rq<$MfVEA0OEEt_+m&>6gj|Zv9k(K(2nb|Jh&N9o`Rbe!m0+0#esJ zf3__^1V>@bBW{5*AmVG5JY?Xo`m>GSlJ((_4)ORLMsFMhJcsHOem1+C{q^1L{hF^L z2jraDSjdAgzZ|6FhP-(`3=e-DK9m!<;$8>=ldEGhJ2!m)=1)hz`0#kMe_ZkT6o9?2 zeEy&A9{xG}{dxcRX*XaXw-ziYKt^sf1tRczc0R|X(f8_G4)1Rd!{7FwcIv=)ge%wx z!N<6V%b`Tpjkq-R+0l!ys-Y0x&^xr-wWm?*FO@4IbC*ha(`z7sT=5Y^J~o zvJ2)@#TiI>O+SyLopTUfm2zd7>i%q&z3J?V5Hh&jk}_pET>*>PCGBaxtqn15-v~p zI*UdR#H&HIVHK76MS5LiCS`+B7OwrGXC-BW&gFU&Oa@Zg<)IpCAm-sTy!3pgJ0jx>gLAwZUjHeco$q#QLX_iLdi3>Q_F`!B@s^bhku6F?DSVG0?=?jpjoUgii$Hh&rDFlXAT5sXro+K%#}2 zUx>TxL41C30#z6}mzB_t15kFYq=EyaT)Vn0MTrV6^!>b>lqGVM>I+O8&k?dBj|(~? zO$>-Lc)uFcY(FgE*wty~g>@2;?AK26Ht}ZVrQ$<}yudr>M`dCrgjr$;E1&hzSKDIt zcD!=|$npHN*q)gIQ=Ww&yE(Bc!XYj4YlBtr&O2aUXeCyE$%P}ctK4nFlKB8}vE*m{ zEh|M0*;hP%+wT>SOoG^FiNyYr0y);X_TR85mr|#?22Il2El3+wVyZB=O8aH5_tM?IpAaEiM}1L?^gd?O`QkDRt>- ztc0xOzjLgmsK?64f|ezwPr7y3i6PQzwr}5kO5nxK%++|JRQU6!JZqZsoa0xlWUv@( z%ZVbT05#KTFdcRfCQ9>UnarCNLKsr$l8OpA=0!?*HgHE}bW9yuVL|5T)-rp83yI1HeZuxb5{tZvJQpJ@ z&Op^!a3Rl*m&F6cLIfuy{WHt9o)`TC;@Cl)qpGVRC!_ovOBaL3-q2U@0o@v#Fs`ux zE;>hA9zdyY&DJ*z*gMEB_J-=X^B%mHDlf6Us`o&_Hyk#vm22rCTTvM~$}39Au?X3O zJpy1`o`_h7?rSkUhK_zc2y8XTI+Q#ktA*hW6J!GCVh=xKf*4$rmJpTg z;zXq@tjyr03rT)e))bW|6Rw`nrbW)+DA%Q!%N2^Kswie@lX;TTSc+KLu!U5n!bYb> zerv=j$l$3j?JsCiab#X@xZqQgwge-^mNYXdZzfq(OwUJ%f|xd29CzV-zLb<&`^v}K z7BNAHJ#M5xW5Rj`x5H&B%owScLnUR8E_HNRChf8azMH)je8kvZ{!PkSIo6ui*8Y0} zpJUA_Oe{5Nmjwmvdd>(jF7$TW;$}d<%4v*0t@15)R0&dH)!rLZrSkDGX^m{Hk0mA6 z$i4ND0?)bbkTl%5XQoN%KTCJ|khD(%J-3!+ zlO_zF7AD`apCLe+tWm@21{zy%+G4G$>aIJ*NxP81XR_xjN!u(Whgx~Q%!rca8>qY5 z*y&n;(Q!}bLQ+{iC2kTpQ&HD(p<*;d2O@}6mk}=QB{5{FT$g<(DFV9CRC!7zL+LN- z6nvTxhL#vXD$7c{|00=F#Ku*UktWVPgUNaYBG%l4eQdH#|nmNc&-apoAtVOH_7 zBvDDbGklnr$+kb8CR*)9*RPs8hDt%aSkx#u!6tX4DN5kATEteOomHy$u_{4qyM?S- z0%zYUI1}&BdJIP+qq-G2$^eOSvy0fMT8DLAuF#gRoE&?J6Aa=fb2V3 zRdeCRnCI=3CR;^qa_jW(xv*QzYwp05FJ%gYqX225Vs1vl ztTa7L1pcEyYjdT6KvJ!C*q$)~#qL8v4mj1%Y}_?M@S**lXaQ2FZfG=|2<7dIZavcv za{!F8CO%v~QLH`k^9uZy$uR>_tZ2?qH4LMG=UDwU?R;LKaU$fKOsT+9;XV^bl| zp2`+z&Wi-kZh1<}ur_=<934n4MO)4rYWsOZB|?1^R8vq3}y`kK)|3UNh9;IBAd_-RKfLeAhFyv5Q9=Modi#9c+T(@=bxfMeZ3UNn-*rAwf)uFM@f)_05MtL@ zi~^NO_rFEm6qQ8LapQ$RDHp-=!bxp!y|pb7yvA{Ct$ud~-mNJl>&h9BVWpg<4Zy#c5;GDlywQSc=PIo3TwlQht%2hxmd3ul*1hvuvdJb6rk~E>CXHc+ z+Q0}3IT%Cd`1vUP^M&*qWOQYghHmea@#195?1ILKa<#M- zDU2X4`fgj66A1)E<=0Ktg>jq}IFHg>Tah6W^`1Qxz?h91pLeQ0mLiI^qjH3lF-hhg zEyZ~7A+@#qjj+Uv89YW`5)fRhr_5dA^CK>#MS;Y$*+F~eUNwMZ{E~=G6Uh|BV`uE^ zemTwRo=s`9!UZy|_7ZRTI&zREX@XV%R-}ipxG%7=Mw%VCJWrnu_Ml@P(n5?d*@KR1 zSfBFNuq(u~d!kMCK835Uxfq;u;k@c}vHTjcM+t(fO{oR18Anb2HZvjx$vDoTt*_iW z?GJEawY~0w!aZWc}#!AGal>{ zg-7(X24arGUd3piI&TsxoPd1ni^^Wx1;kk^b^7@PSod6-SE;~rsDIAxGrXoH(_vg~ zO>l}Ah}M1^@AZ0Jm`rTE#F2c-Pq=O}ZCD^33!E4C+_s)DbO=(4)8QUw;$J?Wg?k*4 z*F45AQp2r9Opv&q1F`8SeVNjhUB#&^>6zCy1WCC;s_TJ=|^y~6}) za>=zpOjK|l`xP5yXhq75ZnXVu(0i?QL43ommCO73TEEF5szkrIW_mu;@FN{xO`J`; zQCN9(<=6@=RHp4#=m?a_sEmulp%g;E>>ApZ6vN6#6{L$RtHzJaB+$K_J90%<+ zUVKvI@oul##VhOPdf3kef1yLwa&MK(dmT8DoNsNhQsD8@LnHC@s&9Mg^)X8SmiPS| z@W+d?4IY^Vf>iRt_L0zT2PYk3AQo|(?Y*mt2tbo+wNZw}GLn{R!em`YEaMC&!#?dN zsz8%Veaj=WE8VT47LNapAv9<|SOys^g-L@SE>LzSYg1F-&gZZU2+QUKA5{U4zMi^e zTumLGyP%YI6Hww7sgCy-)deh4?|N8l_;H!t?r94l1um`@H(S0ySs^cO7j0~m4o_H` zk(t0_8KjUq|8>j=FSMt*=TNZ`h!$5_Oh*9IcvGxhWydnWK^AlVHr+KA?h|~2hsQGF zp>CWtn6c83&{eoWWfd_k{QR~fQmJwham~^PmjApkVdia5s;bm$>{e;eWM-S5RNF(# z*u&kVpJN$iA@ya*jdMxI&bh{+or;X$oV3t2RE-d0^FL}(piY*Jv(+$|X!+j(EeR;< zG=*{(rZqi69gIMJA)wkllnQjzc6o6`N$hUc*Dsh0Pc3}3fEgF<6Ah<>=S}<8R4tUb buaoJ&4MWov9LC{H4H5X?ZKEA>%WMDu>3CbZ literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T16-23-03-499Z.log.gz b/collector-data/auth-service_2026-05-02T16-23-03-499Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..f3e2993cb6f7307f99328f9a74e43adca97f85c3 GIT binary patch literal 4201 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T16-33-03-671Z.log.gz b/collector-data/auth-service_2026-05-02T16-33-03-671Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..d577b4516bad68190c6e0928df902f2a74e85b68 GIT binary patch literal 4268 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 O>;D1qA!-a+Z2$oIk#Sf6 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T16-43-03-772Z.log.gz b/collector-data/auth-service_2026-05-02T16-43-03-772Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..98fba738a9e0a77db0cdd37c50d42d108c9b876a GIT binary patch literal 4337 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T17-33-04-572Z.log.gz b/collector-data/auth-service_2026-05-02T17-33-04-572Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..61d0291a0e5f35ee22f09f23e929356545cab300 GIT binary patch literal 4283 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T17-53-04-876Z.log.gz b/collector-data/auth-service_2026-05-02T17-53-04-876Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..6733ec7ea6c389e1f50027ccf12f7659cc8aaa1f GIT binary patch literal 4194 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 C=upW3 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T18-13-05-086Z.log.gz b/collector-data/auth-service_2026-05-02T18-13-05-086Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..4a8c6213294760e481fc64ef9a6459d6d2743c1b GIT binary patch literal 4075 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T18-23-05-266Z.log.gz b/collector-data/auth-service_2026-05-02T18-23-05-266Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..9ff53f1de1e7241b16c8394d6ce7e6dab1abc985 GIT binary patch literal 4442 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T18-33-05-422Z.log.gz b/collector-data/auth-service_2026-05-02T18-33-05-422Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..fe0638dec70c9b339804244e6c7cc7380479915e GIT binary patch literal 4074 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T18-43-05-548Z.log.gz b/collector-data/auth-service_2026-05-02T18-43-05-548Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..5dbf4fe3ad24714805b5e53e4f3c1626091c13f9 GIT binary patch literal 3901 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 L0diPm(qRAqZG(Vl literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T18-53-05-697Z.log.gz b/collector-data/auth-service_2026-05-02T18-53-05-697Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..b3fe49f2a782b522fa539b5dfe7a6c1480f3f4d6 GIT binary patch literal 4172 zcmV-S5VP+eiwFP!000003Z-35k0iNqz57?B0UNLn8_SOfGNJ$hUhS^dAM(z6w1R>r|E8gdw+P?-~EGI015KD=|6t_&6{cZ<-_Up=@s_r z@p!v`dfMMj|KtQj7T^(3@MX-~o7)fj_tUq>hll;`>2Q3QPKS^C0gjOKK<(g-U8~< zo$=@SSXpc5z_acBC=cGg8tr-ZzWeob`?_TJ$EVYR={gUhJNrD|`2~M>fBehz=jZ+7 z=iTHynx*M?1W}~^wBJANAE*1{{~aE7)6Mg;$Hz}_d;GZYgaFZ-i(Sy}9vlP7 z>+0uC@%HAlpY9JI52s1Y!g6{C!Eps@`B?9PbvvD3wb&IaYv~b?Uyb_j9!&pC9}cJK zPy5e1HK8541uy{`t}JhDFoI}fJ=jmjBxjh~JfB!2#9q#V;zlsas00G0&rf>6_ zK7bTv-nWvT!AiK;lA9Lq8QA*qedz_P!s&Jn7k5=plwzYbd>VoB3e?BC1~bKaYQy?v4-p-SqVN;r6S$o72rAlEdrACJ)y2 z>Jg%Zi<$0%GoW>yI~4^?;fV@R+b0Wn&tJ4&k~d(_9v}lw*SOo6kp)|L?zBQ3dxsE$ z9--&c=Im*z3S-ajes}gp5JPmPNosSsHZ1zoK$~V{J{1uSW|B5xl+d;w^UX zEI5=G(<$C@HONCH@2Klo1`Dh2=OH?*H%P}0a|nTG$-!(!mZ)@}iqI>s;`S;;u-`OZdZ z$%GBz3&;j3Bc_7OZ;5EMGY*i3RXb81?K$>EIJ7ee#=IVm=MQb!o}^kiQJ=n)KpglY z&{+F*$n5x%vNZ`rq{KeDI(ln0cT#3A;nk}q^`voN0T+D_(Il1Qov|+qkzclL9jpOT zA~5&Mjqj_efFc6YFI{K1r1HKGuLsEa6E{%^zn>37+{F^K8a%)Hi3est$mVu)T z$CRX`+PcM~vdICFO6rb>U46on_)05mA6rbV{I%~J=YgE-H4TS3Tx#mNCi_Ox# zsu%&S={um1!TZ`Lu53|c2xKcJ-ax2H3AGzcTO=@X9RRcrD@AydY;|=;$Ye)15ty5T4!58@Vc1x=Pmm?iC2frwPpHZscyZcGh>3*%G6K$QWseVc%tziAT*3M!sk z=Q~JHf}kJ#%AgT~p;nRkHLhfkEll44AK*E8)0{iy4cuo+E`pKT3A9k6pp-XMB@#Wm%?YrK1`;6&)Fuq^ zfUxrxqR!Ms0MvLCcnxkBQ<7UnVL=JEn^zch*rNAY*1yzoHe8G+u!Yv8Q+1uW2Bqbu zjxIZn zp-$f`@zmG{tbgtewEe_2a2splm-sD2rfdY!CJS^$&1v6>%`QBy`eq^dJSJ{v7o2YfR z;udRu){F=ZFqy8DdQ^5}X;#D0v?}PpaBQukNxv_%_jyiQ_;7+oJ0{3Q&Ho!sg^&+CODa&GauJn^q2s||C#t5J(#>Tw*swn^Uesu}lIf`Wp$Xi_ZljhE z1Xn94E5{A_d13V0&m$0<>U7%niX?zVL&ti93o9G+ymTgwIN`2{j#D3*m!;#Rg#;#i zsyypGQCR6CMpLVQTjrT?k?rNyZhTh+?{UECvdU{o1n&%AIJKn(GY0g<^ytL4$V99p zFPhMkPGS|$%sdQe9M41WU4b^|p0OdTNj+mTxvup9WMzt;+{js$uw@-mzXx&*j%$&i ztOz?aZb8OtfX9cSs9rq?6~){i#DvvNoiy8EjWF0dPW zW6TxNBW9mk#X@I81Z$Bi2QxlNTC8|^_%`g8)G;<>dUP)5Xg@$HkSJ|;!u{p= zqJ-Us#rpU)o7Lh|v$#Lj0$WkWZQN*Eeu4)yUt;MhL>Jbu%?%~V&_$PHQ^~d{;ZC`o z?!uA;C28(;6s6egXAY!kLQ(RO)*ix&Cdi|8BlJ;Jmrb00pa@ZvX;YDU?lm5Az_I@V zB~hwvxmHv={4?Q&i|o}YB(;cPb1`K4eai6kH+P8^w9XIUo{!Z|blW9xNNQ%o+4-}v zFNpy|y-j-Flp#jfGbowV*2ShSK-zZi3Jtka_F`39Okc4KfoVy=Uf-@{l=RwApDJ5c zpK%x$cU!aR>QfvTS-gj+8%aUK$cp^=`nS0 zz;l((XmPq38U(w`>J(`qxaPi`3=rQgQz!!S{YxW$%VX{`ZLLXCNB~#VH1=f_GM)=6 z+?-WXC}&M~q$gJ40%p0Jvh`HT5Akd|78DHxJFAlDFS zt+`}1Ly55?pQ@M$5f@Lf_H{)DL()?vry$8`^|{uxg(M3Y>fC1A(M2BotP`>!f>bC2 z%NN}uLRO1I%dUqZ&S2A}SABOzCM_w##ymo>oP@q{txap)w zUqN6_eFsRAKH+O(@QR^NV|~V?C?`rr7KUtr8>rf-C#<2?9QZk>HeU zQalU6Xgz4x-)kN9qE^^Cpo2KC{qLAzNBQoVc2QbE5zyDVSgR|wsurfUz78=iql7Oz zZB}O18z4V?=UsjP<6^bYY8g(DCxihyfeE#XoJ zd-qXg(>+i)+^v`&AjLbMg^Kmp)z;a?cDSyACErxrQjbSg`I&X0^I$;>zVHq?xwral zXhFoZ3!4gYAXY9zPVtiO z?(E$eWG?cR%>lDj`X|HbRmFR-MRo9Mx10W)vghd53Kbi&Do`|CH-y?Qm7LaB-CcF) zE_DpW;RKmJ0CU@6uS0iAfh==J^MhjSMX7YN9IsGqZ*)UynR~fEs9Ty$&~)OBymGv_ z=cB6(LE)0)$Z>d-L9NJXuGo9(%Iql0gPmVV*fFZ=&a*n^j*oT%zI655aj;8mDp=iV zcr`|GDQSw*UFx7n2Xma{V&70aMA;uYuXCxKTU6YO{l?{g1L>lOO?dk2Iy{oOEA Wuk^>7y7=F|Dkd_4Wc&2SNj&G*A^KmYdgKMg-zJ)YkEIQ-_< z!}T-v_V{r6=>jr=kLl@+H-A^YFhLU7@4x=-n_>9j;riYF=J9ra|Ksr0m){PbUVS)x z`uMQFe;AxG!!L;6Km2n35bMFl`2FykFMs{rSLe}wb3ESehO6t-;XnJ&a5&uD?mr8Q z&}g3D|L@2BEqX{^9ud;pTX^-wh8R@2)?&xjJ1f0zJm3^}W8j zez*T|c=LD~j{g|m@82KqKQ64TLr6RtW44OF-X8xu{QGf#|8X}sB=i1Z0mxv}=sPp; zcl)c`)4So#9~XZgWnAZlJb#{YDV>Kvv3i+qRstAK)9Gwlj!=yFZ2M;;`sV86`~BT% zxY=Ld9`5!x3%Cg0JlpLV_l1mlcy~Ar|Jr}ti3RS+&B17Z{PUvZ4Y$8P4g3FnINa|a zhOqELM2I0yjrGrY)raVQzVQ15mh5z6ef7og;p*{WKg6XK#{_}t+3^$ya(MXH@ZbBx zX+Qkq>TtU>6=c9idc{5@3ux$RXlK*eoDp*1&`+0s#XyO{6E1Dv%W8kPKVI)29`-lG z&s>6(7M|h3dH1vj-F_hv*G&w>fzl2!~sTA8S>YUx3}LM4|k{i{g?l{-hYt!T7;(bJj3M^wR10Yh1P(QSdD-LA&e~#a=Xc4{uS}tJ;B8uR zvuw=p&6~fT9ntarW`Do*HZ1=A{I>J=>4t_7*>`aj+F1e$*zNX6XgXr(vIFbE%a}*e zVZ-QbfEYr1fTo>|VB;*CSX+t2@~Im$=?wT$ z%xQEm4#5()a>)B3<+Ov z$kkX<8Iw}I5mfm|29v4TP|Ft+1e>ObqJj~zWKw3PKB^E(k`P*5D^=d7Z!RQM0?lfl)OU=#y`8J@wU@AD74_yqIlQfDbN90t5+vj z7_;@$>DdYZD4DwN}c#M29@%PDW8)p=2pZKz9{Dn8wrt$^T#4jLQk z81iyHn-S>h1=O#Aqe&%lJ#FyPnPI3i70qbxy`C?5p>dY#ib2a86JS*HV=s)(J68*m z8y_ixBKrE$e)2L`-~+$;AV*?0~5~}mB!XN6w*3jMeB?qNTUJ@yJ@H)Wsr|`cZb3q1mQ%< z#peAOMC4<3jYK{aZ7@zOdrhULD`iwuvlFD8^> zeY6&VjA@hwf{+t*sd+JMD#f~%VpzyMpk`JUQCXWvI-_cZ4DV$XAP7~6e%hY$GBF9# zhiOf0@O>FV_H|vrAU*;OE^N>z3k#>(>l?D@DjKwmjjL+pa8R-HECIsxeHo zfa4CT?b>}1waCTP73niLnZ*TtF*XD#3cHbfui;=B6qog;2GbFpi@MVFAWY79-zBIA zp;K86;ljC`!M1(xarq{QV9ZGo0JVOH+ltjU`^eNpb9#SV6d;ZKZCJK zKU>Uz{iK6b-O&}Yq~=_05c&lYc?}!#`Y0qa)CQp+YZNL;2HUy`GAdZpkvzoQYm0q0 zn8BW=Wv~}_TmE%d5)ef@w5gUx*C|#8v00SoR~L{v`^0S#kFA}Aoo=KVip{+RVav}Fy56w_1|Ju<>(>6^IO$8%ANNXGvt?UF zXzdV_@Mew`+ur7*NtmoN)R*?9+?q+VYSp^ErF<#CazECV)g{q?$=7G1^bRTsIUP6b z>dseWSPZEr{-mrMo7tJ-rjNGeJbD8iOClblPaS8Kk_gC?Ud|?hnuOn4J=@H`r%{o0 zHTg=?a%e`yG^No=r9OFWpb1O**UaIgDKwy!L!4(Ez=Sw?z-`~L(1ZBcTaH=T9`%+ zM6JPwMcQa9t0!TEX>?|MGeR*#8g-1QDPfYTKk-b~kkGf7p3q2PlF?JMe=JxF z(bP_PQ$#3G2jsZXbrd9muZhaGpDR!T7dwtpUcj6}J-@0i_N7kOMJCD<&XPb+y{0@s z3IbGjYOE6If=j?ml`8y#W6A(wzGm@wopOz=E$UR$-YG~2-p@GO*50{5(>N1T0c#g6S7{H@VmcyzEuHZf zd|D1SFUzC_=ztS;FO;;N&c(5|2juQHZKNt755~+|;xwl0JfNMaCM^cyLTTz!M9ItV zBiAQ2H{+E{5ay*#)egWV(WGUB(p)lK;;hd6kteyihT0cg zEWKn+C+`X}fpM>iRU!&USMzQy*nu7OWObOawENbVwyb$LLhu3GXIPZt=sIvz&I9xa z3*`YqN2YgP>NuM;7W&EFCYgT?UHn%WxQ6H_V`3l^IpnNV7qt)!Ha2h!BKmoe*tn) zGE^5VTo5VQURq>xi!r~#;n>`1>}OWE#m%iy?eU4b^~&!BF>YmR$n~u7a_8&weOvF7 zMmW=$l3HQo(NrzRidBbbo6pCG#jZ%ja!9v8bvR7F*PNN$^U?n4qN0zK zCw1PGkvt0ZdPZf1BU?A?zuK@0X#uCsGkli^q|kcPT|p8gGduIV<{liEn6sU}6rQ1bN&jFm-`JDc6?HgeS_ml_7umC}a!l*VvB zJ=nV)mLbMItC>K=LQ}yRxGK@_* z?%Z&-;{}&^u|HBZL+naJueP3FK*EJw^{txNAop62Zbwv0NEzvas#U7|oWYyvoj3Y* zXK6XD?$}UmLAeT>bhVuFdudah$^I)8K(6A5waV16$2ox~(^21W`I_rdEoU>VW<-pn z6+2um+hE7_2^VnS**zc2t< zsym%uvbp^G;JU6aD)0yf>l)yO;Y3KjzU6k?NjORFa9Nm8eX10B685C9PSQi>p!82p zl0oFo=CR8Iyr0$m^p+zPm#FW_EtmxC8vi2T0*qK|14_RmMIH)G9V-_c`KAkQ3e19u z*g?QtzJSh!maM=@x*10|N-BB)3ydI|y6;CdD-1NM)vAwXUcdo+y9dh?JmBcyx$gRi z3o?z`$F!w3m(x)*EmAanaRhd=E^_5ZOHrsHXLC8pGu+TnSWq6^+-5iC1p~PG^*WoD zhY5Uoh2N1HO3?lvKtT`~S|qqF>qrF1u1x~TC_n4*Z5XUC|Af_-l4U$&{of#)OC(8; znH@4wx?8!=E?`SS=Y*TPxOgsM#nk!S^3vXAUf`+xT}?BSMd78Cy3V{^;Bi#BXt}$* q;O+F9sg(oRm){3`&HG%rb5uveF;`|{ts|^#wf_T4n+T0+ZvX&5r;w`v literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T19-13-06-025Z.log.gz b/collector-data/auth-service_2026-05-02T19-13-06-025Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..d640ce1c465c9b0db0b25e5ea122c84844fc30b0 GIT binary patch literal 4163 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 SPqlng<^KUDSES*kX8-_Tg7qx` literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T19-43-06-482Z.log.gz b/collector-data/auth-service_2026-05-02T19-43-06-482Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..266ce18097d5c241a66229c354e59b623b58449d GIT binary patch literal 4194 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T19-53-06-639Z.log.gz b/collector-data/auth-service_2026-05-02T19-53-06-639Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..006a035051821ef5be63139e5bfc3e82b547c798 GIT binary patch literal 4340 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T20-03-06-777Z.log.gz b/collector-data/auth-service_2026-05-02T20-03-06-777Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..3ea0f87412ec9eaf4a1740f692aad4120b962acf GIT binary patch literal 4276 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 literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-02T20-23-07-105Z.log.gz b/collector-data/auth-service_2026-05-02T20-23-07-105Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..dce149c988b0140477a2fd9fe9504a805d5b7430 GIT binary patch literal 4487 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 Zw4!aY0W!}MT%Y;!{{w;?=$PAc006KvyR85K literal 0 HcmV?d00001 diff --git a/collector-data/auth-service_2026-05-04T08-50-49-889Z.log.gz b/collector-data/auth-service_2026-05-04T08-50-49-889Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..85798d3797428e812edac0ac310046c5db6ade45 GIT binary patch literal 2413 zcmV-z36l07iwFP!000003ZEeN!R55`(h|X+FkAKlAEV{xe>YK{P@gwhz9)&!!HbeL{p=yO@Ltir|NI- zzqzWa&x?oEm+HG+v#r*f|E})qYO!7|o4+hK+Xq-~?tX`Tdust>JlWrT|E2n{c)Dxu z_tnF8vut*|=BD}sMu>61*nt)Ese1GF>+jxGpO=f}ZS$pit$(W9)xP?%d8!|G&9){S zFlKPXrt>s~fe22`j~}d;_5N|a{;*ly z@0;!0UzW|oezmzDH1yG)F6y}R51Y-pt`^Jv>VM5wu3Fu!o3G^37!j>R-*>X8TkH{Ntd3#PgN5)?#C-4_DuQtX?i2 zRxdZ(n`XNkuqQA?{VU2kTx8%FPJ2Cg({;1oK2`YA4g9}=w2o!+|D6Ri=U_Q{Yu*(& z2gc)RExq`$l?a^iLtggo?eY9HDt8qcQ~infZujTGAMuule&nysV!gkuuKqD#}04m3^DTQ0*)}1k$b5&9-QHGG#|3m*=)bM zYc`Mj0mA^+`%X&DI$Ddsh%;(5DR7eBXA$v{qNXu&I-TQ+^{i8<6(xX971R#KVgMG2%CDA#$AAgpkr9ip}c+DIuYwUaibHNLC&=r^_~Uk0OXN zpq)=l9KgyPm4Ors$(GP(G7)D^hx4m)HAy{O8v{<8y3C5lN|LEWc5?L;vm~=A^JYt zWL0#otpSc^ZXx5O%UbMS|FqLs2X1zG;o1^J@;!tZ^KGll6Hf+u^;vnI6|Mu?egI~C zp&WXn8G1Dr;S_sDVTb=xz&q+Z=p9`<7uxr?qX76O@yc@C` zU5x`*J39j~S%qMBW~jFw?-E#P*a(-WEOHPy z6zQ^@G*)Z-{ni8uvC5SkvD;oh-=uL(5vauq$7Kpi1{-jp-}R2A3`PjTrHO_K2>Wzj zl4qE~xSsAXE#oFT@2NbWvIh*@JC{rsWe?mMf*k`X5B^vnkn8EylWxNSNJ*#LHcuo| z)?sG1D2`fqWoLstv;RrvDTU@|d|w*`Y|X+B_mJ)1$)5Yum}hgZPwee_|DIc3k~Qgo zIdfc^41|lh#4Ch5d!ExB78=ig$;jiyY_;eD8KT3X0#o!W($Sq~bOY%(NVvQTcm?ye zdVO%hlI>drOW8!{70SJhouPkDU*;8+rM1&cvB)bWJBs~#E{GYcvsRiN<~AN`*z6NV z3nHd)O5hc>-ONW4UisO(?qQFl31qNg(ETRT8S3bj3cA>25=?)Zl>1d4taTmVn^cgJ z6&RwZ1nbOfQcFJ| ztyySxIv@kaU-Ud9J0$~720yQ0w`9O8SC&>b(kE#pPC)+fFr+&h%v&oQ^33c+MaSo0 z-Hek(iC)RuJDw}sc@?9v)sRk~6eHLuLnxfPV+6inu`D0dromo3ZzymlCUC8;<6tgQQ@&4%BBl4ztuW)cJK02W9T_m|XhpT> z_OqBs7@@7rXb96FQ=Lw0JiYa73kOk9Iytiz?IM@@c}eu`4P^Q>$0Y zdI2HIx`I5X5f#N;<7SP+MP=-0Y*Bk6%E?JF&&+4ZfLq<@#MD<*vNjTWyUL16D`3n; zQOX4dQ6fin*&>T5LMOhQ5fx~_TIs(Jc)kf0OJ!x;~kl4$~(?oOux zP85lK$VVDcI88m+oVH#ROoP8raI>qID5z446AHv6QTf<7nhUGR-ZK@yITwBE5RtP7 zrJ|y4@OJJYJ2^Z(&Jt=wY1q+xoE8Pm_AF^S-4KDt*-u+U6=5Wtdpx8svoFGWf?-4v z*Zckx=Ih12sn)Bz)xL^mAR(|mmY)3>Rg_FE_fIN=6QyPck@}Fk60PVnp$A{hkY?r4AX@`H-BborD&+s}h4 zuC7IN?FsL5+D$S_+GHs)2W3~}!MB!q<{pgmd5<50%8t?W!)dx=1qD92%r^PR7?kB) f`M^EddDnk(n}f+g5fC}|HR}HX)>A%c+BN_HsV2IE literal 0 HcmV?d00001 diff --git a/collector-data/auth-svc_2026-05-04T09-07-20-158Z.log.gz b/collector-data/auth-svc_2026-05-04T09-07-20-158Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..6e7b74ea7804668f1f038536fd511248135ecda8 GIT binary patch literal 43 ucmb2|=3oE=uFqeJKZk30UG>%T^40P54b;%n^zuFPl!?K;l22S5s0IKEnG2Et literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T14-43-01-877Z.log.gz b/collector-data/payment-api_2026-05-02T14-43-01-877Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..d11be4bb1b946b17c18e1c8dc94c22f050033ae8 GIT binary patch literal 4401 zcmV-15zg)(iwFP!000003Z-4&k0iH^e$QV~0q%h0!L&q?`q6-ab8N>+F6Z@aY#gw` zK1^mh*+yokH#0q#?0+9n)w`ooRaa5!_xid@5=DOeNU71F|HAMW27j`&b8cq{9NIU- z?|=C1t6})_Kc4r``?tgI_BZ#Zcf+gy{sk@ol8bMK?_R%t^?La8-Cy1g-y9zv_P3|Q z@nJX}-tUjkrv;dYko@QO+42w*ROvV z#zDTmIqir0!~4T&NajBmAso`1;kRG^^z|Rl1AO&-8jgP*-tXTZA3y$bjF>io9}lPf@YkEe{r+wN zN5GC=#+uhe_eO>gxN$YC2NV6or8WqmLLdHVduaXlM8IDt#1(fFJJXZeazIs+bGjIem?%1E6B zB%Zp}8A)2@Z zSZs~F{@?5$Ps9FS9}bWEry(r(0hb^a;iMQ^iwh$IXi{zPDtAH_tZ;+#yyUN5GYCR( zfj*D&{Hm30K?o_nO#Io-S6|_P3!7;gje}&c-*{_svR`#j6{*}*_NgscPX-GSaORVPdhN$8627S)QB!SAKDoQ)`ZG{6k8@E z%dpaH@+9enaa_H7ZDJWP_=&;kzEolff2OeKFI8|@l8nOmH1*Bvdop8O;HhU^3mGK& zgtye|eMoYP$YE-rEel~Sgo0A!7^jW0B#8-`mkdGB>&Z}t65(HfH$o)t}DOe0;pyKQ4W201R{$nIy?5 zh+cxmd5Vw6``vJJdpi98{wp^e?(X+rg*nz)aAxrX^lRi0n1Y%>N#p|SYm;no3yy$9 zGMG5OmG?0u4oy6kb}oQTv5r_8ShPHwj1AB1A_SM(0|*)LrY)HyA;^gR$z=Y4NL20V zwHG2-it0>-g!Gya+ohe1bg^F!AYr@AJP8207c)fPyzb<|hPV`8Hw7@-Q3O*YI%f-2 zZhT6>g$(h@O{zCN8(@542IHRElwfJc2rkk!6{R^$=n&|qMHs+VTLT++gVeQ zMTIY8VckqkRRqplJ1ojR4QpW?m=v$GV@u#>`$**!Gd3|U(ZE&y$Wl>2*??2;e>n?a zDJR%?g)WnSAr{P9+{}vk*#OoquFo1s6hkw4MavhWnGlU;&mg%&oOy&7m}Syx+=fnr6tKA)f`9nRzEUbZB4~X&O))T)57O` zf@Z~vRbre$smM$>Dk)wv0AkZBzj$HpWx27ni7Eepi@4Mvu{NPL07bs$wQ+RHg*Kry z92B3n%MfBRz$31j&;K9MQ>-C(R`KHB?Dw^f8y>%J~zcCRJs~Mh_R+`s{jT=ywo10 zTnF+H)2wlE!&y)QGY`7THwuZ4)RM7z;lr`mosB}a7g}6K9CfY1@7RHtPO>sn+X#ou zfUfqx+e3`t3W-wJ?VMrW&4QD5W`gv6*jT5s>e!a?lxB4%#U=}xY8EZUpFVwUax*AP zBJB!#5C+F~(c`rYm>?oI7(@{D*_jp_3PR#yQEpY)P!J+!3VpV*6C;QwoLn<83!)3- zyjs&RsTRlDM#BsViHxQ*US!Ws<6>!#W-s00-99ulJ z{cu5=o5@`pCR~C*v%3A-a*!E2j(eTAa7VIzkx{hez)L%DTl)z@LX)ezIQ9NU6k&Gl zHO!1G`!UYNf(?_RX*%Dk{)a3fyZS8CHdhP6C6kX!WPQypM4~MeWM%C-2n}U38)u6} zaRf}=78x_QTozgt9wY9I1sAoA&rz76F+9mDE{BgOZMnI8kGyR9hH z%oXOX6oR8LGKZ$6c$YEW^%n19W=Pnl>Bg*u`Ki>R_I4S~%b{W2(Z;M$F)q0~RaDA9 z;C#(vo2D&7D&*5m@jPbD$ZfHfrO`2tmBr4T%5F6J))TTBSr+KEJzyD_ zLeqhPm^CW2P1;Ka<&#Kl-EA=!T%()Tc(?dV9F;BoNz)8S6f4a{69}Zj$}>aVnhcT8 z>k|FuWTa7WqiLaKBd<)O%4XZL(Ucj{@)7avz?#vX`&)UElxDGLhODH?OADVeGjm~T zE*g)Ma-Ee!b8BA`h0f30Q(ML=apQ`DL6R0wVy&)}a-lZj^znx8{Uo^c61J3!u_-l` zWKtHhTz#lO;p8$hixpF2(wPNHNLlQhR=ryEEQf6^JV^v3yWHlwvZ_*roSlbkSXN|+ z#mTm99W~|3?_pr7&?h2F2|+?WC;96=%abypKy@V(acA zX_oiZO6V4mEHGm|M`~=G-6hhnsY#AH+d7w5slrLl5BY|3F&R*bR1Fez5@oDB={O;J zTdX~!Io92k$~Q|<+0@mbhB=n3!^{fIEfy&`2VT_-nI!ix&ta4BZR_v~I?8f_w!2}5jF50&S6452oAL3~U0E0WS;A}eRswZE zG{4Q`LIq9$1ja930kA>WN307o>f16|)-g*wADoH{ki1Q4Pluum$Uts=GXnVA7(3rSx3mZ;+X)o9k~Z+Zz={ z9|6&%*-e{x2$F#kR-N9Lcamj@MX!hYwhw^@FgQIyy=EnHgO7I$G8d*xtDE&S-qp~dS(A~BjSC$>p>7GtkEa=0`@01y*9e5RLkt2-V3<2{ zS~8LfrSf(J)h=+-MwjYZ$;I425Yjj|JITFbXU>67Si4Krnmd{tTTpet2`qxgnard_ zrb4voxy4L=C5@@U)Yw!zo(Mwhy~9!Pe%#dh=1l>`@kCNbt)Gk#<*eZ7?w1<@ju!QN zl~J$-^xV)bI%0VF!WDf?l8)1Y?5(HX@;rjAPF*xOES6gio6=bU$%Rzv9(MuwiMrIJ z845fAInzfHrMs1T@0c3#Db)F$ewSKd)1js{>ap7_hR4=JLxMZsU)%rPesYzDnz&?S zF6gUH(#rD*!d2%1$mX_#g2FUN6#^Dbx)wiM<|?;@E?%^vF)}OM&CG9!*p4I_>8q=K zF7CtpbmGOsi<_ju=6;8=OxTuIS|Nh5IE>V|MAFS_>KWSF{&v*;XGxUGjM0paxFb8X z(g~Zp(;K9FLE+e{sPp|ccV`glRd<0%Q&(tGYDZL@cM$2fr<510)$>0)RtIJqT9r!L zu>oY(2)xZQ?AZA+<8-=RjBz|)q6~`}z=@iTB#lkhO$TMk3UM!wqG&4+g0$f3d*3(A z>{IQbT~HJ-0r}2b{YH2QGi64#=N*GtKBu|C{W8?0_Wlb&dN6i&SyoH@aUK%Yw=1ng zTo=ddbec1V3=M^5_DOWRtn8D`_sF@bT(hz*XZu3CDz*P=KQ-qgS>aJi$cZeZTp%@oJHsP%@>5t>+e@rPk`m&*@`lh%@T-y#gBK>m7Qf=WVc?cIR zJ)h*ot#F0;re&tCNRYwg>ub%nSYL((uPvBhE+oWhpM~Nb1b)^Tb(ztibQgIW+v6`v zLWLd8D>{MR$2)Gtsp{y?rvLcsjjEUBJ+l{aw#h+5+VnaRxoZMq){pQS?F*Kq`ryJ%fU z`?+A_co({M%jLhpsP1dpVj^tD`)Hbuc?<4*r-iO`j=}-i`;PY@#L(LXDR?(ZTpbaM zY4V2@$_ygo^52Ox^D_A_5$qxr@;4&Bm;Is?17d2c9bs)5pe(jGOE59 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T14-53-02-036Z.log.gz b/collector-data/payment-api_2026-05-02T14-53-02-036Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..4048e862e8cb06b52d8a527054b5834c2a7e1139 GIT binary patch literal 4323 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

6g8B&^!onV_XO zDI{`i3N1<@?Mwh4T*)?cPmSPGtkoV!#8||nqbK>-F_>1yNEA99*2zy!&s#_X4bU8aEgIuZ#(#1vZTjA$>A(qiFjWoHl} zSuWl4Dk-2H2JoZ$#)Hl14<-f(>1ki{;^>za12EeL@ z!dW{oght;RLQb(wh)QN=?lISppXps{u71D?JW&X=fGbKoCXO zI$OI|5#lHdtqv7o=M1FgJT?gJjj=qpE9UPIXw-pndYmSW4MJGss1Zb?g$0py&8X`@ z&vHX9-!FH|tdXlA>MWyE=gdKxrmKTi+LdI}MQt|BjLJQWu21B6(XH8n@o z$CuOwf)HLCxZa^jxj#-*?uw^M>E6xuRr9@Q!H;@+HVJyj#ru%zE1N;6Ia!*}&MgWT zq!>T07Z0aoG|Ei#qUoHHkmlg^ zd4CY;FPhSg>As4<*wo5(GoGoe-K@T902gebA3x7-gRoo6i^{~xCJV21sVydubTrzw z6CH)GX7XQWUNN&(^!nmR6n+|G^VUV-nwFJqL;2TaxQa_;P;$P$&maoF zMS&eNnE|UhQbHt0Z=FM=$`G6b?|qR_ZwJZ@v`d0whX;% zyeeaI&rQwBNwWr)QE;P*no&8}HVR8Iw`lNUE3HN@%6KwZ)u|XIFRmqnATRfB@n9^|Kt4{$XVC2fYCKRj+J8N8e5)#VGlQ0@ZD~Z@=h^xit3}i0OqCS?TTNRzMI|+lRFi~vT<`ThhEqTz@iAa_w2osAhQ* zu;YppDM@i218Zql{(T%VQQg@l3x@49x^LSlS@1klscI~hB&kkS>T}A?kR!?Zp+9je z4M@T($4Q62S1^fiXoIg;VKXw0CN%4KDT@-AQYyKc%4>4&aI|XMVHr0v^R6^i%;U`T zMtvQ!ml~hLxl~QFMuoNav_y}>Uz9bD!rJROJ_ax^R|MukVX>QT2PQ*O9;|?KQa>5DPc?2Jb)9U@*K$TWnzu1 zTP6l1Vyxw#0z}|Z?McNw1V+Q~Po;cWeki9PUeI z59L1)5|wl7YtJOGBR{r%&x&Bgv(H*p*M&@hrAgzvIv@y?flPz$M@FKwb?sNt4F7<> zWi&>xcDSjddUR;Oa-6-nYQ1F0IZY=js=gS9Tbt@Md;v~-p{g$R61Zedi(SF`1K`up ziQl9b4ftfH{c+k64) zMifoBRBX2sUP1CuIIXx$hD@H84l zP?V_z6e0R@7NEimNUo}@ZekH212s3qk`*GCd**AhBY`$yzf8d8fz&g^JabZ*t zRy3#$pj=$73fWd}Sxjj@!n{^}7E}Q18l=SmifF2>zzV_kp{i|f0Oi`iNRHZG5{5Lp zszK`utkg@7pr?H24LcbVwXTA z49^4&m94lmKeYN2Ay)v6qPe!3AV>?&w~pKmc$!ZDRfGKz@)lS;{oMI?bixfTtE{4%YL^Swjvd23VN1q^R+#u>>8}tO(_psTRk!) zNV#}rI-0N%D9KH@*ruV&Z8^*LPiWpx3cXl40VFUF6pF4hT|ky8^XOZ1Vk_;027Rl8 zmnrY0yGu@fordNXy|6AI9tM$BcUY0j!zJ)4(J$l;fIRN}O!w(7Y!%qza| z?IZB$+G%y?kwAGUJGCqQPAGf6>qi-uP{wo0m|yWUsZOT`0m0?#+C!|?f1L>3X>>cT zMm%u&?j$p7M63vbWCqo_aiQoGDjF6_gmNzH@oPSb{LoO*>Ne%B_gFWcCMW_ox~)VL zkz{<_HZ>CpSZICS|o`e<8}yo`-$*2`AoBShBcSpigG`!d;HTne}1{biON jle%q^e4ZOh#d%(n5PhCQM=D7FqPX^dxVb7(?Pvf1LxdBq literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T16-03-03-175Z.log.gz b/collector-data/payment-api_2026-05-02T16-03-03-175Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..42fec6f6d8057a34a3c2101f17306c46511f9a94 GIT binary patch literal 4314 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 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T16-13-03-325Z.log.gz b/collector-data/payment-api_2026-05-02T16-13-03-325Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..92c0a56705634063c70125ff58b8f3af8e940b66 GIT binary patch literal 4258 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 F000^#PelL# literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T16-43-03-773Z.log.gz b/collector-data/payment-api_2026-05-02T16-43-03-773Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..193ea00214c944f4e3a3078da7adf831562a6a2a GIT binary patch literal 3917 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 b&y+DyOFtW9{CNG@lG5~l%sn6Zr(ysAM@XzA literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T16-53-03-962Z.log.gz b/collector-data/payment-api_2026-05-02T16-53-03-962Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..e7adc6545b41f1d094d9cd8f16fe042e6433a8b2 GIT binary patch literal 4190 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 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T17-03-04-099Z.log.gz b/collector-data/payment-api_2026-05-02T17-03-04-099Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..32a80acd6f02d3dba3a52401579f8981ced4eba1 GIT binary patch literal 4358 zcmV+h5&7;PiwFP!000003Z-35ZzQ>qz3;Ec1=fJ~Ffn8>f*%DK@OWlC`#C+^9%F$X z^g))&?t;~-wp3cX|NSCJl`4~&l^JB8bg7rgB!dwzUIZyL=)W@jmBF8_-?7^n0%m+S zeE0qD{`kZ2%gyuY!~5Z<Tyi)oW-G5?{<`^ngD;?H`Bx<6jOByW!^kaJ&EQ?eXyw+#WwJJcWR*d!3>W zr_-nR!*{yv7usrH=jT5A5O!k$K&n(>1lsA{0k;X zX#pO}rG1zY`5uYim<{dvn?k_lJ*%(~!)s7EuAiyW#t{ zZ{NI~Of(xa{PgAzFZOtRyxTu67zjE*8)^f2yFWdC9`I|o03Zn7bvp(O5W~fjy?mw8 zsxX3$*#GVX*7i6SXCR3Soeuh2`7?YtoQA*dKkwxAJHiF91IyfF#E!u^)9N7{gQtrf zmG^C#5gCZGU)l#r4h;7P3UZKQdWDx4s}_YA5dFm4>joTv%*6@>r{AO$i$8tYZux6< z8;ug6ZwpS8fWyqAv^Y?RsRWhuVBn9b?%aesV1Ey6ox!d2~ zA0GBI;*fE{U)=jS2x{Cr?TiH%Teb-841zJPiu3=rzqvns7~cHn!tV)esCj{U4KqIT z+A2t2+ZVJm9t?4F%*jCSXI8F*#^M>r@6@`ujAj>lMjQ*F9XVDVE&=&PC$+&-N!YM+ zsW!Lk&Vz)Q#>90tqzD`&Y}AtLVgV$CG*NAMdRI<6o4{hK9-x|En;`IPPb$Za2K*>K zzkGDdz>$C~*9>zz#iAWDcyH?%v>Lcb2xca<(*f(v-&u&`?6Y~H9D)tlz6~5hvQ`@g zY3Dp3x+)wse5VJ-OTeDOuRC}bz_OW+ay^u|2u8xD+GV;}2wGFlN;{Xpm@plg(#XjG zj-0f5$;g58u9`y)>B&$ZE~#xE?N+cO0!;M!x|fMjzAu8aaq@{RMokgCSj(KdteL1V zJH8|^V;NyBm!=&PL^~5#S_aGvP+kF`Q#I2Hcd zIIS#fDMs7x%z0;A$-rAuQWn-kh)WTEI}EUBi7DE}B<7kEVWCerk6UV{$HHdFhxXJd zBSQ#%^oxZJxx`Csf6F;%Y%mwKFTZ(Zjx2(WZSj?N)&XItEkI%DECk9>ntEteYQRFD z(58v|y1GH~uh}(aJiJ2-lyJ$zse%aa5P^`|c@7IhN_Lj#uY4aeu)~hH!y=(MxA>XL zmB0v|xH6jm&O3jIxL`0S!bf`s#G<;fnWpL6TfiBJ)~mOGvxOVab!z>Nbq*4S#%<(8 zOtAHuH@sBDgfGyBSeTrr)Jl3-=oybhShZruLbC$T_{;X15`wRpvC>+}L8MFMk&o2u zNTRt5Z<$;2;G9#3bQV!EO1PSP{qGJ>e;xk*csT8cKi?eg7w0Denil^-5hBipr&>cc zU^p%fROf%#fb*%7hi14J{briWu6uSyV2o8Q@;Ys0;a5gd?KYCbsmN@TeWCw0FWMQ8 z^u=a&=0!kb`$gW&3rDmg;=E-{89-D^a1HPCV125U#!aiwz>unH&e|{&VDL+P?t1X@ z!gh?AG3J%mSO-a{$JECuKF1Oux#lqGMc#?n;~jl29y0d_5ig|2m|3E>GCxvp9O+={ z=#h~zm}%)n<8ypgpkkQR%(WB5U=4rShC+sbb!B9`-r#rW!ShT9Stk}=^e>JVb0`z6 zqOe}L9nREr-QpymnY^jawlY3&T$<<=TXG1@i>tE+BCsY_rF}*E;)O8rC~CHaE-$<( z1k+TP^;y)C)tnfQ!kdr*H&Tnc441I*?~Ynd21iTXd4?C}Mr2xAFuc$<7kYds5%`ft zsiE**3eXe5Cxg~mf){2OnU)qtH_!kSY|jpr%5|!B?Uj8(35+$Z=|RRNm)a}jUbtQK zsaZhtQmc-mAk;ye7{SgnaMkxR0Vmg0UGcfJ>!-r=%93yZpKKL7_4}D4c$?YJGs(qO5v)*ggZdKag*u)6s(BvIW-qMe-}8fBEY&{TB@xmnS;n!ajyNf1gp z)^SyNMn=)7pHsU{!p=&om{D`JAk|fa9TI3pdbVxUC5Rr$kvgQsu(J$?&D8Vj9YDtC z4zEtRIAqCjB-@r%*^1La8VzGzY;Slg8Zb6gWbb-vn*k0(caj=JCgspvD$BSSX(GgI znF9*{n7Q?q*%1yh9jo3SpaYApBdrQq&rMV{(`{{Q3}ENYUJc`olT@YgVMDc0VJK;xa#SeFkX(;EJQPKNvhANp%b`2o48sMOAbBr93@>}&lB zq7qZ=O<97ZEZ%ptt_I0J80XE**M#^Ch}d;tAneG3by3+9A0#z#p?;N$u!Y>NI+6yJ zO{YN;4CX1DZm=67h<-*gwuJK_8A@(NX|59m$y3NuN1s%X9K|tq8y!VRrsi=Clf@QH zs1>Fa$HEreh*fu_%3;T%YNd|+Aw!w#&s`g?G!)uSKhGW<%{-WHoDrgnx>O~I7*6w^ z2E~h_BpY6zs7A>!yttZHCl#fcfuiXoUl~3YpjT%k<{k*UnD}d#FG?qb=l(NC`2opO zD|?HQ<*=RE_uAK{;$wTKHch$?TZ}wPo|7EwTX&*}_QCa+Zer-9}+5 zO13aQd!t@H8%txg&QfhG8*r4eYuHAV+JYAqsCa z%S*E|vlM|+PycO(M&rAq1tlQl_R3&J2DccLTXv2#CHT5*)-ZlXh@F%!3V)=Lh^S~J zj?x_K$#i&l_7nA|i^Om&2N^mmL-_$jbq(aIVW!;Cz^+bZRw+RS(TFLj3oS`#p-Z(U zr`iZfdK$8KX{}TzVQ3bc%QZ=wRSosm>GA`{8o~CVtqe(_o?EQ}B_W5&&{F%eg7qgM zd)~T6r8bGc8?c=fC81LosAo-WgqZ5G%T{1br6I&M)J{@q1ZmC-l2AC~_06CekWyS) zyDg(Z1dnywq1wr&+&;qfWNw$DQWjPdPvhEkTANBM#Oz9mwMlW()Ha>{h7WTVyor7O z#=QiOzQ~nCpUh`_TJ9Ffs4%LTol9+swU9$gOkKs+B>fxFn5E#QvUQihbL?;ca=Iw? zw_N83@R#)Z<|m}lj5i!ANTRNemDyau)lImFrKu7Dnnq3F(JW2e+WwP!0i4w(T>01R zI*wJQa*qH{Dq0)W;*1Hl@+E8hJ-uEypcK+GAhE9q|MtM-s)63)VM!QlZp)qO9~(hO z4ta4c^yz6pKE;pKhi-Q>WZ=Aqrorj)V(Wd&1Ell*3-k3PG??R}J8OE1q@}6(Ori9I zh*C=a_&)Gd@MvAEYwmIT+dj4A=g&iIfYAP3*9(e}y|h?KyMUV$wjxp-$Wg0u`) zLVstMPI&-9q{S|?D>+j^1xVc3>RW&j(ATw|mf=R=&|fYt&qzRNcDIWjF9+!=H?8`1 zvS8S04WDc=kJkH6&fv5xA-BY6A|PI5O1keA9osc`dYrLtRGreFSubdz3C+=)UM{H9 z3qEI9z!`_z$fq-sEu=o-y}+^DA=0kI6}a#R+t1*bz>ky}^<9Dm%;iFihMt-;&f~04 zc*{RCLmJ(urKf=+c4OB?mS=cyjaNk!U;@XB2S{4%BS9LS)@)fIoBKeFX{{%np~<#i zms_wFxT2MsY{=#^gRcvG>dCTFH(1cp6dTD(Z%IDXKR)z+J$PDa1K}{c97W+$Gc?B5 zmcW8c;Ed_Z7Bkw9&Jnb9LZ0yntE(}#9l4b>44v;YC2PTY-+VTpU>z8oZJjH+*BOz# zGIz6*dgXi2MjUg^Vk`rW?qX1f7%K@E&6-@a6DVyL_5HuAjw@s8?w=JsIz!L^r7zgI zXv@vLO&VfB;-s0cl{{NXWpbZY(`m+njKI`&m?*=Y0kW>DI;@$elqtCJ8ju3SQa|fV zr}6{xg%vGa%;xqKGn0ojFrFW>X&J5bLbP4WQE<}AkSgxDNib|K4a8~F)|xC}h1p{z z+BAF~5tz{hnw$M7XOK%t-Q!R&493QW;=vh}crm-v6H}WHdB)bFLO}+wqc2r?JPPI3 z2mK00uugr?YKE`{_PXnU&%ckM+U+aRNIGC_y+zmJ5mOO=#}diPXnZ-1F!6P&^Ra-tTST6J0vd1ziqORk;{62si zQO@n=+Jce`54}1-VgAnwSVwXFuFnq$ZWhcHW`?4>J6d!*I=F+FlCrE=5L9&J#(Wfo z2omd>ug<>@{tLQ1%R@Z4xuU8iD=4bH#~FptO|6`^rA8Wn`Cw-1YH=!XTW%og_6H~z zBUdev+iV^4nakMLMpkeHfk#bMy6fKyl)*Kff&h~d&S)0 zL$f=O*J)2iCFTYf=4`oYueCj&MYS{hx2IZh`O*vzNZ9CamaA_h`ywp=xgO5u^spza5 zWA3Q(HNS3IRY@q!w8Ez0O1ZVD@0NixKC<#uYyo%(^K!Gw`f__x*9oiwkCO=0=~d|3i>&y3*uKdeafG`~Wt9Ba_lymT^Y%xCqn871&Pt>08Ql z8JzDw)%6M&h#a5Bb_E#AKWIRCGoW-sHU=z(cweAhXOlQIY5Rb}A+0jw|9w)$`Y0ORYG A{Qv*} literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T17-13-04-226Z.log.gz b/collector-data/payment-api_2026-05-02T17-13-04-226Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..14277be350ba359188465bb8cb9b2421ccb93b6c GIT binary patch literal 4070 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 YlK6c&;55ISzlyd058Pt)?0jYb05^CNqyPW_ literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T17-23-04-393Z.log.gz b/collector-data/payment-api_2026-05-02T17-23-04-393Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..2262cd1580bcfbbcfc3256c531815218f51486c4 GIT binary patch literal 4091 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 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T17-53-04-877Z.log.gz b/collector-data/payment-api_2026-05-02T17-53-04-877Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..cef736183b084d7568f9a9c0e7493aa5a1ed76dd GIT binary patch literal 4260 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 GYybeY{Xn7s literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T18-03-04-989Z.log.gz b/collector-data/payment-api_2026-05-02T18-03-04-989Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..9f36d18bc4eac7743a73c17bc8a77a7f5fec0bbb GIT binary patch literal 4040 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 U+t2TwS$yR`0jvUw$8%}`0BF|+xBvhE literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T18-23-05-267Z.log.gz b/collector-data/payment-api_2026-05-02T18-23-05-267Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..cda33d37e22a350ae9c5cffca8d91190ada9b0cb GIT binary patch literal 4291 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 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T18-43-05-549Z.log.gz b/collector-data/payment-api_2026-05-02T18-43-05-549Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..683333c14ed66157bd0e94b736e9ba7409195e66 GIT binary patch literal 4041 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 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T18-53-05-698Z.log.gz b/collector-data/payment-api_2026-05-02T18-53-05-698Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..1db16aedfeda12f1ce9723f9e65e839e49090289 GIT binary patch literal 4318 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 PO85Cc@))_q5@!Ga4h8gm literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T19-13-06-026Z.log.gz b/collector-data/payment-api_2026-05-02T19-13-06-026Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..a02cd5645266ecad2e61f144fa698415e75c1033 GIT binary patch literal 4430 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 Uc6sDE>I?M#2cKaQFo$vg09po;tN;K2 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T19-23-06-172Z.log.gz b/collector-data/payment-api_2026-05-02T19-23-06-172Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..65c035de009d9c3ae60ebebec5c38acad2da479b GIT binary patch literal 4231 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 Dr({(X literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T19-43-06-483Z.log.gz b/collector-data/payment-api_2026-05-02T19-43-06-483Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..21b27fe571361b9df4247a88ff1a783da0d1e590 GIT binary patch literal 4403 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 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T19-53-06-640Z.log.gz b/collector-data/payment-api_2026-05-02T19-53-06-640Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..b2659dfecc17ff42f287dd8e122fffa7f0712d75 GIT binary patch literal 4539 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 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T20-03-06-778Z.log.gz b/collector-data/payment-api_2026-05-02T20-03-06-778Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..9745b82e0a9626776f90e56d1600e2995448583f GIT binary patch literal 4203 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 B8NUDk literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T20-13-06-962Z.log.gz b/collector-data/payment-api_2026-05-02T20-13-06-962Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..c53dfeab881868caa94e2a478de6023f8fd774c8 GIT binary patch literal 4326 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 UW@5p+7mFSL28?*+4p(mg0Cu^8JOBUy literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T20-23-07-107Z.log.gz b/collector-data/payment-api_2026-05-02T20-23-07-107Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..2ef3e5bc05bf0662b95ff13296bee8a112ad6a35 GIT binary patch literal 4068 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 W?~4#=@{cQ;fd7BK`oFG(W&i+tn*Lq@ literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-04T08-50-49-890Z.log.gz b/collector-data/payment-api_2026-05-04T08-50-49-890Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..0a9ca411ed720eb0072e41c27ed7763f4200f52a GIT binary patch literal 2278 zcmV5)Soaw2m^2rA`^}eHCV$Zv%l=yefv@Uy`3$0_v+?fgMeT=o{xsccZLL(X=;QZ zK@fLx{&s%f-tCv|=IRL`1Nu<2GY6i|Cy;hlegNpfh6{7wZ`+MpuK%}KHEOn8%-g@s z*PBO}uO9}!5Wq$I|9y4)_LKeZmg`^DFEOqgg_iV?f2{`J+34{O)mXL&MCRnMs1%~^A~rs-E08rz&JTYZ0BH0;?_E#n07A1 z;%2{7>z~v^`>@_T4J}!KV#FT&wt=H{lr`q2h7n^pgWFTXa25(*e zg1+4^m+#h#)vn#V`EA}l#w`yZ4H)8nTwFJ2Kw{PC2SvrbBL{?G$W3EumONmfDUn1T zoIYoXj=h>lrU0JKt3JkK;lVP3wV3;?JOwaq+M0eQ{o~lLoqaB$!G}f95SD7 z%BUA3{jiknru5h-kr8*!x5r~II)%t9>^b>#ws_m_Hctv)+5wP&=@7!htt?4C6nO=q zpPVhJK?7{LM_-FJiU`ypG@pF5*#4}3-7I#k`f0XUUQ$Dfguz9E(g&99Hj)kUC-26^ zj=0roU~^{XDMpL-W(^qYCUU(57k1fkUgOLZYqfXh^mGW?vF$l9os3+?hp4e0&|@E6 zkuR)=pylM-l%G;V2-@VQ$Xcs+H{TuIwBFpc zn*n=-5QwLyVzR)_Zh@`PH0XFwzU0yE|&bU@B$el4m<9CaFvwzyhwWO=9u1*q{1 z&Ig*;mqv@i&LZdz^)09C3F^GBl76|d7PQvo3NtsBfuiJ8MkP6FE|%>y!orCu=}ed_ z7X=dDnvA~`6~Y7!Xr{==WJS(p z(QsY4Xnp|6LJq#w56waW<2)i#(L zCNSnAsn=W^W(ZPA1=xdOEYIW|K+J_?cBQVnq(x!g;+5~sB{tPznRPv)i!3RrS(TT} zMOiC2UqfPCV+{C9S+XEVT@;!^800_2X~-oK6(g{(sTP%67xg3OFfX?i)=>j?+T?*t z{#;>8SVo-6OI*~h47o|3N7Ey>@t|ws69t^}Q%jzUZ%J$`O1g_Q$FP}vBdh`ILlyCG zk*!$NWtlMj+F_X38M?@FkZ~FZagp&DE%ntgA;sj%cNx-wwdF+KMVf^!Uu4ZDJ(%Eg zwPrNsClKq9b-qOu$;DSHXYwYvCeDd_Z_B0S+r{UtaGBIfmo329*Wb$HkmMj19-Vx& z{4Aq$QLZv1`HaMMO~XZEW&=*?lM+_+#naSC@UaGqu2kwvzfW3wFX4=R-vG-+B`NoN zBy2YCs!H_M1Qn*5Cn6Wwlgs71qR3mn;iO;UGd+kz5l<*AMGK!LZ zEl!5s2gZ_xM9D4@q5gyLC}Wexgo6lE>@j^}6DBB%pjwtjvu8jJ{|miuqak0GZGEfQ_>bnc6YpRcpWpF7F~F za&(V_VrfBpERmxVNnNtD1lm#g3`{~eUnsyxWZ}$MJHQ~3j2qDzFD@cq2}{`oZ$Yji zeVFa3)0-2{hwQ1o{H~G#oUYC$e43)@UES+tfDCw)tlCuB#Y3!Js;ecHk{Fmx{i}dP z{x6-`q54Zq9xS^F#~i?Eof|HN2JL&(%!Qc=$DtMOkI!C95($;gvwG0Z$M<=!r%TK}5_iFi3EZkL#HSqFyLHcN>FMVj zC~q7~S}`95ZN{k`kxzdf5vk1KJ}TQfs{a$1xlc2g9Vxv7?hHlz4q2|ZIZiVG0I&Xn AQ~&?~ literal 0 HcmV?d00001 diff --git a/collector-data/payment-svc_2026-05-04T09-07-20-157Z.log.gz b/collector-data/payment-svc_2026-05-04T09-07-20-157Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..b1b6f4050b75840980db9353d90419b6cd889a50 GIT binary patch literal 131 zcmV-}0DS)+iwFP!000003Ntb=GSf9M)ip2)F*L9;Ftjo-h*I$MbMsdSNUY3F%_~t* zF|pLMv{Wc4%1=%$E>2D1GQ!Ye7^UDE6yzVI;G9^LqL7lBoRgWCnxc?jl#*JcYieqW lMT=3CLbzj)pF&V-Nl~SOk-o7)T7D6d4ghoyWviF~008vtHGKd8 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T14-43-01-875Z.log.gz b/collector-data/web-app_2026-05-02T14-43-01-875Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..369fee1a18f63d6799ba4672d170cb6aa9f817bc GIT binary patch literal 4129 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 CbBFB! literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T15-03-02-174Z.log.gz b/collector-data/web-app_2026-05-02T15-03-02-174Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..70adef0627dbbd7ffb4fcd7379de07ffedf3d22f GIT binary patch literal 3926 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 jOwS*;83C1>c)zeVPDRv_>LGw==;4 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T15-53-03-021Z.log.gz b/collector-data/web-app_2026-05-02T15-53-03-021Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..d7b391a3d756ca029b78af511adfb27a5dd23488 GIT binary patch literal 4217 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T16-03-03-173Z.log.gz b/collector-data/web-app_2026-05-02T16-03-03-173Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..a18781de1f6c9dfb50385cd9c2a262f1e5480b1a GIT binary patch literal 4435 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T16-23-03-498Z.log.gz b/collector-data/web-app_2026-05-02T16-23-03-498Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..0dba7bd7ed98f63c1498d0b5c1a4bbb6707d08b9 GIT binary patch literal 3935 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T16-33-03-670Z.log.gz b/collector-data/web-app_2026-05-02T16-33-03-670Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ef3c4d7abd749dcc69e3bfaad92ba8dacc4cf0ed GIT binary patch literal 4162 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 M0Z=h)3bJSb02t5%Hvj+t literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T16-43-03-771Z.log.gz b/collector-data/web-app_2026-05-02T16-43-03-771Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a01393ada85175395b09c4a7d4a6c18a0f2f4ec GIT binary patch literal 4316 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 Kg}{skZU6ujq;FvW literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T16-53-03-959Z.log.gz b/collector-data/web-app_2026-05-02T16-53-03-959Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..de53425ea96cf9d73d52da374fdf9a2a720ba610 GIT binary patch literal 4229 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 GZvX({jBOAA literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T17-13-04-223Z.log.gz b/collector-data/web-app_2026-05-02T17-13-04-223Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..5bdaa402433dc92cc56a81dada62d85f7e05cfe9 GIT binary patch literal 4528 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 O_5T4M&j;(jb^rh$O36Y1 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T17-23-04-391Z.log.gz b/collector-data/web-app_2026-05-02T17-23-04-391Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..0f485f17ccd49cf8850eab681fce14e63825a4e6 GIT binary patch literal 4530 zcmV;j5l!wNiwFP!000003Z-3LZzZ>pecxZv3v7VwgUe*Giez0NKpflgetKpn4i*?= z9u(;&BSa%jq^nKl-!F=NEp@Y7-9_sCo@O^$RXp{1(P8|`@mCIi^6B8i!4Ytz_rt&c z`1?1*@bksv>EnmthwpzHzP|W;{q^I+@%~{z=Z0Sse|q@Wf5HVmg7@hO|8V*7c=dR5 zyl;I-BKLmy{Wm{-^Ix-veD}NI^6vKbczL?MyB%)s9!~$fgnJLkg(vvM=j#u{o5#~| z_vhi$@zdS?mo*GSVthaR?>Fy$oWJ)UZtng*{O$30|K%`XAouBE1s%af|GaCu;@gWa zpN_Yu;q(37GQog6JTjtnKQ5mxCBG{%Qr~A&|TuzWe@nfBa$i`EQTM z$K!|LfAk0jk8Asn9%2knh{-xTC`r$9a`h*pd?5l0ugUnvp&@~1|Fjk3A@6Tsgb?D> zQu>O2d^p|@H+O%zzC8>VH`kZP-(KF`e}>DuPpj}q`DxLQr_<*T!@G;qak#nubbT7c zt!;k<;b(C?pY?y-{b{(myFDI;hcCC6UtL|CE>@rkFy`tbEeeDQviP~mz8w{3xV*o3 z__zYez@DFlxvXWA=HMVCwkurlAU>=exLwHu0-~?hG;L}K;F+F;dqlpyySq6I7ni5& z|2zIB4A)mT$KRwCEP>1Tyssm6dt*Zc)bn2|(+}ScpD!LCjzeBM!;pYoWds|He#k(< zt=Wn_feiwIpY6pcJjVSIknEqJqk?RICOL@CJ$>fcI<;sedEoGD3eHd1vWSF0`h`mY zG)WL;h$%N|7iEwvPuiu1$EI5(An037F+0HUs!e4NDaWT5K0o0X{k%F}-dx|V-HD9g zB-Sf8$SsHQwwjn|)1h#H$n~vnLlUq&-*&p9QQVm!2Va?kJ!-@Wf-KHv!(4J&@~<6n z;|$JI`&G;t0`ik8DQ-)TSO7V%5zEc@ql0tcRZ8Y6yKR{0;1FU8)_aByE`a!FSsbmA zK_p0NJEBy`t(6$OZp4%c?h;5kxCBC>9hQN)+o>q{976{qp@S3f)2qIPnbW~L@Gf^7 zhw=czSJ<`kgoF#p+vilIZji)WDZ4?d=-?4BNky#;=j@dj`-*OwUKK&ygdFQB?J1Wh zNb#B4{Ne?fzKdfe#pkWAR=Mw5Ch zN!`r3^Kd-fe;M%Wu=4u|7<~r~BjxfGVs#+jKEL7V`qT05@w5UI2+37;uVIUVgXsP2 z-r2qmNu2=9Mg=!SS%(Xq#*rQDg_A9H8?(W zpg3}dZULeQl<*br93kZfgG2&Z^4uVOt4A|@ygm(oJ$^apng_xqRQ-`Yxnl=B@qf-A zxw*0Gy3`z{MY9@RoZ>>|G1sBlZT7?(Vh?I|%oiUk`45x$&UvAx zPfH-^>Z{XqAObY;q;`&<3-_hmk^CrLXB%~Qe|5ZHXmEiRBfgZj zJ*8mfvEIdAt61>l(Rfv{<^a6#oNDicp$jPcP)FoV#)6eHr-?wfG8aBz7=xITc!zOm zjF6-bx;E@BCUBCQv;-3*AKDxQRvwG7HmEk)3l4ZfRho!SL1+JbU7c0(Td8 z$3^z!ksU~gjhQ>v7-I;}l7Bws-Nn>J$kiKedI)^rIC|7`+hRN=j*xwQS(@%?PT+A7 zQ?iRO3q&_JN?RTS`pR$X%B}F_*DQ=pm zSYnw$`ZmY=k?*(U@nebVO+uIYelMEDc<=#obaet}pBzRF=aH9s_ge(VM+jVTDEsO8 zG}Z&md}*WPXsv@=LR%P$uy17 zc1pnkN>7X?YRE5BwXormiON?(&h|`iEKxcqmCfDIn!tdRXSa%lHb#xCQO@0dYSeT; z`L-&UsH`edo#AS@A%Z~8sn3XMq-_$Qa-;D0@z|C;#G$ zCQXPJdfs=h7QDD_Dw~vwqED?^qJm?jE^nxSOL<2p8Ayc$Q%?#n6$(2EVjIg~3Qi`R z{TKh#V$zcq2H+%^)l{{c#ya7}(pz3!Dx5ap>@!<7SYu(b2rS#h5*-Ap(`g%OfNm@R zZ8KjULsz1xidE!R4f-sxEaDDHdduE(<~k&T*4( zSU_=-1sf}fUbZ?E04ddqym9OlfVq0U<&Gf&S~x65$tIdAeuQHLX1j+GxHD^i0HW9AH*2DRF!i#m?$5 zxk*gq7n|DjfKXp<8|D!aV)m`RQ&vYUEbsQ0X?;PI{EsC+mDM+6b&%$f@67;h)@q9o zQU|roT62s`U$8~UQATm=a9gtagHzdQPVDAVh~aB)ZWmsy!=OdJZC^>%-*R<3qRElX z>O2K{RU>72hQ!pn>uGLbj4|u1-Wy|gjb_2;Kn;~dS=~052#dU_KL4G)_<>gK4rj3e{dv{l}D8YAVxfTTxHukq=by1vai_aBM zob<1oa*Lv#3WmliA}K}5lgj%JyDRE6gdlczxFF($O1524QhFLw(-;pa35;NlkC)#Q zbq?+*=){Y%*q0qCdCGQlR9lETH#q5%vd;Y|z^v`#tyx7WMMIPRsz!z^nqrxe1#?14 z)LDw$+b<=hoG90Y6gx2=(NZFhiyo&vsq<-8mfF^yU*M(fw;|vu>MMDQ<_n+z(zL|5 z#K3m%R4ECa7@Cc#l*~?EO+eT=jFc`!T=a~XZy_nAM%2+jTac1!`(^ud}Q_0oLIr8qAv9XL~M)l%l7c8;dInY?{+= zqcc)^5wR`_Fo{EmkSA$%!#xo)Bv*&-Ti#Vb$aN^K7D=%*o(DO|F}KrwQM&K_{65?e z77F0Vbqgp3h;g-A;6t=6*XFcWZeX45$$%FWXmBhx2j z@Y#MhkBB@?*jf9g6)KQIf6N)3I%F~0+S0~fONz!q9R0lqah0gpbwV3xz4Td2h3lNV zzKIQrCUB`9b+~&uD3HOq+?tddff5!ZeMew@9P9P%S&k9Jv35kZjy*#PuNuOt4-p7) zk?S`KI%=~;JzioJj&#?|`FP|$>G>^4KCKUu1tCPO`dLeEpx+It8U z9KlU;7tP@07v=6vd!E3dag4zDbD3m#>|NZ7&A{mu2PET2p(ZZ?U8$f9*ir;Gf{0c- zANPzl;n>+{Hi25g=;!@OTX(fqB!)W1WY-dHQd*9-Yr-eLz;8&5HaFp7s^dc>($JP!-AW2PKfg>tU`ejWO#|leh1!Pk) zL~(i6z}6%+zU1L#kxerwurG|T!M$quF+9@S0NrwSP^1- zx>cbO9EI-F4m7sKv`zk3U>uX5=6%swi?XPNZFp63Ak;eFUU43B>I%&&7-ti-8vI+Y zOfOMAR(H!N5{(1#Ely(jb!`9Bh7l-rWq-qtWN>vUUdt)wajZ@6eMXvLOTDKl5GSD@ zYs|=N)+R67^i3B4Ywl~|;n|=xj%98LRC#4M#I-_i37sY%#7;5&I1O^)5bR(CavxPh zWk3=;rcWxA0P9G&Syl@?ht={cyToD%$EVi8!-`8|fU~cHVthbd7hqKtER!20v^&tK z45oY5fWiadq^icMqXk&<{IitOJ~=GFO!bTc`%dW?p~?KohL8%DYM|D}J4EFeG;u0M zb=oT^8*!T_wZbWg7r{j@wpXYut8>lpDAR{wLx#IUgRX6N21T#A>@ znU*6~*8ef@Mb3uGMJX+2@iuHZo&WZxX)wfyBe(dwoUJ$2;nZx68(^vN!KRMb5fm4e z*QDV@fYJIFE&6*Nd3>Xx)yC-c21>h-k(U3yR@K;z|3YAGkW>hQTPCeH_K0z;6z{4m zQaphd?4|YvpZy~AWD*A@u|9M-(5Q44aZ#PUum7BZL+5{cjqpq|%No2?&4!^2HlI`^ zoiF@-#V^R|kolIz97X$4L0cLtMwoC13;|>PUl}h7Z23JW+aOK-br=VZ%&Q$OuN5Hs QjU>kZ15$STjg55x0IGDyTL1t6 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T17-33-04-570Z.log.gz b/collector-data/web-app_2026-05-02T17-33-04-570Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..8cf9eb905b8bf4ca97a5fbb0645b15770d9781b7 GIT binary patch literal 4248 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 u0qAmBaM@8sy|#U2ANDlpW5x$7lCfeY@# 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 Hqh$a9B&@xE literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T17-53-04-875Z.log.gz b/collector-data/web-app_2026-05-02T17-53-04-875Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d10a212e375b03c94e02a766a7adc96a83c63e1 GIT binary patch literal 4139 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T18-03-04-986Z.log.gz b/collector-data/web-app_2026-05-02T18-03-04-986Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..200fa2669605bd29c907c08c280041773c300142 GIT binary patch literal 4247 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T18-13-05-085Z.log.gz b/collector-data/web-app_2026-05-02T18-13-05-085Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ced415ca0495b378b5198ccfd7be4bb3b8fdc569 GIT binary patch literal 4436 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 aU8Jm9#-6Tkh6d7Jq4$5iO@X>1asU8)otNbR literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T18-23-05-264Z.log.gz b/collector-data/web-app_2026-05-02T18-23-05-264Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..f50e8944d3b644316e0797ec9e26c2ebdfb5ffb8 GIT binary patch literal 4142 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T18-33-05-420Z.log.gz b/collector-data/web-app_2026-05-02T18-33-05-420Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ee5b32b0062732e36bfa268f43a0c4ef92c0e31b GIT binary patch literal 4348 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T18-43-05-547Z.log.gz b/collector-data/web-app_2026-05-02T18-43-05-547Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..aa98484224d64f9fe2513f994be89ddefe87282b GIT binary patch literal 4450 zcmV-o5uNTIiwFP!000003Z-3LZzZ{necxYE3+w{P!*C>#)W-z^>||y#+1>1PZ)bu9 zI+zE?zDXN#+a3FQlm7PsRk!UbRk@0k0YBbTrIIM>@Q{>)3-K$*U%Bv;&j-YVi{K-@ zAO7>l-@F-yKR#T3I9@&89PfV~{_t?TA8zjca(#OkE^e+bkN_!ZSUe>` z^6BX*7oV<;_zaQg{qUP_e){Hj!yhj%ERho^57#1G&9G<<#W>H6!(hvWUj5S$x+LHzOImn-N9-p42OhtuhkZEAdk zgr#|aWdI2r`}f2Dee>?e`2zp`=I-yq-yV7S4WGt|K3)y~77CQI0xuB4Yi28Wa3#MVzWe^yfB50c1O8XO zaqwa71A_;0>FEPUz_-Wy({TL9r|bLU!;r34PysMJ+xyw{Oany-(KYYYtVkfpo}a$( z{OZk5WJr`}2K--le;TgtZjXoI;q&d~S63IOixpf1O#c1w{kwN>-hEm7@2(&II{f|q z`g9!rd~tnqT$`K(CE(KtN8AtJ4xcU_AC5y_9byKicHQ-66AJkF3?JY4+vCN}>BI2m zzgK@xDfez^bU;3=?Wq4be!RQ?Jmm22D<}^RsWln>H(~(J*m}F~emz{?-QFHAPuF+1 z!_D2p>0ei&xjcKYzdarwkDK#@2*LS&ca8|zm#49g>#^fzkswhrSq(BcUhG1ZZDWK` zvfg4aLUj2x8y+JRpSw*Q6R;cuMx#rR=^0fQ^4-PhINV%+ygm)Ztzj}y@~>qCm?33u zC(N?T%IKJ_UJDB(@sAz*gd9Z1W{Eb8f;@zT?Y>ftl04+Hm>$an69J~!p3FOIO9Z7f zJk78slz?(mK9P8^`77)0U0{( zaBUmmP+oyXa`P$EeJ}#& z(8L^D%!Lk~Au)B50g{-|Nzi_NWBt(W_eF@sHFU@Dz68!S)?`A*@XYMawzMDMC=(BweS(`J%T(mQ7|^^nH6rPphs11w=SOB<&LI!I!v=U<<{ZFgGHLqylj zR;fm3>oS_Py$bF_H8zL~_GvH%^1vy)<^ch+TZ9<; z`IZ2KNiQ_fffz!5X8Gq8Qq5L`;M+L$DlKtK4fEbai;#*Eg(bT`Fw6U9xjjzX+vVJG3LZIcCe`Wj2v?79#yN(5=wfB zH4K42A6x*;p(7G!2|b-L60abfB=v0jh!2i{nR~PwJ~#%-&yzcO_2#lNq*B@m+MQO( z(1p3Tc~J#miL8-bOPV%^m7t_{tL~0U5^1ZnSvi9l@`T&zX(3A>9DOp5*At{kj$s6; z?8GyW=T+O>JlnX2!5GaEdj*!MgjNT;wS+!Fn24>rF=a*YB;q!vZCMhj85itJyMhIh zSllF_)dX972o7BKGlIUc6~Z|*(3#@U`b&vll7n+<|p1>_t$>?0uXB#P7~XDcwb zU#O>;EGgHTBw8}W&4ZdH%FdGns$Q>S$-Pd4GMg5~HJ2*6Lc83@HMaMqLy2HX7h?2t z|E7H_L!7LxCUe3PE3ZuOhVfwnzf4YU15zrlk`P#eCu3@?^&)vXF3 z8=p)8e8^2mzpsc_AT5ewRCXg#ty=_fTVrGh zgDlfAr&^kcWZ{yBbMF)uqx8`sDHSBodMcVHCG>~dLSMEk>yl}{lzXO()2D}Gv` zV#+O4bdJtY+z<~=Wb9zx8&S&Q61s)??aZ$C5M$7t{Pou*p_v)yk|5qoNGOze?+hB3x%)t$f&%0;6yfniNUx94svLyWMpQvGN&g z4_Z}R5QWi%nCzr73aP1ui1X##*;1S!x-NYzis0#~m1q=}mqgU_+3Qd4im2XVvVi&( zNg@N*EJ9!YH;Je>Edd*atX+SfM0E?EXBvnKmdBZ$zHZORlaMvHI2B(s^CTP%m#V*J zeBMC}ZL!JL^7#Nh=}(~~kN1T*Wad4@g=zqH=IOjqlwU52duL#U%9!%5G~b~-xMa`}l?udGZ+qG54p`NK8|sGy8Z39sUiO2RH{ z1ZI%El890TQxiw+djrgnlj~6Dl2lyOgtgjVQJ5+1=2Ge;yfgSkG^-u21h&54@ex6a zzE4<4qE5L)&2gagArv77Y?B(hn}ZTCx1ycG+9^YJ&S>rI0C}}|N9XO>Lv#z{*svyM zKwO;6y5oQu3fnZ$RO_oV^>FJX6w;SPFPL)qxr`Ek&68(Ie6J{|3Kx_`!poGph0ZJ~ zaGF#woIiNmh_X=7!Y#44yfu!~Y*ExIie0Z#l7+t#rZu5-|Jcj5p?1=@si-Zjm{L~5 zOT(xOpqqO$on=U?K(Q3vLE6R;VdF%&2lWO zAXHmC3p2)v=GFCpl2=PWwuUW=!=jHy%*kSFwwIrJI*m#Tm{5g+(xNTvo=9EGnwb!|t zuOVA`?8sf!H8-s5OVN6tyeNO*V-v;d4@WHEiXm&3$7a^W1St%$R*x?hbz^2EqrRwD z(tlblHh1l(Z5tjDI9gpn!;X=TR;lXNR%Ydz&|iG%*39tCgV{+dCGfOb*rD>E?11B< z&~(dc7y%>NiBT<_UbGx+Obzp_Y+uDPrF}KL#>GiZGV?1)jg%n7HfG+O&pcMoT5B6C zGEN#5_A_l+!m>bYF=#Hp6H=)jUXgGrPVyGo?v^4ERq$;ruR}6;n%ky&D^+w&scI|O zOD(>|-pyBP6-IXEg1jOX5{}vq&lk5+8S5|REuAVFSR^J1Szpmq0bG(@FR#d4QX?Vm z?D!%bf#iiA?rH1pmmTLC;N z3sE>d3A&oQQ!KNSAcwZeS8MqNu*votW~M;Qty$xWYvtx^DS1l-%k*x+4t> zgtFL;`md%qt3=-4&9#W9>no*_CoFDa*%rTxWI(Vi_~fpgOCe2Y??N&xCI^U!v+@g# zL|UY=kr(|0TY+Q|LSHgo$ zKR%;gC}r(Q6lj7RS1ZAHr6WO0oi24Po1hE$We&^m0O8QSEyK~Ak%Gn1WlW;x7s;9Y zoW@hprml^^Qk*5>FCYeV?M*Q+xwG;2B{+iwAeaaN7cG?9*^_FY&iWOB=dn^t%@hPv z04KK+*;K<3A6xv!l**N)DVfrZBP!)?T}2)sX|ZIRnGnXy_H?nQ0OSrV*X1t)LZR*s z0(k&Kc74)=pcBNH=TY-sh$OHKT!OhUc|?}UZ7`;(Dr57gfhmxy_nI=#=4WFiWZNWi31=Y#7Z*&P-B4horGhWuvG2w% za`nobW#@tc@5j1G{Y@nT3J@q-a~%Ri@X6l8HX^fYnn+(1g5~!-7P;!{yaiMMv$qu@ zlM~s$ObUJVmF$A`;{j`wX9bCXlWPNZZk7`OfeU>Zu@PO`;%-HlAV|5E64hrar}0V} zOSdBVdQpfsRdfj`KrE}CZVNtFCHM&5wO1N!EnS7Ai2$OWlLRhUFXkO_xV)g# z@`(u|byu^<12S-4D0iyC`!Kt1M|GllVc>qTsCvrcg zs~|+XiZLRizL8!4X?BZ)@i6lBCJo=-N4mW;Vo#l<@(zS=zIG}r0?m8 zWa=;{FSS2zQp~H46e^OIon#u@lMaMQr9clS_O%7ouRcU?$C$v8SuPY{p4o;qD)hp2 z(?U3#MTMQ-`7hS9cQi}&d+5{;E4p6X-iH%O_7M}2-@5Hyxmo28^sE5Nxu)n44lp|Y*q2oHt@4-N=hf}(WMON2BB6k#Kkoh3LFFG)uYz*nGvF2Toyg7x?95{Ub2XYqiBZxv5lj+|x3g~>Xg(e4q!iwU0$J!Ri oL+rS3bVL?!uhA4_c&RBxK^0JVNpg$EotKUDpFNsh!{&1U02n!j3jhEB literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T18-53-05-696Z.log.gz b/collector-data/web-app_2026-05-02T18-53-05-696Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..a738bc51734e40e0875be64cac59d28cb08c1ec8 GIT binary patch literal 4178 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T19-03-05-848Z.log.gz b/collector-data/web-app_2026-05-02T19-03-05-848Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..c107637ca24ff22b1ae710fbb79cb8f148157939 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T19-23-06-170Z.log.gz b/collector-data/web-app_2026-05-02T19-23-06-170Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..1bedb3022b079d86a98d92a6e9f741cdf886fd1f GIT binary patch literal 4403 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 TBRxpA(ZKNkK5Q})Ic@*|nj~Ky literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T19-43-06-480Z.log.gz b/collector-data/web-app_2026-05-02T19-43-06-480Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..42f04a10ae017d962ea45ceead5c608456385529 GIT binary patch literal 4057 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 LUQ`8>GG+h(rIhPB literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T19-53-06-638Z.log.gz b/collector-data/web-app_2026-05-02T19-53-06-638Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce10e2340382240d5fcde72843323e56f8c07620 GIT binary patch literal 3897 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 Q&IgwN0|C@;--KlV07a_VJOBUy literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-02T20-23-07-104Z.log.gz b/collector-data/web-app_2026-05-02T20-23-07-104Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..959c332ad8eb89b5c8cea307f13b0be8a77c6fd3 GIT binary patch literal 4173 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T08-50-49-884Z.log.gz b/collector-data/web-app_2026-05-04T08-50-49-884Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..5d7a920d1c11d905c0093d84d0f344a67d29a1fb GIT binary patch literal 2593 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 O`T2iU2)+sG7y$sNX>Ae! literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T09-20-50-309Z.log.gz b/collector-data/web-app_2026-05-04T09-20-50-309Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..311bef3dfe4743f1091873938dac37458df974fd GIT binary patch literal 8891 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 J<90_B0RUrx(|`Z~ literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T09-30-50-437Z.log.gz b/collector-data/web-app_2026-05-04T09-30-50-437Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..36a86ce4dda5d4a72c6500e0b725aaf0912a0861 GIT binary patch literal 8816 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T09-40-50-573Z.log.gz b/collector-data/web-app_2026-05-04T09-40-50-573Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..3831f9e50e8033e6ec3dc5ec095dbea8aa4aac53 GIT binary patch literal 8882 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 A3;+NC literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T09-50-50-730Z.log.gz b/collector-data/web-app_2026-05-04T09-50-50-730Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..74ac0cee2d620ebdc48f4c4787660e2bae1cf4c0 GIT binary patch literal 8868 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T10-00-50-870Z.log.gz b/collector-data/web-app_2026-05-04T10-00-50-870Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..7d936c2ec2da625531d885d2c58778ac7b9990db GIT binary patch literal 8908 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 ag#QQnz_N>_Q(!ZY)Bg|I>*-sv76AarkJ~x` literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T10-10-51-015Z.log.gz b/collector-data/web-app_2026-05-04T10-10-51-015Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..fa12dc109c597def70b8bcb65ab69eefb81bb0ab GIT binary patch literal 8870 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 Ib*mTw09du1KmY&$ literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T10-40-51-472Z.log.gz b/collector-data/web-app_2026-05-04T10-40-51-472Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..bb18071f89104e5d366095c4ff8c1113be6457e9 GIT binary patch literal 8890 zcmV;rB1PRFiwFP!000003awq+j%CMfea}~%JOoG{Oji}jx(r|-j;uIWOOb5^kf4Y5 z%(2zb%(UFy6I*{Dkky{qyQS-nqPNiMF%6jJ_K;GYHhT@0@=JNDUtfOp`M>=B*OzZ@K0JQ+?d3E1pO^1$A1{Br zyT5#Y{qgeQ;d=jy(lho5A>zmX`{xhW57)*2jKC=m|M| zlmF|_E_4k)A{_`25456ftMo-_lV#bAr ziT)p1oXg|g-S?N6p8diCq4LLn_T~@YUVi^@y}!J@`_t|FSC^YN?{44!^W*j55nkWD zd)Ay=_M2CTF?{^yr)_mGrxkLduP>i}_0<<&{q1-D=EK{!U*6rmf4ts*{@2&nA9NXS z9xrci-(N4!Zs-OPH!Gu~{KwrNF0b$2{qXksczyHg^6=yP*FSr6^LX>DdFC{phtIC} zkC*FTf4IHBK3s0!U&`gp&5zShh_6C`nCr)%AhY(X+lTKjf4RSXyk7ozbNlxC=2@$p z+sDaz+82hS6kml1vC?k2R)4b^XEA;{Km8njd4Ko%`tWdheSh=t-Q{PO`|HEw&Hdx; z`#(K1K!VuXaFExxiw;m?92U(q076Q5Ztv(Q1;>-Ne3`~qfgsUvD;So6pycq;`f2N# z@5A^iFr*wmPDWpjm3_!i%KpqBTu$*-$dI=0R-dxfYMypN{KSH;>oL+uL`ykCzty;aRK7VZ8i3 ztJ?sx|FzQrYRTgjw=i!p0G9IcKkITCZiyJ6mNxG1_45%UU@gu&E=H)e4L8i;?v4p4 zg#CebELlv@;{JB_jDkSoa6KLCzb*XnxsC{p;yCfgKc0XXPh858pk?%5r;&jQ*}t2i z)lUxilVfVxs2Ql$)612i$)o5#r?CKwYyLFA)6X~kkP0Df@Q{1f*3cBko?evD=|Drg2^rYtfsU<;sI+`q`%meY|~lz5DR^jA4e@%5aSxZov#Cv@z~F2o~e3R3J&{Wp)Wt zfg($|Ux>vCt&pgVe$>+PS13Hj8^@jUuyL(=*`@W@xy%&E(e| zZm|Ni37O2FS)k>#pHP#11uF5(V~iDA&3muI;QwL+4$&OmQh*T4@Wz>s1O?z&e}ZfT zMF=UL@roz{V?GgxP=c^|Y5D*wGns%h?>DXCL=!?NlYg`Fe-XHiUdoEkKm;+=ozrUh zUV@y`e!CvtCBzW7i{lKDi6QgkJ6k?JL(F0S@umx$GUSp@Jit^SZo<{Y6ay8=l2q{} zoT)+-|KvpKm?{)OkQ^>CHAtIq#h&-21|{X6;F940X&dP}cOeHTsh!wF93f%Y0RSuK zmLrr+r0sZWI6>mNkNegZkrR|WZ6U)m#R#e5@Jtv+@o#;I+Z{gs%7E70bl^UOts zwt4J4Hzzls@x8R1o7P=o>yb?Y7!po9;bnJPts1tyH?uxtNnk=^KTN0twA{Q&rX(mK z)v!A;%hRpatl(z=9E;Z= zli!_7g78IV&y5xX3806q8lR>Vpv6xqIN3?Z z?r9Pnk2dFfEpw-4ZASRlW-}$AWX~C?VWY6W#f;g)Bv9VAR=^oq=r}DGzmJ*-sJbhP z)V{T`=E3tj7&zeW23o(qQtk;{_hXhaFeY0jDhZYsDBInJRDfwL0bAMa6+)hFF3)6F z;Bq2+k_6`47R&mVy#co{uG~vueG=d=P65Wk^kIO!c`;0v1xARQ$h9x^VJL(VGUBxC{5^uu?C0@Mw0WObKN1Wa|fH&#Ppirq^#Ie#Q24&MBpn%6M| zax5)Li9@pmGbHs4?d(lW1X#v%dHlbnj-j02(j=t~JiJjapC)3cZqiB;1Q1&>&UA(r zJZ?7?pxFH1TA<-nn`s)M0@0WyT5}($LgOjHbv#!MC}$%$rem%bXUEec`OWXR3juHq5tI* zb<#=sf5plpQ8OOsD=*(qoV%-UJU5&n2j01#re9Ye#$nYh7X=r{$@l;X|8FiGUop!( z=FUvt+8~yA;qVoS*vZb`tDmSvDM5wgC4e`$F`07Ag0-hybfr6~1G&)zy z0gl>hHhi0bTKe@*`S4{AK}`x}@9!i?o9JNa(#1~e!;_aTDyeUZ6psJ7WWuM&$ncXT zD?U9>p3j%8_~`^8D&;SZr3dRLTnDIeqUW#Qr>OkDRCaER@y*gPDvcRB&vZ0Eo>E`O z+oD0;)chFJq}Z8&!MYih0BE-o+MfedRLgBRV9FX{=l)HQ;z5|IW-W}_&=>tx?94v< z#2_>z|FtXpKAOr?*SuZq{8-!G4xNTD9U- zydDTDXOG55#xOy(Yhmn@E6Z66?4-TCi?)`x#1mW3`i?6(FN_m?aAt&`SJLTcHAM(z zC|*29_|%T;^f0ckQ%Vq;KPRmN4vWzF zHqg@&6(5z!x8WtP-t5BUJ9Bplp|2RTrD~;R>AUp(Au5N0%Edwd<@kRUDB(OJhf3`W zX^?`kQc|tTbWjdw4+A7TR}Wjc+HErL>tZjS1ZAT>W-QwOMFq-!4CTtfGYr*2GSsCeSt z!VE}b`HeaJ!Q9J+Oz9yMcn-@%B{MvlSfCbbS_%cF!+P#q)?Vp;qR0jXq@y@w5{|#U z^*VQ75JUkeO{eVepHk?GBm0b&`3F8(XkqwP>iXi}zaL0;LvnjTs8yw-riRjTX2?KdAd1Z8Sph@67%oCh>xChm+ zW;TUHB#0i?Ndac%zu^uY@IE6X03Vq$aca_%$;Tvt@+ggUv&ZkH8n#Ih*R-KB5H^z= ztwxQ9*L^LKOoGvAp^z!+P_wq#3J#})1el{XR)QN2PleXl$QL2ONo{B*=-3l8T(@rE1UQA;?*kqouoOsh>fk@SMVaEb_=C>F= zx^_Jo58Yj@^N^BQy?$fs%7dPiky_^yV&Ejmo~p{MlW5eYq;YQ_IcG_d<&yy6Vd$lX zW#b|(sN0j^bt#+b0@S9|Q4#;xttLU}l9B7EM%8(|6LlhhC4yC}x)H$eiT9Du7Nh4)z&q$Ee;1t^12!?VhX(~ez{;-P4XGhFA@+e zvafA|8s|-v^F)YQ_d-dM)RT*~x(z8oZpr)UlBq^_a7YMwq5`d4;6z;&W}n46_6LZ1 z(TRnVO@gAOsTRvHNeqQd+zt}NEah<*AAe|`%ixdyRoNB2JI*#0C}m>FFI?_aAr-e+ zncA0TQbi;|#8lJJS-qnJ)acD7(FHqy|Cm=VF(EnhBT_>dq$~rszRRxDAUS% z7wJmPYesw3Ite_6o3MZJcrijPd@{ErnwoWLL}u83OwhvAufwp3cvs=F=m9W8i^gm^ z=blY>CX_fs+u%B;>^2u5bSmDfb(=)MmjAVIe*H??IzY=NffG`h%tDSUSOhYwTR4MN zCbLe?$BVu;3;Y#AGG_4AjN?RyuzYNSfWcjOsRJ!#)6({1&fIwsb<^Ka$D|!RU{KXrTdJ)i`utIYuYkzBAJ<^X{|&o zvsk(UvPxsNVB2{jgW1MhkO8n}!PYpq$-ykBScs?Fd+9ig@r08kVwh-5i>cMNb)_}X z;Vyt^^>6wa2$`lPMJvZa#V`GBnRI}h zCsw6p61hVV?j>Z%8%@{63rM6eLoz)SB7+&6%nnu!%rNwtd)ZYHvCC)|24z*bOwkoB ziryt!^-5UfEonRmhO^(gtmks+0t@c8Z5C>OKq%~McNPO6ijX#{hxYR#N|#{-rB_a> zs9n0d*{FFv!93=!bLpfHWkQS3UlfiWPA&Cm{N_*=d4ngvtH`qJ*0*; zoUAU%0=MBtj&~(nuSV4>@t0NY678HnHLN2zaQxpYAX#58HLL8_#mcH-Sx#QLI!dj6 zG&ZZIWv%WL5d*Yf;)G;@*eDMD#g8^pjJ@*28JK3(wWLu{Z0)iWZA+dgv+FA@I+vp! zi^*EGAD#YtR>8~WC6Q$T%tG)6m}<`9Jl{AAjuz61_L4dRqpzoFR#{9uF%6O*cf!h9 z)iF0}Eo*uKYR1J>=9*Oqvw6`iH6KOWmwodr&{~W(%C#EhjgI#EyO?6n4_k8MYL$7) zs2})uDM8F>%vY>kKO%XV$Kn9X-V*`La$Y$`2g;M)h1ro1{mWU4<#?G1N(jaZwXCX_ z&EMNz2Po0s9ySXom(mDBte>bPZKC!Mw86MQ;!)Dk^zo&a!x$57S+y{;iO#AvD%-wZ zJf2nRvW?9&R=%%wA;Qy#0;PW3-kDPk>)4=TePuEBvUO+mgAP#BnQH~5Pt?RQFkc6l zpz=>{ zuJaDVJW+9v7i-@s${b&zRE)>L+gn*~DHg{wED9Z?4Pz|b2*LqACzq*%G;ZgRXj5lV%jF^(nC%1wDho0f;-oZty#ADc)4rLZ$zLFZfFoS8=IIdvlbc791&!0{ z9RoX4jhIHKZt;7C2|QLynbwGbi@R@eRuRlP_U>K$_PndBvCp-%mm=GhM$%GhN)4|@ zpj08^xg#O@b*DH$R`JU`7EUa9S|WIPhRv8&`m#*L_LlodG%wrO`Pa17I6?}1BGJZ@ zYd=BQ&I0eHG>ve$>o`G~Zxx3VzzB(h{Y4e!ORpwHR_V)4?dej1pjvI^%@@5&k-D6y zSBL+Kp|pXlU|QDP>*!C|*Ep))7yXMBf z>8~Q#9+}&-s@b-qlTAmds0?N~--}QOYK^Stsi;6^8*%I7U(L|k=(??5%0+NJ4sCo5 zZ9A;=7O;+Nyc+W;qWyBFs0d)Ej=611R$vZ8@PFV_7eVDh_OX@Km^a>zDTQ8C9kWf@ zaAO3h!{p$voh|~{#q+IfbetSUz3-ROh(++an8JEZuv+8|;Jkzc6hY=9?iHR)GbGjJ zURfD=$t_u51pG^s-0xbfP$reH7g4Sv;9troRGV~!GL$2~?0y&3&8$wYiCULB)h`&l z4pGx=#m19RtFp0j{M!T=$0|t6Os52OVlyoGvk5!@*7EX-#O9`7ok2FFsKzGwYWmc8 zTcfk+8;P=JnF40Z(HC*eIw7vd|5&o@qj2QGnM=7>!kcUgP&!@esN>8M>+3g^NNaA& z;jQJ$IzY=~n%ZJ75-olPyAIH%zUhvM6y41>2`iY~X^dTNa_afb5_9v&=^$;Q$t0^Y@qJdo9K!rD8Rx+5pi<+OHHQ>$Fv zE$@pm|AINt6}sQl&hfY`rzqhs@=uU9q1fr1mL3vCK)w{ux6#yr)Jyk3Iz<4#M8@8@ zYE_ucOC@>quuHD3*p%w7d@U-|Iko6Bc)7$-<5+WUx$r0hrm2X)v(6bRP31zzOI5m@ zqA#OK1!|s(yG?EZ)z0r+FT+xs+9s8$A4Tf_ABissuh75agw4W+-{&_8#xd3~9>8uUO4> z6RYR1DswNm3%b-^J6wAFrK(K6u`!$B+iREdF!&W!S$ynQvC{#x`=j}SuAREK_vl}8 zXw;zAFk*u%TQEkzHgP1^=T_)@VTw-8PiR#dUu4%~sKyNqz+hGC9*x2L;UN;r9{aeCwE%Tm~i>VCZe_H%NqRpvsKA`ro5b*)Qys!JzH6o z)t9VURyC`bJrS&M`^f6^3!#s!1=Ce&eEB>LTL-EW>U{j~b5|5Mhpm{Q&fv6VFBPER zCxht#EuL`ggwls&t&7>88AyGrsmj`EedY8eBDDrn7IJ+Ol+$PTtCY!iR*1d|OvfP_ zU3#JL1@xS2A@PM#bl&CI?!@U*-gT#f){R^aXL;^-cb`h zvn~mJe@6)&Kvhm$w7sfq!B{M~z1q}G?+mlla8(s$L#BTb@LLrw#Sw^TgqYuuCy z=F!VDQK~scAhE`!r?y;rL=32dLx`N@_~@V`H{it!kMP zP{(GXwKo#yS9X*z{U*bOZ7*EEv4PF;S8}gr+53Bo)0u(dB<1^3K+`(M&$;)?F7>@w z46JsIY=yE-34POhXxgUIYR1oMZOZ7Ib1&m%IUm79t#S@<|RK8?w zk<*mSw-Lr(l0Q%@rV|YL)(L$keQLGgO=NAJVd*&&PRy|I_sqS0T4(NAwYyp;?8Vbh z9%cxe_tskMp#$VF2K6srTDTX;vpUB@-NRFlrttWtkia-VrU`yBCSaTL`FPaL^Nf;b zKxBPBDeQ`7oK$5UCs*|5G@Af{%5F5qq!b~yGe1A|#*{uEURZwdbVt&re7|^tQKTcN zilBjH)s*@dPrPbE14K(B$)?Oda<^$$`$BF}yC$$-+Nzo^6(6eEw$$Ff%?hOA5mQyu zGPY1ZoaNfZ&rL|3n$>`Iv(|I*ZugEFRP>Syn!tNVj&dlqteZ}#PYBLpqJ-m4IneAf zaO_q02IhJb)DF*gBhzte^J{E0Wd&|f?6nI=sDLT^5tt^R9pU&~9lA?Q(AXr(+XSSe zp(U7MZ5bL@cmAF;P%-o(REu^lr_2SY4fo8^KdsM&CC4*cdoX0ndz&8U=yiv^%FkGP_%q zWKh}^lL#qIdO{1ATZ~X>OiM2Ka$=ew%@v834Hy%Yu^->@oFb$-vuIh#h)~*~f_Idm z7BlLV`0nc}64cFkH>qxkIRhqpaecSkYNpul$(Va}zHOm0)NIq#5vu|?iX9xrMBT1# zUL$KnFC)~cyN~0di51$WY-jD7XdR01dN#4`>9h+-Jq3Z^=)5FPAE<4hjn%3fv5Y|5 zJ}C<~U5d~306m=Ilz?)vMcUo0)se8Uc0DHSa^S0cL@}W*9cXdyyBSBXxRcm31f)~t zt$h@xll7@GOzyaVWlQ7^1z5L4>9km1F1`EIZpXRK}K%)6#>CV_~a;5VV zDGD&B)s*@`CF~1p)~-mTUW>G>gx76Ku;rt~iXlzy&n-J2846B%MhDS6O745CS6`f( z42Ar@B1*eaZ`Y7+U#0?r<5{j<+0d4~z}l6+jjtX`zfohi_-x-sM*~*M+QK^GURk$z8ML7hTpsG ziMmMR*~|_-bsF_PFT`Dc{PfjK+&KV_8;CMc+P4Zd{D2H?lfrn~~1WaqMK^wQTeM19E2& I-k=r%0I-mi7XSbN literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T10-50-51-626Z.log.gz b/collector-data/web-app_2026-05-04T10-50-51-626Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..e1b15fab1b7bf8311c6b1c638a1ffef6633112c6 GIT binary patch literal 8890 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 literal 0 HcmV?d00001 diff --git a/collector-data/web-app_2026-05-04T11-20-52-093Z.log.gz b/collector-data/web-app_2026-05-04T11-20-52-093Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..12394d7a56a802e54bfb7d5984ae65dd32e2701a GIT binary patch literal 8864 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 f8l$ZnRK#NENwuafgtLa-0Bh_; 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 AlK=n! literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T14-43-01-879Z.log.gz b/collector-data/worker-1_2026-05-02T14-43-01-879Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ac308b90f97670735dc094a19a865762661ca9b1 GIT binary patch literal 4288 zcmV;x5I^r9iwFP!000003Z-3LZzZ=4eebWB0xi%!gpnvx9~TJFWV1~_v)fIA0vqgu zW8ZWyV*76F>n8i}3rem%qZ!Xo^7}nA8i^tg4=G(V=sz+1iNS9z?VQ^g1na}w;jdr+ z`PDFde|~oUe*bQGefIHce|;K0+#JvMx3~L?;dhuIrQhHJo`QQjynOTK)tlk_v%Ay# zcf;3rmzS@PhwIb+=H;*F`wyqX@p=L3z{KzX{rPTxw|_T$dAR*)_~qts+7CaT9WM75 z3qS(z@L|mNz`yLzE>G`=SASmsFd*ChkF*vn#<#(PtQIaKE1o$-`oyp%D;J?Q?sU)`OC#0=`c$-FC_ZkV4~KWdi{th6{#^FVa5`M=k9Vg996~Z!z4vd& zABKzL^?oa z!}21lm{IvhL6N}gp&L7|mB=

;zwI1*&#&pxUSif)+WmlBu};XWn+fd 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T14-53-02-037Z.log.gz b/collector-data/worker-1_2026-05-02T14-53-02-037Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..2d7c724f2e980212e5d7b166bedfe8692108a5c7 GIT binary patch literal 4163 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T15-13-02-357Z.log.gz b/collector-data/worker-1_2026-05-02T15-13-02-357Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..6ed40418ff3571303f337613538b9b75428422a9 GIT binary patch literal 4387 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T15-23-02-527Z.log.gz b/collector-data/worker-1_2026-05-02T15-23-02-527Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..caebc9b33df5794fe99204c22141868074ccbe45 GIT binary patch literal 4152 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 C_#)Z> literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T15-33-02-730Z.log.gz b/collector-data/worker-1_2026-05-02T15-33-02-730Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..b149e3534b4f63380daee97bcdff1134a03274fd GIT binary patch literal 4124 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T15-43-02-885Z.log.gz b/collector-data/worker-1_2026-05-02T15-43-02-885Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..9c714a150fb29a210cca37523f37db370184fcfd GIT binary patch literal 4035 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 R`q#^0`F~A6mGI?k007N^Yx4jA literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T16-03-03-176Z.log.gz b/collector-data/worker-1_2026-05-02T16-03-03-176Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..8d82f59a8f69c949b1461ba4412192eeaf1f81da GIT binary patch literal 4174 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T16-23-03-501Z.log.gz b/collector-data/worker-1_2026-05-02T16-23-03-501Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..201997f62c494bec359d9ef71f1f5ad289d3343d GIT binary patch literal 4237 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 Y#e6Cz|FC+!>}oFhf2qQn7foyc0CEUxrT_o{ literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T16-43-03-775Z.log.gz b/collector-data/worker-1_2026-05-02T16-43-03-775Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..2ae9fd9121b183e11a8cfd4b26b9f8ea40a3dfe1 GIT binary patch literal 4412 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 Cdah6a literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T16-53-03-963Z.log.gz b/collector-data/worker-1_2026-05-02T16-53-03-963Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..4a455662f205cb802291afc7dd0a8996647837b1 GIT binary patch literal 4135 zcmV+?5ZLb@iwFP!000003Z-4!j^wrxea}}YKmsHWE|YcPr2zx+Jy-8$Z6m-M`!Jr7 zvklKouV;E<@81VS_0C9?S|T~`eME^YR-HOkWTQd%k&%xKerMf|X=faS$gjJ0e zuKVHQ-TqDY*Z$)A__llTkKf_!=Ml)$>+V0FzWS!?e)#2~f9T(IuP%;#cfG&aAG>J& zI7e9n5%G2R)u-Qm`p?rKUwqbG9&T^@%j5oV+g%^-kH234S_mAU-tOV}_D%Qq!;jt7 z;kMs(_wR2nKf1a&UMwIP3_g9=<;CUO{!RDt;{8p3d+grb9WML(`~Ir?14f8(5l_Ug zyDwk8dhzPR$e%yG@Ns|BA0Cd2z$kt?q2J&4cir{jzx&%=cX7SH?Ei9kxO)eehnoew zKnU&;f12U1zx=NI_~PCEMSnJ4+?O^Y-0b_-yH7VcL5jn z8VUqm{?iv-{rIMP@o?-8KXo?=wXn<3fwkCfvSf!DnVM|X6A&Uvv-J^yaCpX^ApvjP zhsGA1ahWSz@zjhUgp+Z~y&oe4rpHek?aHms zV*>BE#=@Dw_$S0@tW}giRDU%cr*IpxgW&8V__T5_4~OercX4^#|F8dqy8YF4|A}7! zd$1Y;r;(+?*w};Dkb9ck56-G29*TkB<1@w<1RjOO!O&}Vs?dU?-;6FIAfwe9hW+~U z?%l=1ecy$p1r`S^p(XT71R0s&fIM$YyfYT8mF7uF5AYNoCuL;9ulnQN`wl;*1rP!` zuJSp&Gc!*OdSx1YDff4?gp%zr5bxE@7>N4!G=(T8lW6nIQl zwkEnYPcJQvZJ3g~=C@--!X<%hRE=WT-VGl7r?U2Eflu$R` zaez4D#G}nsHgW`1Ry-bgeUiigJ8rf-K`_?jbg$@Lg&=s7dHWUbB?6v&l?8|cax+sa z^2*`?)%{Ef_?m|k57EvxVcB2-gr6v@`i^zMij_ioB@&Yedp_$HWq>pqcZhM5-o{`&dX*cCvPJ7d&T&iFzbFN?row?G z1dmdq53g7ldK2EGf7bdi7~*nQkr2+AEb?xACPVbLj!}yeVu@2yQuSpH#QK?*evY&y zKtO5@xso(qo@wG`wjRKYyv7N-vY*jFkhsKS*H;29u$QJJBY}OOYEB_Zm-U!`UU8&O z4+tX}yF9NJRbM@|rB$Nof}l)t>!R3!5dtkHD=TYC2E3E%GLC3^k|e&SPfY4EW%-griHHWGjb3|>Qh?F&2RG{ z!L<7y@(?1Ga#GP0%K2DPoJo+V<&p+vS2TA*vUwG0yXYrL!;Z}rl!RwPRRW?U6?-)3 ziL#d)IeQ2gp5gSwfHAW4)+NMOrD!MlQmtF9;DjZnd0wOCLSTZe76cQ}#Y{3-u~gxq z8Zk|UHf&X7qAOG|e{o<(bY*NVtBFlQa;OpFUDB!JEc06Zwgj4}M0Fd&X>JpF#ybn* zsnY}}j7YAA#3I?nslsjTtd3c{A)Ka42E!8RDe^#0(-|?d&#sv`Yr)7Yvo0LoT5!QO z5?ZIJi5sO-mC1rr7H(Z0A1bEbGWg(&Q(LEmnrK!HsruwF=#t}%>U?hEl%cv=sj0}U zQG?U0#$5&_;L*Gcj;4HBkin0-ceXnU+zvg6l`I7-G(uIt-Av2gjwlI9J~W#zX+GbQ z9y#Tk3rYDlb8yNRiDL~9bIK2+ktKGz;gwZI9~DDJz@k?TKzXZJ)%*tVW-$vWk+z-E zGbYRpVNb}X@> zy~-!epG-q#&?~z&WNRXgS5;ojtly|~w|nKYUUD9=<~+TUNMT=LKyki zy5=-YHpysLwJ=5B}{ZP5u;{;wXMN~)-*q8$=^lEC~8T6 zLP&?M>`X=}ajprQ6ys?%{d^1!seJFau9ZEgW@v-2YljJshq7vVbrLFAu55}4saP-N z4e&vW^@240rm|T_3wCsxWnAVjw{tDq3r@+;=0_q9ZGaUO?4U|0nc}Xb^m~W1zJN7= z12(ay6dRO1;@p$hY&kMuv85$4K|N!A5h|pjzBJ2$3GckkKfA(g$U+RW_NjF$6;yC# zXR?ExWyVen-Y>R~mIpv`Q+;KIKi0C_4!%xtWOabh0Q?C2*9*9evjC zM@>5{E)v&r!_cF6oVPd^`Ok#)vKZ+KHe}S~0x?SuD_%T+%r-=YL2CbmOhat>;AkOA zs1vZG3fOjZ?zLD`N=U|ru7IfOH@Q~bEWu-FI8zdncpfXW+o%G1klekmYymQ0Ft*wd z8E}FPmGYR*Nsi9X7hb*)Rc=Q!B}?Z?d(`&flob~qA4&i(FbZVEkgoN=ZhL@HEOoP7+$-+p3U7b^1_L(VXnF8o<*t9Qw9C zov7^~%y0sB_Nh=6g{+OuB#Pbg;=`(8FzNem$7g@PIvD>O)z zEd{8AjetoQV{!F9Oo`llnu@k3>phZrieHlEC|0YDd3I1WUs`x<5@;2yS4qY^%`Tg- z0OWl}%PM>Vhv8C@ar#=IR*6a7zQNQH9YL_m=ik=(=KxKDYHdT0Sfy7s%uXq8BmT1ki7+i$op?|ElGghGj9A?)6o+nTVk*@G7 z(>4{LH=3DB;X!OVkrkih$&yYyMd6TxmY&#A2v6F9wohX!M(AU&R!^^yndu$tlZpr-&TfTR+iNONGB$|8iWQ)cA2m436Rhfk z4yTs2>Ljf)#W1?DuBD~9?20w*!c2G@4KN=bg!%Um-e4=tJXD@@Ux6uh|u%=MoeXK|XV=8XCPzVnfgO4`)wmZR8IUIGJ zl(yvzNKdiQ5n(!8?Wm@yPeIBkTwXETa$qRqRJhiDeXm<(BhRZTx zRI$k5jHVT?AX*@D(+psJ!>KmKE%krJ;{2Z_s%BNG$)d!xVs*+-sQGA~KEOlpGx54; z6Kh>^?upCYp`Jeh3C4lwRIG z3$ZIUp<0#9ns_TdGY%oSPW-`CX$@FiiNHavlB#BLMIl(Oy0ln9G}Kz^SZTshY;MaM z9^jYnFesZ_RmT?9`kKw2bh6nMM1_u9{|5l2DrP5niKMIiwFP!000003Z-3bZzQ>K{+?ga0TLkjaCKy{iZ25g$ocNmPWDn-v>pGG;DTHcd-TN<2>DLvRL(0@hJ)o`fm(>WAGR2ckFg1fDiV= z@NYl;=G`#-;pX}D>ErP8&DYQShtu%o@p!v`dfML&|9}Zn`a7I~r^v7HyFY#${&jzI zfBH1M`;VDlCt!ykhTnYm%Xj}d{Nd^L)Bf)He*gG!_~F;X?eXDZe|tI{ABOwm)9LT0 zaBIM_e}$jNTE;lsKHfZin#GWO-x>4ibo!!wn}uNA|R*UzS=l%13efmAP z5Svf@e*btH_J8|wc-%h?;cf;MAh}H+n!pA>26lWRT5x=MZyBwAGoS_U?T6vV_wV1m zZ{c_Q+xx@Ae&%ZtAsIh1nw~K`i1l1`ZeaA_-K=S-CL9AG(}&@QAAkM(-;UrvACLFD z;pX;q_`m(H+;F(N-~TF1AK(lay6l*b39ym}t zuRRY4U@K?SYZxwp=f-=k_zJSXCcN6x?al3{{m0?IpZAYn2aBJdW)KJ#!+4Gs{4F5_ z;@2^qU$ExW$wP>jnLMLZlRyDX;!c-I31Y-oFCy;Xhr`pKhrd1^PW$0cH;4NvWmKg7AoV+0>~^q%i8LGg6>ygxplW?&8yZt=}b5SbfCr9(!*Fj;|x zh2{t`h0BJMF|Gz3PQZw-Ggx-@(iGCpSTMnjrtqid`}?1dhlkVt@yEa2?!U-n&H}w` zt`U=2HbmMP1Sf>#{8jR{t4@b@#sPEepKjV225T>2tjyl3Wzf!eaD18dv$Ze#xr|D| zYn>?xi^ntWP11?@7Y!!TdcYplr@E3^*y8#`UxowGdN+0#a zfP|2tOAQTFZ5<@A=Hd{}AFJ~TNDweyJa}G->(P&dx+TNyQfR3k?J$BRY@CoHHOk1~ z!xrBnoQq9kp8u6S-VkxdJvave$9q6y0*=7*R`x_Y$G|Ce#R3MOtL`YtIylv4A#UFLLgywW8^9iq8+(W zJ|Xtfv-Qc9dPdD0H1{VrGZ@Jm`)xL3{k-vY zygvY<-M-m*XChc`C*Z1avCw3PlUkpG8)Rr*Q0jBQ8J?&wGh(6T(csuIurb5W?|ygo zsK>{<{o`cMu@Lg$Qo~2qH!Dj?H3c5mH+1tOJYlx3qBjV1CDVHO-aP8{u$qD1$IhHT z!&1c70M+4&h1+`5uBvLf&;xm%J2F^IAu=!oKXThk1dgSYSr^>SoUh{>BP8BT$62Vc zttihKuUQ`Fz?twilX3)1ZnSMXzzh`J+yFY}&v_uTWk)(%!!C@x!WV47r{h38sl+LgVYsIrjLoH>lr_hpa67EnCSc*n1Q7hCYA zCp%@~z|mc*Fxiln{U;Vb8D#jVa zj9aQb85_ORk$o1zP0{L)MlvGQ)35ZVUh2lizwN9zKg0#xNCGpw_FOA;)$a^}x2}l* z8k6zD&v|+#q?@TwihU#QxMDOJMb%h!Nvs!MjK*!AQES0E*Jg{?4JadsF3z*oYA8mF z<=DS>^Jk=wY0mt*KG%(oN~))%KDIQj!}didQAr-oQ@x&3WF(~tA5lce3=LJm z@}<%ygC9N}PQ#z~Uw1O}9pMbvgPAbjuIUb7oY}OAYye+nrhUbk3{Sr06g@*nQ&cUT z+Y#j~jv86fa+>OMg+GPXw7N#?!8qSW9G#~_503oYOfPs=Ib-m)OS<5*D5R?Kt)*TW zka_etyscn_+=Z@lC7;zMKK84@yyRGvw(8`(q*qjp_FO_*8LS)#g$+d*F9}(;lP>dg z4365Pzz)af7?SrJ)qP&_Ka93V-RC9si>_t(itX#-s0h>JX+@U9fr+|nPF_wrY{hi@N6rS2yLlGN36kq7B#I0K9M6*91s^Gj zm@qku=~!FlqC9yU=V5+>5K#WWQd?s0dcPb=bsh?MQQbt2a{|I8_aAmf&XL-$Rczpl zq%f|jsMjiFk&6!-zQXCV6r<2?65Q7L)>KLFs5)UFWHnBYeT^ebEV0f(CTHF;u6fEc`$KUJTHb|+S zT-c_Z$>`9@5rfcL!+POL28;@m>Y2v~WVxTdg&ig^8w;r!>^b(<=`t>P-uO}}>ie{T z{RJUn*?IIF?PpZ4mS&*7L+I~HL$eNO> zhETNT>ansZaiFVfBf~;fC+c1kkzZFwL4BHp3{TFFmh}4RM969p_ofZNp`>TJ=*$rq z+Zd^49x-c0jNN2?QOd#A%(j^=T3`kSq-};2vrNPI*65c#XcVSL)V#B2q9TO)XsjOc zHRFw0-(g#=yGqd#g{Bd1%`;*VPPpD#vJ6T>CN4uFvqOR?QFQnz+~FO z-;XBcDJ8h}KG#QIOlXlzVov2?bdpj?~!iJqqXLN-SJQ424+=W3G&4Q%Nq0 z;-zLmU8SZd3_MI)^OvTVOP!(1$C304QSV-&ao2D+y%RwXnbuYHJRksjH*R-SdMb)w ztMZM)Y!g`f1}-bgpx}F_m@OpJUJkIdnOVAwdpl)fR@>@!wNkQtcb#g)*zRK zR5V8KkCG@}Ox4@alj^2?v&Ve7cV#PPXynwdQ%ObPvRw|Iir}Qb(vyK?O|wTAYw1aH zGB<6MSu%YaOAAkxWvr#tsR&70{io6d&=jrJCUIBF_m0HaJ6P#cDxZZ zTUSIDGzq7=RhPPZwQ@ZjXDKT#q+?a9U`@Hlb#fU`hm#=>6xzD3rdp87l^+v&s`5}2 z!IPUi&sI*9RKfj)kmu_^G*LHS8xp&DT*~qaW9AYi-DKsPNBWzQk}%x*1b031GlKJR zQ;?PVckI*aB_XT9h7oH}Iyt$qq`C*Jqed$Fgk1gR)a9)T4k6hs`DQ^oz)Gi}oZbQ@ zuso|am|xBp5cx^zNBc$wm)wTZMMg{gn9eVCq#}x8ec~U_+B^EUc#ur7Wk}&joOf3A#I?3M3VQR<$LS1|wB+_RW@5vaI|7 zG{9*h;nOb!T3}S)h*cm6p-cHzP_EFyzUWn;9&DIYgVshV=lQ<3`=UT&k!4JyuE~s^-`%K-;QBVXp(J%CTDgjUKgVmV5Wr(;@^IRU_Ayk)? zb#hpnyY;3Vc)_luQW$2hrdR?Iu=Qi6tl()jx5rJy`ASoei;!dYMZ^Uv*CDl+$gI%x zj7q3$axTA*5P359x&bDzQ#qz?N~More5!br@mZnRcG?57O_@5A|e2?_++gVADBK|m` ZKPmRBkP6m8B+WJb{}0y@t_}5U002(sft&yU literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T17-13-04-227Z.log.gz b/collector-data/worker-1_2026-05-02T17-13-04-227Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..e6b4a4833bf3e0898c9b8fd3ffe1d41acb6c0cda GIT binary patch literal 4178 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 csxmfD5cL<-ZKiExuH}9I22ZIrgt03A#yfB*mh literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T17-23-04-394Z.log.gz b/collector-data/worker-1_2026-05-02T17-23-04-394Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..af7154c78d7519cfe19bb514d314500abf86cd71 GIT binary patch literal 4043 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 PufFYH1V!^X)NB9%Os-`g literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T17-53-04-878Z.log.gz b/collector-data/worker-1_2026-05-02T17-53-04-878Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..8df13f36d43e355a80fb87d59cdfcd2244d770cf GIT binary patch literal 4235 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 N`+qwUQ1(o40064)nTY@Z literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T18-13-05-088Z.log.gz b/collector-data/worker-1_2026-05-02T18-13-05-088Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..f504269c71d1cb1d12814a350c081a79766155ed GIT binary patch literal 4219 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 R)>1aU@t^Co=%z?)002jNMO6R* literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T18-23-05-268Z.log.gz b/collector-data/worker-1_2026-05-02T18-23-05-268Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..c3cd845becae5b3d26f7003e6291877a01a90cdb GIT binary patch literal 4040 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T18-43-05-550Z.log.gz b/collector-data/worker-1_2026-05-02T18-43-05-550Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..592cf85ada49da597df4237d8ee3d9d05ef12e40 GIT binary patch literal 4504 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 XGkKP-jcbkd`z$5^0^ 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T19-13-06-028Z.log.gz b/collector-data/worker-1_2026-05-02T19-13-06-028Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..674a92018b4fd71d481decd322aa229bcced366c GIT binary patch literal 3951 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 J@2VnY004Sa&f@?8 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T19-23-06-173Z.log.gz b/collector-data/worker-1_2026-05-02T19-23-06-173Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..9c1a63db95ea77e7d8ce2bc705d4af604f7a6bf7 GIT binary patch literal 4080 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T19-53-06-642Z.log.gz b/collector-data/worker-1_2026-05-02T19-53-06-642Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ee0c902d4c0e238a45fc1f98a7283ced0d79c147 GIT binary patch literal 4145 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 hnYc{cGnuZ=U>d&OT4mY006_0Iq3iZ literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T20-13-06-963Z.log.gz b/collector-data/worker-1_2026-05-02T20-13-06-963Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..0ba74e5708d246e38db4442407ebb0a95c781d12 GIT binary patch literal 4100 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 Cx*T}` literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-02T20-23-07-108Z.log.gz b/collector-data/worker-1_2026-05-02T20-23-07-108Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ddec54cabcf17d94ca8f93c5de7427bfde1902ea GIT binary patch literal 4137 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 literal 0 HcmV?d00001 diff --git a/collector-data/worker-1_2026-05-04T08-50-49-891Z.log.gz b/collector-data/worker-1_2026-05-04T08-50-49-891Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..718dc2800b020cf529f7b47f7a058fcf8ea85f34 GIT binary patch literal 2394 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 literal 0 HcmV?d00001 diff --git a/dist-server/collector.js b/dist-server/collector.js new file mode 100644 index 0000000..e71f033 --- /dev/null +++ b/dist-server/collector.js @@ -0,0 +1,497 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LogCollector = void 0; +const dgram = __importStar(require("dgram")); +const fs = __importStar(require("fs")); +const path = __importStar(require("path")); +const zlib = __importStar(require("zlib")); +class LogCollector { + config; + streams = new Map(); + buffers = new Map(); + fileSizes = new Map(); + fileCreatedAt = new Map(); + rotationTimer = null; + udpServer = null; + forwardBuffers = new Map(); + forwardTimers = new Map(); + constructor(config = {}) { + this.config = { + storageDir: config.storageDir || path.join(process.cwd(), 'collector-data'), + maxLinesPerStream: config.maxLinesPerStream || 100000, + maxStreams: config.maxStreams || 50, + udpPort: config.udpPort || 5140, + udpEnabled: config.udpEnabled !== false, + rotation: config.rotation || { + maxSizeBytes: 5 * 1024 * 1024, // 5MB default + maxAgeMs: 10 * 60 * 1000, // 10 min default + compression: 'gzip', + fileExtension: '.log', + }, + forwardTargets: config.forwardTargets || [], + persistToDisk: config.persistToDisk !== false, + }; + if (!fs.existsSync(this.config.storageDir)) { + fs.mkdirSync(this.config.storageDir, { recursive: true }); + } + this.loadExistingStreams(); + // Start rotation check timer + if (this.config.rotation.maxAgeMs > 0) { + this.rotationTimer = setInterval(() => this.checkTimeRotation(), Math.min(this.config.rotation.maxAgeMs / 2, 30000)); + } + // Start UDP server + if (this.config.udpEnabled) { + this.startUdpServer(); + } + } + startUdpServer() { + try { + this.udpServer = dgram.createSocket('udp4'); + this.udpServer.on('message', (msg, rinfo) => { + const message = msg.toString('utf-8').trim(); + if (!message) + return; + // Parse stream ID from message or use sender IP as stream + // Format: | or just (uses IP:port as stream) + let streamId; + let logLine; + const pipeIdx = message.indexOf('|'); + if (pipeIdx > 0 && pipeIdx < 64 && !message.substring(0, pipeIdx).includes(' ')) { + streamId = message.substring(0, pipeIdx); + logLine = message.substring(pipeIdx + 1); + } + else { + streamId = `udp-${rinfo.address}`; + logLine = message; + } + this.ingest(streamId, [logLine], `UDP ${rinfo.address}:${rinfo.port}`); + }); + this.udpServer.on('error', (err) => { + console.error(`UDP server error: ${err.message}`); + }); + this.udpServer.bind(this.config.udpPort, '0.0.0.0', () => { + console.log(` UDP collector listening on port ${this.config.udpPort}`); + }); + } + catch (err) { + console.error('Failed to start UDP server:', err.message); + } + } + loadExistingStreams() { + try { + const metaFile = path.join(this.config.storageDir, '_streams.json'); + if (fs.existsSync(metaFile)) { + const data = JSON.parse(fs.readFileSync(metaFile, 'utf-8')); + for (const stream of data) { + this.streams.set(stream.id, stream); + const streamFile = this.getStreamFilePath(stream.id); + if (fs.existsSync(streamFile)) { + const content = fs.readFileSync(streamFile, 'utf-8'); + const lines = content.split('\n').filter(l => l.length > 0); + this.buffers.set(stream.id, lines); + const stat = fs.statSync(streamFile); + this.fileSizes.set(stream.id, stat.size); + this.fileCreatedAt.set(stream.id, stat.birthtimeMs || Date.now()); + } + else { + this.buffers.set(stream.id, []); + this.fileSizes.set(stream.id, 0); + this.fileCreatedAt.set(stream.id, Date.now()); + } + } + } + } + catch (err) { + console.error('Error loading collector streams:', err); + } + } + saveMetadata() { + const metaFile = path.join(this.config.storageDir, '_streams.json'); + fs.writeFileSync(metaFile, JSON.stringify(Array.from(this.streams.values()), null, 2)); + } + getStreamFilePath(streamId) { + return path.join(this.config.storageDir, `${streamId}${this.config.rotation.fileExtension}`); + } + getRotatedFilePath(streamId) { + const ts = new Date().toISOString().replace(/[:.]/g, '-'); + const ext = this.config.rotation.fileExtension; + const compExt = this.getCompressionExtension(); + return path.join(this.config.storageDir, `${streamId}_${ts}${ext}${compExt}`); + } + getCompressionExtension() { + switch (this.config.rotation.compression) { + case 'gzip': return '.gz'; + case 'bzip2': return '.bz2'; + case 'xz': return '.xz'; + case 'zstd': return '.zst'; + default: return ''; + } + } + saveStream(streamId) { + if (!this.config.persistToDisk) + return; + const lines = this.buffers.get(streamId) || []; + const streamFile = this.getStreamFilePath(streamId); + const content = lines.join('\n') + (lines.length > 0 ? '\n' : ''); + fs.writeFileSync(streamFile, content); + this.fileSizes.set(streamId, Buffer.byteLength(content, 'utf-8')); + } + checkSizeRotation(streamId) { + if (this.config.rotation.maxSizeBytes <= 0) + return; + const size = this.fileSizes.get(streamId) || 0; + if (size >= this.config.rotation.maxSizeBytes) { + this.rotateStream(streamId); + } + } + checkTimeRotation() { + if (this.config.rotation.maxAgeMs <= 0) + return; + const now = Date.now(); + for (const [streamId, createdAt] of this.fileCreatedAt) { + if (now - createdAt >= this.config.rotation.maxAgeMs) { + const buffer = this.buffers.get(streamId); + if (buffer && buffer.length > 0) { + this.rotateStream(streamId); + } + } + } + } + rotateStream(streamId) { + const srcFile = this.getStreamFilePath(streamId); + if (!fs.existsSync(srcFile)) + return; + const content = fs.readFileSync(srcFile); + if (content.length === 0) + return; + const destFile = this.getRotatedFilePath(streamId); + // Compress and write + let compressed; + switch (this.config.rotation.compression) { + case 'gzip': + compressed = zlib.gzipSync(content); + break; + case 'bzip2': + case 'xz': + case 'zstd': + // For these, just copy without compression (would need external tools) + compressed = content; + break; + default: + compressed = content; + } + fs.writeFileSync(destFile, compressed); + console.log(` Rotated: ${streamId} -> ${path.basename(destFile)} (${compressed.length} bytes)`); + // Reset current file + fs.writeFileSync(srcFile, ''); + this.buffers.set(streamId, []); + this.fileSizes.set(streamId, 0); + this.fileCreatedAt.set(streamId, Date.now()); + const stream = this.streams.get(streamId); + if (stream) { + stream.lineCount = 0; + stream.currentFileSize = 0; + } + this.saveMetadata(); + } + // ---- Forwarding ---- + forwardLines(streamId, lines) { + for (const target of this.config.forwardTargets) { + const key = `${streamId}:${target.type}:${target.url || target.path || target.host}`; + if (!this.forwardBuffers.has(key)) + this.forwardBuffers.set(key, []); + const buf = this.forwardBuffers.get(key); + buf.push(...lines); + const batchSize = target.batchSize || 100; + if (buf.length >= batchSize) { + this.flushForward(key, target, streamId); + } + else if (!this.forwardTimers.has(key)) { + const flushMs = target.flushIntervalMs || 5000; + this.forwardTimers.set(key, setTimeout(() => { + this.flushForward(key, target, streamId); + this.forwardTimers.delete(key); + }, flushMs)); + } + } + } + flushForward(key, target, streamId) { + const lines = this.forwardBuffers.get(key) || []; + if (lines.length === 0) + return; + this.forwardBuffers.set(key, []); + switch (target.type) { + case 'http': + this.forwardHttp(target, streamId, lines); + break; + case 'file': + this.forwardFile(target, lines); + break; + case 'udp': + this.forwardUdp(target, streamId, lines); + break; + case 'stream': + this.forwardToStream(target, streamId, lines); + break; + case 'console': + for (const l of lines) + console.log(`[FWD:${streamId}] ${l}`); + break; + } + } + forwardHttp(target, streamId, lines) { + if (!target.url) + return; + const payload = target.format === 'json' + ? JSON.stringify({ stream: streamId, lines, timestamp: new Date().toISOString() }) + : lines.join('\n'); + try { + const url = new URL(target.url); + const transport = url.protocol === 'https:' ? require('https') : require('http'); + const req = transport.request({ + hostname: url.hostname, + port: url.port || (url.protocol === 'https:' ? 443 : 80), + path: url.pathname, + method: 'POST', + headers: { 'Content-Type': target.format === 'json' ? 'application/json' : 'text/plain', 'X-Stream-Id': streamId }, + }); + req.on('error', (e) => console.error(`Forward HTTP error: ${e.message}`)); + req.write(payload); + req.end(); + } + catch (e) { + console.error(`Forward HTTP error: ${e.message}`); + } + } + forwardFile(target, lines) { + if (!target.path) + return; + try { + fs.appendFileSync(target.path, lines.join('\n') + '\n'); + } + catch (e) { + console.error(`Forward file error: ${e.message}`); + } + } + forwardUdp(target, streamId, lines) { + if (!target.host || !target.port) + return; + try { + const client = dgram.createSocket('udp4'); + for (const line of lines) { + const msg = Buffer.from(`${streamId}|${line}`); + client.send(msg, target.port, target.host); + } + setTimeout(() => client.close(), 1000); + } + catch (e) { + console.error(`Forward UDP error: ${e.message}`); + } + } + forwardToStream(target, sourceStreamId, lines) { + const targetId = target.targetStream; + if (!targetId || targetId === sourceStreamId) + return; // Prevent infinite loop + try { + // Prefix lines with source stream info + const prefixed = lines.map(l => `[fwd:${sourceStreamId}] ${l}`); + // Ingest directly into the target stream without triggering forwards again + const stream = this.getOrCreateStream(targetId, `Forwarded from ${sourceStreamId}`); + const buffer = this.buffers.get(targetId); + for (const line of prefixed) { + if (buffer.length >= this.config.maxLinesPerStream) + buffer.shift(); + buffer.push(line); + } + stream.lineCount = buffer.length; + stream.lastReceived = new Date().toISOString(); + if (this.config.persistToDisk) + this.saveStream(targetId); + this.saveMetadata(); + } + catch (e) { + console.error(`Forward stream error: ${e.message}`); + } + } + // ---- Public API ---- + getOrCreateStream(streamId, name) { + if (this.streams.has(streamId)) + return this.streams.get(streamId); + if (this.streams.size >= this.config.maxStreams) + throw new Error(`Max streams (${this.config.maxStreams}) reached`); + const stream = { + id: streamId, name: name || streamId, createdAt: new Date().toISOString(), + lineCount: 0, lastReceived: null, currentFileSize: 0, + }; + this.streams.set(streamId, stream); + this.buffers.set(streamId, []); + this.fileSizes.set(streamId, 0); + this.fileCreatedAt.set(streamId, Date.now()); + this.saveMetadata(); + return stream; + } + ingest(streamId, lines, streamName) { + const stream = this.getOrCreateStream(streamId, streamName); + const buffer = this.buffers.get(streamId); + let accepted = 0, dropped = 0; + const validLines = []; + for (const line of lines) { + if (line.trim() === '') + continue; + if (buffer.length >= this.config.maxLinesPerStream) { + buffer.shift(); + dropped++; + } + buffer.push(line); + validLines.push(line); + accepted++; + } + stream.lineCount = buffer.length; + stream.lastReceived = new Date().toISOString(); + if (this.config.persistToDisk) { + this.saveStream(streamId); + stream.currentFileSize = this.fileSizes.get(streamId) || 0; + this.checkSizeRotation(streamId); + } + // Forward to targets + if (validLines.length > 0 && this.config.forwardTargets.length > 0) { + this.forwardLines(streamId, validLines); + } + this.saveMetadata(); + return { accepted, dropped }; + } + getStreams() { return Array.from(this.streams.values()); } + readStream(streamId, tail) { + const buffer = this.buffers.get(streamId); + if (!buffer) + throw new Error(`Stream not found: ${streamId}`); + return tail && tail > 0 ? buffer.slice(-tail) : [...buffer]; + } + deleteStream(streamId) { + if (!this.streams.has(streamId)) + return false; + this.streams.delete(streamId); + this.buffers.delete(streamId); + this.fileSizes.delete(streamId); + this.fileCreatedAt.delete(streamId); + const f = this.getStreamFilePath(streamId); + if (fs.existsSync(f)) + fs.unlinkSync(f); + this.saveMetadata(); + return true; + } + getConfig() { return { ...this.config }; } + shutdown() { + if (this.rotationTimer) + clearInterval(this.rotationTimer); + if (this.udpServer) + this.udpServer.close(); + for (const timer of this.forwardTimers.values()) + clearTimeout(timer); + } + handleRequest(req, res, pathname) { + const method = req.method || 'GET'; + // POST /collect/:streamId + const collectMatch = pathname.match(/^\/collect\/([a-zA-Z0-9_\-\.]+)(\/json)?$/); + if (collectMatch && method === 'POST') { + const streamId = collectMatch[1]; + const isJson = !!collectMatch[2]; + let body = ''; + req.on('data', (chunk) => { body += chunk.toString(); }); + req.on('end', () => { + try { + let lines; + if (isJson) { + const parsed = JSON.parse(body); + lines = Array.isArray(parsed) ? parsed.map((e) => typeof e === 'string' ? e : JSON.stringify(e)) : [JSON.stringify(parsed)]; + } + else { + lines = body.split('\n'); + } + const streamName = req.headers['x-stream-name']; + const result = this.ingest(streamId, lines, streamName); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: true, ...result })); + } + catch (err) { + res.writeHead(400, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: err.message })); + } + }); + return true; + } + // GET /collector/streams + if (pathname === '/collector/streams' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.getStreams())); + return true; + } + // GET /collector/config + if (pathname === '/collector/config' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.getConfig())); + return true; + } + // GET /collector/stream/:id + const readMatch = pathname.match(/^\/collector\/stream\/([a-zA-Z0-9_\-\.]+)$/); + if (readMatch && method === 'GET') { + const streamId = readMatch[1]; + try { + const url = new URL(req.url || '/', `http://${req.headers.host}`); + const tail = url.searchParams.get('tail'); + const lines = this.readStream(streamId, tail ? parseInt(tail, 10) : undefined); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ streamId, lineCount: lines.length, lines })); + } + catch (err) { + res.writeHead(404, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: err.message })); + } + return true; + } + // DELETE /collector/stream/:id + const deleteMatch = pathname.match(/^\/collector\/stream\/([a-zA-Z0-9_\-\.]+)$/); + if (deleteMatch && method === 'DELETE') { + const deleted = this.deleteStream(deleteMatch[1]); + res.writeHead(deleted ? 200 : 404, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: deleted })); + return true; + } + return false; + } +} +exports.LogCollector = LogCollector; +//# sourceMappingURL=collector.js.map \ No newline at end of file diff --git a/dist-server/collector.js.map b/dist-server/collector.js.map new file mode 100644 index 0000000..df56b73 --- /dev/null +++ b/dist-server/collector.js.map @@ -0,0 +1 @@ +{"version":3,"file":"collector.js","sourceRoot":"","sources":["../src/server/collector.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6CAA+B;AAC/B,uCAAyB;AACzB,2CAA6B;AAC7B,2CAA6B;AA0C7B,MAAa,YAAY;IACf,MAAM,CAAkB;IACxB,OAAO,GAA2B,IAAI,GAAG,EAAE,CAAC;IAC5C,OAAO,GAA0B,IAAI,GAAG,EAAE,CAAC;IAC3C,SAAS,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC3C,aAAa,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC/C,aAAa,GAA0B,IAAI,CAAC;IAC5C,SAAS,GAAwB,IAAI,CAAC;IACtC,cAAc,GAA0B,IAAI,GAAG,EAAE,CAAC;IAClD,aAAa,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE/D,YAAY,SAAmC,EAAE;QAC/C,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC;YAC3E,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,MAAM;YACrD,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,EAAE;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,KAAK,KAAK;YACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI;gBAC3B,YAAY,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,cAAc;gBAC7C,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAO,iBAAiB;gBAChD,WAAW,EAAE,MAAM;gBACnB,aAAa,EAAE,MAAM;aACtB;YACD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,EAAE;YAC3C,aAAa,EAAE,MAAM,CAAC,aAAa,KAAK,KAAK;SAC9C,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,6BAA6B;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACvH,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC;YACH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE5C,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gBAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7C,IAAI,CAAC,OAAO;oBAAE,OAAO;gBAErB,0DAA0D;gBAC1D,0EAA0E;gBAC1E,IAAI,QAAgB,CAAC;gBACrB,IAAI,OAAe,CAAC;gBAEpB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChF,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;oBACzC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;oBAClC,OAAO,GAAG,OAAO,CAAC;gBACpB,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACjC,OAAO,CAAC,KAAK,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE;gBACvD,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;YACpE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC5D,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;oBAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;oBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;oBACrD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;wBACnC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;wBACrC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBACpE,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBAChC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;wBACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QACpE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC/F,CAAC;IAEO,kBAAkB,CAAC,QAAgB;QACzC,MAAM,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,QAAQ,IAAI,EAAE,GAAG,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC;IAChF,CAAC;IAEO,uBAAuB;QAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzC,KAAK,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC;YAC1B,KAAK,OAAO,CAAC,CAAC,OAAO,MAAM,CAAC;YAC5B,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC;YACxB,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;YAC3B,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,QAAgB;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,OAAO;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAClE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAEO,iBAAiB,CAAC,QAAgB;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC;YAAE,OAAO;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC;YAAE,OAAO;QAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvD,IAAI,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC1C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAgB;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO;QAEpC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAEnD,qBAAqB;QACrB,IAAI,UAAkB,CAAC;QACvB,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACzC,KAAK,MAAM;gBACT,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,OAAO,CAAC;YACb,KAAK,IAAI,CAAC;YACV,KAAK,MAAM;gBACT,uEAAuE;gBACvE,UAAU,GAAG,OAAO,CAAC;gBACrB,MAAM;YACR;gBACE,UAAU,GAAG,OAAO,CAAC;QACzB,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,cAAc,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC;QAEjG,qBAAqB;QACrB,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,MAAM,EAAE,CAAC;YAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;YAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;QAAC,CAAC;QACjE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,uBAAuB;IACf,YAAY,CAAC,QAAgB,EAAE,KAAe;QACpD,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YACrF,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YAEnB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC;YAC1C,IAAI,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC;gBAC/C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE;oBAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;oBACzC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,MAAqB,EAAE,QAAgB;QACvE,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC/B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEjC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,MAAM;gBACT,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,KAAK;gBACR,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,SAAS;gBACZ,KAAK,MAAM,CAAC,IAAI,KAAK;oBAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC7D,MAAM;QACV,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,MAAqB,EAAE,QAAgB,EAAE,KAAe;QAC1E,IAAI,CAAC,MAAM,CAAC,GAAG;YAAE,OAAO;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM;YACtC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;YAClF,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;gBAC5B,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE;aACnH,CAAC,CAAC;YACH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjF,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,uBAAwB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC/E,CAAC;IAEO,WAAW,CAAC,MAAqB,EAAE,KAAe;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO;QACzB,IAAI,CAAC;YACH,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,uBAAwB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC/E,CAAC;IAEO,UAAU,CAAC,MAAqB,EAAE,QAAgB,EAAE,KAAe;QACzE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO;QACzC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,CAAC;YACD,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,sBAAuB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IAC9E,CAAC;IAEO,eAAe,CAAC,MAAqB,EAAE,cAAsB,EAAE,KAAe;QACpF,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,cAAc;YAAE,OAAO,CAAC,wBAAwB;QAC9E,IAAI,CAAC;YACH,uCAAuC;YACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,cAAc,KAAK,CAAC,EAAE,CAAC,CAAC;YAChE,2EAA2E;YAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,cAAc,EAAE,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB;oBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;gBACnE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;YACD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;YACjC,MAAM,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa;gBAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,yBAA0B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAAC,CAAC;IACjF,CAAC;IAED,uBAAuB;IAEvB,iBAAiB,CAAC,QAAgB,EAAE,IAAa;QAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACnE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,UAAU,WAAW,CAAC,CAAC;QAEpH,MAAM,MAAM,GAAc;YACxB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACzE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;SACrD,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,QAAgB,EAAE,KAAe,EAAE,UAAmB;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QAC3C,IAAI,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC;QAE9B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,SAAS;YACjC,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;YAClF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,QAAQ,EAAE,CAAC;QACb,CAAC;QAED,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;QACjC,MAAM,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC1B,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,qBAAqB;QACrB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,UAAU,KAAkB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvE,UAAU,CAAC,QAAgB,EAAE,IAAa;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,KAAsB,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE3D,QAAQ;QACN,IAAI,IAAI,CAAC,aAAa;YAAE,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACvE,CAAC;IAED,aAAa,CAAC,GAAyB,EAAE,GAAwB,EAAE,QAAgB;QACjF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;QAEnC,0BAA0B;QAC1B,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjF,IAAI,YAAY,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACzD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,IAAI,KAAe,CAAC;oBACpB,IAAI,MAAM,EAAE,CAAC;wBACX,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAChC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnI,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC;oBACD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAuB,CAAC;oBACtE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;oBACxD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;gBACnD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yBAAyB;QACzB,IAAI,QAAQ,KAAK,oBAAoB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAC1D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,wBAAwB;QACxB,IAAI,QAAQ,KAAK,mBAAmB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACzD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4BAA4B;QAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC/E,IAAI,SAAS,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBAClE,MAAM,IAAI,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC/E,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+BAA+B;QAC/B,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QACjF,IAAI,WAAW,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3E,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA7cD,oCA6cC"} \ No newline at end of file diff --git a/dist-server/configFile.js b/dist-server/configFile.js new file mode 100644 index 0000000..0086e05 --- /dev/null +++ b/dist-server/configFile.js @@ -0,0 +1,101 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getConfigFilePath = getConfigFilePath; +exports.loadConfigFile = loadConfigFile; +exports.saveConfigFile = saveConfigFile; +const fs = __importStar(require("fs")); +const path = __importStar(require("path")); +const CONFIG_FILE = 'logviewer.config.json'; +function getConfigFilePath() { + return path.join(process.cwd(), CONFIG_FILE); +} +function loadConfigFile() { + const defaults = { + mode: 'both', + port: 8080, + host: '0.0.0.0', + viewer: { + sources: [], + theme: 'dark', + refreshInterval: 2000, + tailMode: true, + maxLines: 50000, + defaultLevel: 'ALL', + }, + collector: { + enabled: true, + storageDir: './collector-data', + maxLinesPerStream: 100000, + maxStreams: 50, + persistToDisk: true, + udp: { enabled: true, port: 5140 }, + rotation: { maxSizeBytes: 5242880, maxAgeMs: 600000, compression: 'gzip', fileExtension: '.log' }, + forwardTargets: [], + }, + s3: { sources: {} }, + remoteCollector: { url: '' }, + }; + const filePath = getConfigFilePath(); + if (fs.existsSync(filePath)) { + try { + const fileContent = JSON.parse(fs.readFileSync(filePath, 'utf-8')); + return deepMerge(defaults, fileContent); + } + catch (err) { + console.error(`Error reading ${CONFIG_FILE}:`, err.message); + } + } + return defaults; +} +function saveConfigFile(config) { + const filePath = getConfigFilePath(); + const existing = loadConfigFile(); + const merged = deepMerge(existing, config); + fs.writeFileSync(filePath, JSON.stringify(merged, null, 2)); +} +function deepMerge(target, source) { + const result = { ...target }; + for (const key of Object.keys(source)) { + if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) { + result[key] = deepMerge(target[key] || {}, source[key]); + } + else { + result[key] = source[key]; + } + } + return result; +} +//# sourceMappingURL=configFile.js.map \ No newline at end of file diff --git a/dist-server/configFile.js.map b/dist-server/configFile.js.map new file mode 100644 index 0000000..811fcb4 --- /dev/null +++ b/dist-server/configFile.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configFile.js","sourceRoot":"","sources":["../src/server/configFile.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist-server/configManager.js b/dist-server/configManager.js new file mode 100644 index 0000000..4bc53ec --- /dev/null +++ b/dist-server/configManager.js @@ -0,0 +1,97 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ConfigManager = void 0; +const fs = __importStar(require("fs")); +const path = __importStar(require("path")); +class ConfigManager { + config; + constructor() { + this.config = this.loadConfig(); + } + loadConfig() { + this.loadEnvFile(); + const sourcesRaw = process.env.LOG_SOURCES || ''; + const sources = sourcesRaw + .split(',') + .map((s) => s.trim()) + .filter((s) => s.length > 0); + return { + sources, + refreshInterval: parseInt(process.env.LOG_REFRESH_INTERVAL || '2000', 10), + maxLines: parseInt(process.env.LOG_MAX_LINES || '50000', 10), + theme: process.env.LOG_THEME || 'dark', + defaultLevel: process.env.LOG_DEFAULT_LEVEL || 'ALL', + tailMode: process.env.LOG_TAIL_MODE !== 'false', + timestampRegex: process.env.LOG_TIMESTAMP_REGEX || null, + }; + } + loadEnvFile() { + const envPaths = [ + path.join(process.cwd(), '.env'), + path.join(__dirname, '..', '..', '.env'), + ]; + for (const envPath of envPaths) { + if (fs.existsSync(envPath)) { + const content = fs.readFileSync(envPath, 'utf-8'); + for (const line of content.split('\n')) { + const trimmed = line.trim(); + if (trimmed && !trimmed.startsWith('#')) { + const eqIndex = trimmed.indexOf('='); + if (eqIndex > 0) { + const key = trimmed.substring(0, eqIndex).trim(); + const value = trimmed.substring(eqIndex + 1).trim(); + if (!process.env[key]) { + process.env[key] = value; + } + } + } + } + break; + } + } + } + getConfig() { + return { ...this.config }; + } + updateSources(sources) { + this.config.sources = sources; + } + getSources() { + return [...this.config.sources]; + } +} +exports.ConfigManager = ConfigManager; +//# sourceMappingURL=configManager.js.map \ No newline at end of file diff --git a/dist-server/configManager.js.map b/dist-server/configManager.js.map new file mode 100644 index 0000000..6377f95 --- /dev/null +++ b/dist-server/configManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"configManager.js","sourceRoot":"","sources":["../src/server/configManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist-server/logSourceManager.js b/dist-server/logSourceManager.js new file mode 100644 index 0000000..94caf9b --- /dev/null +++ b/dist-server/logSourceManager.js @@ -0,0 +1,280 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LogSourceManager = void 0; +const fs = __importStar(require("fs")); +const path = __importStar(require("path")); +const zlib = __importStar(require("zlib")); +const child_process_1 = require("child_process"); +class LogSourceManager { + configManager; + sources = new Map(); + constructor(configManager) { + this.configManager = configManager; + this.initializeSources(); + } + initializeSources() { + const configSources = this.configManager.getSources(); + for (const source of configSources) { + this.addSource(source); + } + } + addSource(sourcePath) { + if (sourcePath.includes('*')) { + const resolvedPaths = this.resolveGlob(sourcePath); + for (const rp of resolvedPaths) { + this.addSingleSource(rp); + } + } + else { + this.addSingleSource(sourcePath); + } + this.configManager.updateSources(Array.from(this.sources.keys())); + } + addSingleSource(sourcePath) { + const resolved = path.resolve(sourcePath); + const type = this.detectType(resolved); + let size = 0; + let lastModified = null; + let exists = false; + try { + const stats = fs.statSync(resolved); + size = stats.size; + lastModified = stats.mtime.toISOString(); + exists = true; + } + catch { + // File doesn't exist yet + } + this.sources.set(resolved, { + path: resolved, + displayName: path.basename(resolved), + type, + size, + lastModified, + exists, + }); + } + removeSource(sourcePath) { + const resolved = path.resolve(sourcePath); + this.sources.delete(resolved); + this.configManager.updateSources(Array.from(this.sources.keys())); + } + getSources() { + for (const [key, source] of this.sources) { + try { + const stats = fs.statSync(key); + source.size = stats.size; + source.lastModified = stats.mtime.toISOString(); + source.exists = true; + } + catch { + source.exists = false; + } + } + return Array.from(this.sources.values()); + } + detectType(filePath) { + const ext = path.extname(filePath).toLowerCase(); + switch (ext) { + case '.gz': + case '.gzip': return 'gzip'; + case '.bz2': + case '.bzip2': return 'bzip2'; + case '.xz': return 'xz'; + case '.zst': + case '.zstd': return 'zstd'; + default: return 'text'; + } + } + async readLog(sourcePath) { + const resolved = path.resolve(sourcePath); + const source = this.sources.get(resolved); + if (!source) + throw new Error(`Source not found: ${sourcePath}`); + const config = this.configManager.getConfig(); + const content = this.readFileContent(resolved, source.type); + const lines = content.split('\n'); + const maxLines = config.maxLines; + const startIndex = lines.length > maxLines ? lines.length - maxLines : 0; + const entries = []; + for (let i = startIndex; i < lines.length; i++) { + const line = lines[i]; + if (line.trim() === '') + continue; + entries.push({ + line, + lineNumber: i + 1, + source: resolved, + timestamp: this.extractTimestamp(line, config.timestampRegex), + level: this.extractLevel(line), + }); + } + return entries; + } + async readAllLogs() { + const allEntries = []; + for (const [sourcePath] of this.sources) { + try { + const entries = await this.readLog(sourcePath); + allEntries.push(...entries); + } + catch (err) { + allEntries.push({ + line: `[ERROR] Could not read ${sourcePath}: ${err.message}`, + lineNumber: 0, + source: sourcePath, + timestamp: new Date().toISOString(), + level: 'ERROR', + }); + } + } + allEntries.sort((a, b) => { + if (a.timestamp && b.timestamp) + return a.timestamp.localeCompare(b.timestamp); + return 0; + }); + return allEntries; + } + readFileContent(filePath, type) { + switch (type) { + case 'gzip': return this.readGzip(filePath); + case 'bzip2': return this.readBzip2(filePath); + case 'xz': return this.readXz(filePath); + case 'zstd': return this.readZstd(filePath); + default: return fs.readFileSync(filePath, 'utf-8'); + } + } + readGzip(filePath) { + const compressed = fs.readFileSync(filePath); + return zlib.gunzipSync(compressed).toString('utf-8'); + } + readBzip2(filePath) { + try { + return (0, child_process_1.execSync)(`bzcat "${filePath}"`, { maxBuffer: 100 * 1024 * 1024 }).toString('utf-8'); + } + catch { + throw new Error('Cannot decompress bzip2. Make sure bzip2 is installed.'); + } + } + readXz(filePath) { + try { + return (0, child_process_1.execSync)(`xzcat "${filePath}"`, { maxBuffer: 100 * 1024 * 1024 }).toString('utf-8'); + } + catch { + throw new Error('Cannot decompress xz. Make sure xz-utils is installed.'); + } + } + readZstd(filePath) { + try { + return (0, child_process_1.execSync)(`zstdcat "${filePath}"`, { maxBuffer: 100 * 1024 * 1024 }).toString('utf-8'); + } + catch { + throw new Error('Cannot decompress zstd. Make sure zstd is installed.'); + } + } + extractTimestamp(line, customRegex) { + const patterns = [ + /(\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)/, + /^([A-Z][a-z]{2}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})/, + /\[(\d{2}\/[A-Z][a-z]{2}\/\d{4}:\d{2}:\d{2}:\d{2}\s[+-]\d{4})\]/, + /(\d{4}\/\d{2}\/\d{2}\s+\d{2}:\d{2}:\d{2})/, + ]; + if (customRegex) { + try { + const match = line.match(new RegExp(customRegex)); + if (match) + return match[1] || match[0]; + } + catch { /* skip */ } + } + for (const pattern of patterns) { + const match = line.match(pattern); + if (match) + return match[1]; + } + return null; + } + extractLevel(line) { + const upper = line.toUpperCase(); + const levels = ['FATAL', 'ERROR', 'WARN', 'WARNING', 'INFO', 'DEBUG', 'TRACE', 'VERBOSE']; + for (const level of levels) { + if (new RegExp(`\\b${level}\\b`).test(upper)) { + return level === 'WARNING' ? 'WARN' : level; + } + } + return null; + } + resolveGlob(pattern) { + const dir = path.dirname(pattern); + const filePattern = path.basename(pattern); + const results = []; + try { + const files = fs.readdirSync(dir); + const regex = new RegExp('^' + filePattern.replace(/\./g, '\\.').replace(/\*/g, '.*').replace(/\?/g, '.') + '$'); + for (const file of files) { + if (regex.test(file)) { + const fullPath = path.join(dir, file); + try { + if (fs.statSync(fullPath).isFile()) + results.push(fullPath); + } + catch { /* skip */ } + } + } + } + catch { /* dir doesn't exist */ } + return results; + } + async getFileStats(sourcePath) { + const resolved = path.resolve(sourcePath); + try { + const stats = fs.statSync(resolved); + const source = this.sources.get(resolved); + const content = this.readFileContent(resolved, source?.type || 'text'); + return { + size: stats.size, + lastModified: stats.mtime.toISOString(), + lineCount: content.split('\n').length, + type: source?.type || 'text', + }; + } + catch { + return null; + } + } +} +exports.LogSourceManager = LogSourceManager; +//# sourceMappingURL=logSourceManager.js.map \ No newline at end of file diff --git a/dist-server/logSourceManager.js.map b/dist-server/logSourceManager.js.map new file mode 100644 index 0000000..dd6aed4 --- /dev/null +++ b/dist-server/logSourceManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logSourceManager.js","sourceRoot":"","sources":["../src/server/logSourceManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist-server/monitor.js b/dist-server/monitor.js new file mode 100644 index 0000000..8c51fe0 --- /dev/null +++ b/dist-server/monitor.js @@ -0,0 +1,516 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LogMonitor = void 0; +const fs = __importStar(require("fs")); +const path = __importStar(require("path")); +const zlib = __importStar(require("zlib")); +const http = __importStar(require("http")); +const https = __importStar(require("https")); +// ---- Monitor Engine ---- +class LogMonitor { + config; + scanTimer = null; + results = []; + constructor(config = {}) { + this.config = { + enabled: config.enabled !== false, + scanIntervalMs: config.scanIntervalMs || 60000, + rules: config.rules || [], + storageDir: config.storageDir || path.join(process.cwd(), 'monitor-data'), + }; + if (!fs.existsSync(this.config.storageDir)) { + fs.mkdirSync(this.config.storageDir, { recursive: true }); + } + this.loadState(); + if (this.config.enabled && this.config.rules.length > 0) { + this.startScanning(); + } + } + loadState() { + const stateFile = path.join(this.config.storageDir, '_monitor_state.json'); + if (fs.existsSync(stateFile)) { + try { + const data = JSON.parse(fs.readFileSync(stateFile, 'utf-8')); + this.results = data.results || []; + // Restore lastTriggered from state + if (data.rules) { + for (const saved of data.rules) { + const rule = this.config.rules.find(r => r.id === saved.id); + if (rule) { + rule.lastTriggered = saved.lastTriggered; + rule.matchCount = saved.matchCount || 0; + } + } + } + } + catch { } + } + } + saveState() { + const stateFile = path.join(this.config.storageDir, '_monitor_state.json'); + fs.writeFileSync(stateFile, JSON.stringify({ + results: this.results.slice(-100), + rules: this.config.rules.map(r => ({ id: r.id, lastTriggered: r.lastTriggered, matchCount: r.matchCount })), + }, null, 2)); + } + startScanning() { + if (this.scanTimer) + clearInterval(this.scanTimer); + console.log(` Monitor scanning every ${this.config.scanIntervalMs / 1000}s with ${this.config.rules.length} rule(s)`); + this.scanTimer = setInterval(() => this.runScan(), this.config.scanIntervalMs); + // Run immediately + setTimeout(() => this.runScan(), 2000); + } + stopScanning() { + if (this.scanTimer) { + clearInterval(this.scanTimer); + this.scanTimer = null; + } + } + async runScan() { + for (const rule of this.config.rules) { + if (!rule.enabled) + continue; + // Check schedule + if (rule.schedule && rule.schedule.mode !== 'interval') { + if (!this.shouldRunBySchedule(rule)) + continue; + } + // Check cooldown + if (rule.lastTriggered) { + const elapsed = Date.now() - new Date(rule.lastTriggered).getTime(); + if (elapsed < rule.cooldownMs) + continue; + } + try { + const matches = this.scanRule(rule); + if (matches.length > 0) { + const result = { + ruleId: rule.id, + ruleName: rule.name, + matchedLines: matches, + totalMatches: matches.length, + sources: rule.sources, + timestamp: new Date().toISOString(), + }; + rule.lastTriggered = result.timestamp; + rule.matchCount += matches.length; + this.results.push(result); + // Send notifications + await this.notify(rule, result); + this.saveState(); + } + } + catch (err) { + console.error(` Monitor rule "${rule.name}" error:`, err.message); + } + } + } + shouldRunBySchedule(rule) { + const schedule = rule.schedule; + if (!schedule) + return true; + const now = new Date(); + const lastRun = rule.lastTriggered ? new Date(rule.lastTriggered) : null; + switch (schedule.mode) { + case 'daily': { + // Run once per day at specified time (HH:MM) + const [h, m] = (schedule.value || '07:00').split(':').map(Number); + const targetToday = new Date(now); + targetToday.setHours(h, m, 0, 0); + // Already ran today? + if (lastRun && lastRun.toDateString() === now.toDateString()) + return false; + // Is it past the target time? + return now >= targetToday; + } + case 'hourly': { + // Run every N hours + const hours = parseInt(schedule.value || '2', 10); + if (!lastRun) + return true; + return (now.getTime() - lastRun.getTime()) >= hours * 3600000; + } + case 'cron': { + // Simple cron: just check if enough time passed based on scan interval + // Full cron parsing would need a library, so we approximate + return true; + } + default: return true; + } + } + scanRule(rule) { + const allMatches = []; + const regexes = rule.patterns.map(p => new RegExp(p, 'i')); + for (const source of rule.sources) { + const files = this.resolveFiles(source); + for (const file of files) { + if (!this.isInTimeRange(file, rule.timeRange)) + continue; + try { + const content = this.readFile(file); + const lines = content.split('\n'); + for (const line of lines) { + if (line.trim() === '') + continue; + const matched = rule.patternLogic === 'all' + ? regexes.every(r => r.test(line)) + : regexes.some(r => r.test(line)); + if (matched) + allMatches.push(line); + } + } + catch { } + } + } + return allMatches; + } + resolveFiles(pattern) { + if (pattern.includes('*')) { + const dir = path.dirname(pattern); + const filePattern = path.basename(pattern); + try { + const files = fs.readdirSync(dir); + const regex = new RegExp('^' + filePattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$'); + return files.filter(f => regex.test(f)).map(f => path.join(dir, f)); + } + catch { + return []; + } + } + return fs.existsSync(pattern) ? [pattern] : []; + } + isInTimeRange(file, range) { + if (range.type === 'all') + return true; + try { + const stat = fs.statSync(file); + const fileTime = stat.mtime.getTime(); + const now = Date.now(); + switch (range.type) { + case 'today': { + const startOfDay = new Date(); + startOfDay.setHours(0, 0, 0, 0); + return fileTime >= startOfDay.getTime(); + } + case 'week': return fileTime >= now - 7 * 24 * 60 * 60 * 1000; + case 'month': return fileTime >= now - 30 * 24 * 60 * 60 * 1000; + case 'hours': return fileTime >= now - (range.hours || 24) * 60 * 60 * 1000; + default: return true; + } + } + catch { + return false; + } + } + readFile(filePath) { + const ext = path.extname(filePath).toLowerCase(); + if (ext === '.gz' || ext === '.gzip') { + return zlib.gunzipSync(fs.readFileSync(filePath)).toString('utf-8'); + } + return fs.readFileSync(filePath, 'utf-8'); + } + // ---- Notifications ---- + async notify(rule, result) { + const summary = this.buildSummary(rule, result); + const attachment = result.matchedLines.length > rule.maxLinesInMessage + ? this.buildAttachment(result) + : null; + for (const channel of rule.notifications) { + try { + switch (channel.type) { + case 'webhook': + await this.sendWebhook(channel, summary, attachment); + break; + case 'telegram': + await this.sendTelegram(channel, summary, attachment); + break; + case 'teams': + await this.sendTeams(channel, summary); + break; + case 'email': + console.log(` [Monitor] Email notification not yet implemented`); + break; + } + } + catch (err) { + console.error(` [Monitor] Notification error (${channel.type}):`, err.message); + } + } + } + buildSummary(rule, result) { + const lines = result.matchedLines.slice(0, rule.maxLinesInMessage); + let msg = `🚨 **Log Monitor Alert: ${rule.name}**\n\n`; + msg += `**Matches:** ${result.totalMatches} lines\n`; + msg += `**Sources:** ${result.sources.join(', ')}\n`; + msg += `**Time:** ${result.timestamp}\n`; + msg += `**Patterns:** ${rule.patterns.join(' | ')}\n\n`; + msg += `**Sample (first ${lines.length} of ${result.totalMatches}):**\n`; + msg += '```\n' + lines.join('\n') + '\n```'; + if (result.totalMatches > rule.maxLinesInMessage) { + msg += `\n\n📎 Full results (${result.totalMatches} lines) attached as .gz file.`; + } + return msg; + } + buildAttachment(result) { + const content = result.matchedLines.join('\n'); + return zlib.gzipSync(Buffer.from(content, 'utf-8')); + } + async sendWebhook(channel, message, attachment) { + if (!channel.url) + return; + const payload = JSON.stringify({ + text: message, + matches: attachment ? `(${attachment.length} bytes gzipped attachment)` : undefined, + }); + await this.httpPost(channel.url, payload, 'application/json'); + console.log(` [Monitor] Webhook sent to ${channel.url}`); + } + async sendTelegram(channel, message, attachment) { + if (!channel.botToken || !channel.chatId) + return; + // Send text message - use plain text to avoid Markdown parsing issues + const payload = JSON.stringify({ + chat_id: channel.chatId, + text: message.replace(/[*_`\[]/g, '').substring(0, 4000), // Strip markdown, respect limit + }); + await this.httpPost(`https://api.telegram.org/bot${channel.botToken}/sendMessage`, payload, 'application/json'); + console.log(` [Monitor] Telegram sent to chat ${channel.chatId}`); + } + async sendTeams(channel, message) { + if (!channel.url) + return; + const payload = JSON.stringify({ + '@type': 'MessageCard', + summary: 'Log Monitor Alert', + text: message.replace(/\n/g, '
').replace(/```/g, ''), + }); + await this.httpPost(channel.url, payload, 'application/json'); + console.log(` [Monitor] Teams webhook sent`); + } + httpPost(targetUrl, body, contentType) { + return new Promise((resolve, reject) => { + const parsed = new URL(targetUrl); + const isHttps = parsed.protocol === 'https:'; + const transport = isHttps ? https : http; + const req = transport.request({ + hostname: parsed.hostname, + port: parsed.port || (isHttps ? 443 : 80), + path: parsed.pathname + parsed.search, + method: 'POST', + headers: { 'Content-Type': contentType, 'Content-Length': Buffer.byteLength(body) }, + }, (res) => { + let responseBody = ''; + res.on('data', (c) => { responseBody += c; }); + res.on('end', () => { + if (res.statusCode && res.statusCode >= 400) { + reject(new Error(`HTTP ${res.statusCode}: ${responseBody.substring(0, 200)}`)); + } + else { + resolve(); + } + }); + }); + req.on('error', reject); + req.setTimeout(10000, () => { req.destroy(); reject(new Error('Timeout')); }); + req.write(body); + req.end(); + }); + } + // ---- Public API ---- + getRules() { return this.config.rules; } + getResults() { return this.results; } + getConfig() { return { ...this.config }; } + addRule(rule) { + this.config.rules.push(rule); + this.saveState(); + if (this.config.rules.length === 1 && !this.scanTimer) + this.startScanning(); + } + updateRule(id, updates) { + const rule = this.config.rules.find(r => r.id === id); + if (!rule) + return false; + Object.assign(rule, updates); + this.saveState(); + return true; + } + deleteRule(id) { + const idx = this.config.rules.findIndex(r => r.id === id); + if (idx === -1) + return false; + this.config.rules.splice(idx, 1); + this.saveState(); + return true; + } + triggerRule(id) { + const rule = this.config.rules.find(r => r.id === id); + if (!rule) + return null; + const matches = this.scanRule(rule); + if (matches.length === 0) + return null; + const result = { + ruleId: rule.id, ruleName: rule.name, matchedLines: matches, + totalMatches: matches.length, sources: rule.sources, timestamp: new Date().toISOString(), + }; + this.results.push(result); + rule.matchCount += matches.length; + this.saveState(); + return result; + } + getAttachment(ruleId) { + const result = [...this.results].reverse().find(r => r.ruleId === ruleId); + if (!result) + return null; + return zlib.gzipSync(Buffer.from(result.matchedLines.join('\n'), 'utf-8')); + } + handleRequest(req, res, pathname) { + const method = req.method || 'GET'; + if (pathname === '/api/monitor/rules' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.getRules())); + return true; + } + if (pathname === '/api/monitor/rules' && method === 'POST') { + let body = ''; + req.on('data', c => body += c); + req.on('end', () => { + try { + const rule = JSON.parse(body); + if (!rule.id) + rule.id = 'rule-' + Date.now(); + if (!rule.maxLinesInMessage) + rule.maxLinesInMessage = 20; + if (!rule.cooldownMs) + rule.cooldownMs = 300000; + if (!rule.matchCount) + rule.matchCount = 0; + if (!rule.lastTriggered) + rule.lastTriggered = null; + this.addRule(rule); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: true, rule })); + } + catch (e) { + res.writeHead(400, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: e.message })); + } + }); + return true; + } + // Test notification endpoint + if (pathname === '/api/monitor/test-notification' && method === 'POST') { + let body = ''; + req.on('data', c => body += c); + req.on('end', async () => { + try { + const channel = JSON.parse(body); + const testMsg = `🧪 **Test Notification**\n\nThis is a test from LogViewer Monitor.\nTimestamp: ${new Date().toISOString()}\n\nIf you see this, notifications are working! ✅`; + await this.sendTestNotification(channel, testMsg); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: true })); + } + catch (e) { + res.writeHead(500, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: false, error: e.message })); + } + }); + return true; + } + const ruleMatch = pathname.match(/^\/api\/monitor\/rule\/([a-zA-Z0-9_\-]+)$/); + if (ruleMatch && method === 'DELETE') { + const ok = this.deleteRule(ruleMatch[1]); + res.writeHead(ok ? 200 : 404, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok })); + return true; + } + if (ruleMatch && method === 'PUT') { + let body = ''; + req.on('data', c => body += c); + req.on('end', () => { + const updates = JSON.parse(body); + const ok = this.updateRule(ruleMatch[1], updates); + res.writeHead(ok ? 200 : 404, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok })); + }); + return true; + } + const triggerMatch = pathname.match(/^\/api\/monitor\/trigger\/([a-zA-Z0-9_\-]+)$/); + if (triggerMatch && method === 'POST') { + const result = this.triggerRule(triggerMatch[1]); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(result || { matches: 0 })); + return true; + } + if (pathname === '/api/monitor/results' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.results.slice(-50))); + return true; + } + if (pathname === '/api/monitor/config' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.getConfig())); + return true; + } + return false; + } + async sendTestNotification(channel, message) { + switch (channel.type) { + case 'webhook': + if (!channel.url) + throw new Error('No webhook URL provided'); + await this.sendWebhook(channel, message, null); + break; + case 'telegram': + if (!channel.botToken || !channel.chatId) + throw new Error('Bot token and chat ID required'); + await this.sendTelegram(channel, message, null); + break; + case 'teams': + if (!channel.url) + throw new Error('No Teams webhook URL provided'); + await this.sendTeams(channel, message); + break; + case 'email': + throw new Error('Email test not yet implemented'); + default: + throw new Error(`Unknown channel type: ${channel.type}`); + } + } +} +exports.LogMonitor = LogMonitor; +//# sourceMappingURL=monitor.js.map \ No newline at end of file diff --git a/dist-server/monitor.js.map b/dist-server/monitor.js.map new file mode 100644 index 0000000..0b6b409 --- /dev/null +++ b/dist-server/monitor.js.map @@ -0,0 +1 @@ +{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../src/server/monitor.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist-server/s3Source.js b/dist-server/s3Source.js new file mode 100644 index 0000000..9fe2311 --- /dev/null +++ b/dist-server/s3Source.js @@ -0,0 +1,192 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +exports.S3Source = void 0; +const https = __importStar(require("https")); +const http = __importStar(require("http")); +const crypto = __importStar(require("crypto")); +const zlib = __importStar(require("zlib")); +/** + * Minimal S3 client without external dependencies. + * Supports AWS S3 and S3-compatible services (MinIO, DigitalOcean Spaces, etc.) + */ +class S3Source { + config; + host; + useHttps; + constructor(config) { + this.config = config; + if (config.endpoint) { + const url = new URL(config.endpoint); + this.host = url.host; + this.useHttps = url.protocol === 'https:'; + } + else { + this.host = `${config.bucket}.s3.${config.region}.amazonaws.com`; + this.useHttps = true; + } + } + /** + * List objects in the bucket with optional prefix + */ + async listObjects(prefix) { + const usedPrefix = prefix || this.config.prefix || ''; + const queryParams = usedPrefix ? `list-type=2&prefix=${encodeURIComponent(usedPrefix)}` : 'list-type=2'; + const path = this.config.endpoint ? `/${this.config.bucket}/?${queryParams}` : `/?${queryParams}`; + const response = await this.request('GET', path, ''); + const objects = []; + // Simple XML parsing for S3 ListObjectsV2 response + const contentRegex = /([\s\S]*?)<\/Contents>/g; + let match; + while ((match = contentRegex.exec(response)) !== null) { + const content = match[1]; + const key = this.extractXmlValue(content, 'Key'); + const size = parseInt(this.extractXmlValue(content, 'Size') || '0', 10); + const lastModified = this.extractXmlValue(content, 'LastModified') || ''; + if (key && !key.endsWith('/')) { + objects.push({ key, size, lastModified }); + } + } + return objects; + } + /** + * Download an object's content as string + */ + async getObject(key) { + const path = this.config.endpoint + ? `/${this.config.bucket}/${encodeURIComponent(key)}` + : `/${encodeURIComponent(key)}`; + const response = await this.requestRaw('GET', path, ''); + // Auto-decompress if gzipped + if (key.endsWith('.gz') || key.endsWith('.gzip')) { + try { + const decompressed = zlib.gunzipSync(response); + return decompressed.toString('utf-8'); + } + catch { + return response.toString('utf-8'); + } + } + return response.toString('utf-8'); + } + extractXmlValue(xml, tag) { + const regex = new RegExp(`<${tag}>(.*?)`); + const match = xml.match(regex); + return match ? match[1] : null; + } + async request(method, path, body) { + const buf = await this.requestRaw(method, path, body); + return buf.toString('utf-8'); + } + async requestRaw(method, path, body) { + const now = new Date(); + const dateStamp = now.toISOString().replace(/[-:]/g, '').split('.')[0] + 'Z'; + const shortDate = dateStamp.substring(0, 8); + const headers = { + 'host': this.host, + 'x-amz-date': dateStamp, + 'x-amz-content-sha256': this.sha256(body), + }; + // Create canonical request + const [pathPart, queryPart] = path.split('?'); + const canonicalQueryString = queryPart || ''; + const signedHeaderKeys = Object.keys(headers).sort(); + const signedHeaders = signedHeaderKeys.join(';'); + const canonicalHeaders = signedHeaderKeys.map(k => `${k}:${headers[k]}\n`).join(''); + const canonicalRequest = [ + method, + pathPart, + canonicalQueryString, + canonicalHeaders, + signedHeaders, + headers['x-amz-content-sha256'], + ].join('\n'); + // Create string to sign + const credentialScope = `${shortDate}/${this.config.region}/s3/aws4_request`; + const stringToSign = [ + 'AWS4-HMAC-SHA256', + dateStamp, + credentialScope, + this.sha256(canonicalRequest), + ].join('\n'); + // Calculate signature + const signingKey = this.getSignatureKey(shortDate); + const signature = this.hmac(signingKey, stringToSign).toString('hex'); + // Authorization header + headers['authorization'] = `AWS4-HMAC-SHA256 Credential=${this.config.accessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`; + return new Promise((resolve, reject) => { + const options = { + hostname: this.host.split(':')[0], + port: this.host.includes(':') ? parseInt(this.host.split(':')[1]) : (this.useHttps ? 443 : 80), + path: path, + method: method, + headers: headers, + }; + const transport = this.useHttps ? https : http; + const req = transport.request(options, (res) => { + const chunks = []; + res.on('data', (chunk) => chunks.push(chunk)); + res.on('end', () => { + const data = Buffer.concat(chunks); + if (res.statusCode && res.statusCode >= 400) { + reject(new Error(`S3 error ${res.statusCode}: ${data.toString('utf-8').substring(0, 200)}`)); + } + else { + resolve(data); + } + }); + }); + req.on('error', reject); + req.setTimeout(30000, () => { req.destroy(); reject(new Error('S3 request timeout')); }); + if (body) + req.write(body); + req.end(); + }); + } + sha256(data) { + return crypto.createHash('sha256').update(data, 'utf8').digest('hex'); + } + hmac(key, data) { + return crypto.createHmac('sha256', key).update(data, 'utf8').digest(); + } + getSignatureKey(dateStamp) { + const kDate = this.hmac(`AWS4${this.config.secretAccessKey}`, dateStamp); + const kRegion = this.hmac(kDate, this.config.region); + const kService = this.hmac(kRegion, 's3'); + return this.hmac(kService, 'aws4_request'); + } +} +exports.S3Source = S3Source; +//# sourceMappingURL=s3Source.js.map \ No newline at end of file diff --git a/dist-server/s3Source.js.map b/dist-server/s3Source.js.map new file mode 100644 index 0000000..04e02ea --- /dev/null +++ b/dist-server/s3Source.js.map @@ -0,0 +1 @@ +{"version":3,"file":"s3Source.js","sourceRoot":"","sources":["../src/server/s3Source.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist-server/server.js b/dist-server/server.js new file mode 100644 index 0000000..96f7d16 --- /dev/null +++ b/dist-server/server.js @@ -0,0 +1,448 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || (function () { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function (o) { + var ar = []; + for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + __setModuleDefault(result, mod); + return result; + }; +})(); +Object.defineProperty(exports, "__esModule", { value: true }); +const http = __importStar(require("http")); +const fs = __importStar(require("fs")); +const path = __importStar(require("path")); +const url = __importStar(require("url")); +const logSourceManager_1 = require("./logSourceManager"); +const configManager_1 = require("./configManager"); +const collector_1 = require("./collector"); +const s3Source_1 = require("./s3Source"); +const configFile_1 = require("./configFile"); +const monitor_1 = require("./monitor"); +const configManager = new configManager_1.ConfigManager(); +const logSourceManager = new logSourceManager_1.LogSourceManager(configManager); +// Mode: "viewer" | "collector" | "monitor" | "both" | "all" +const MODE = (process.env.LOG_MODE || 'both').toLowerCase(); +const PORT = parseInt(process.env.PORT || '8080', 10); +const HOST = process.env.HOST || '0.0.0.0'; +// Collector setup +let collector = null; +if (MODE === 'collector' || MODE === 'both') { + let forwardTargets = []; + try { + forwardTargets = JSON.parse(process.env.COLLECTOR_FORWARD_TARGETS || '[]'); + } + catch { } + collector = new collector_1.LogCollector({ + storageDir: process.env.COLLECTOR_STORAGE_DIR || path.join(process.cwd(), 'collector-data'), + maxLinesPerStream: parseInt(process.env.COLLECTOR_MAX_LINES || '100000', 10), + maxStreams: parseInt(process.env.COLLECTOR_MAX_STREAMS || '50', 10), + udpEnabled: process.env.COLLECTOR_UDP_ENABLED !== 'false', + udpPort: parseInt(process.env.COLLECTOR_UDP_PORT || '5140', 10), + persistToDisk: process.env.COLLECTOR_PERSIST !== 'false', + rotation: { + maxSizeBytes: parseInt(process.env.COLLECTOR_ROTATION_MAX_SIZE || '5242880', 10), + maxAgeMs: parseInt(process.env.COLLECTOR_ROTATION_MAX_AGE || '600000', 10), + compression: process.env.COLLECTOR_ROTATION_COMPRESSION || 'gzip', + fileExtension: process.env.COLLECTOR_ROTATION_EXTENSION || '.log', + }, + forwardTargets, + }); +} +// S3 sources from env +const s3Sources = new Map(); +function loadS3SourcesFromEnv() { + // Format: S3_SOURCE_=bucket:prefix + // S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION (global) + // Or per-source: S3_SOURCE__ACCESS_KEY, S3_SOURCE__SECRET_KEY, etc. + const globalAccessKey = process.env.S3_ACCESS_KEY_ID || process.env.AWS_ACCESS_KEY_ID || ''; + const globalSecretKey = process.env.S3_SECRET_ACCESS_KEY || process.env.AWS_SECRET_ACCESS_KEY || ''; + const globalRegion = process.env.S3_REGION || process.env.AWS_REGION || 'us-east-1'; + const globalEndpoint = process.env.S3_ENDPOINT || ''; + for (const [key, value] of Object.entries(process.env)) { + if (key.startsWith('S3_SOURCE_') && value && !key.includes('_ACCESS_KEY') && !key.includes('_SECRET_KEY') && !key.includes('_REGION') && !key.includes('_ENDPOINT')) { + const name = key.replace('S3_SOURCE_', '').toLowerCase(); + const parts = value.split(':'); + const bucket = parts[0]; + const prefix = parts.slice(1).join(':') || ''; + const accessKey = process.env[`S3_SOURCE_${name.toUpperCase()}_ACCESS_KEY`] || globalAccessKey; + const secretKey = process.env[`S3_SOURCE_${name.toUpperCase()}_SECRET_KEY`] || globalSecretKey; + const region = process.env[`S3_SOURCE_${name.toUpperCase()}_REGION`] || globalRegion; + const endpoint = process.env[`S3_SOURCE_${name.toUpperCase()}_ENDPOINT`] || globalEndpoint; + if (accessKey && secretKey && bucket) { + const config = { accessKeyId: accessKey, secretAccessKey: secretKey, region, bucket, prefix: prefix || undefined, endpoint: endpoint || undefined }; + s3Sources.set(name, new s3Source_1.S3Source(config)); + } + } + } +} +loadS3SourcesFromEnv(); +// Monitor setup +let monitor = null; +if (MODE === 'monitor' || MODE === 'both' || MODE === 'all') { + let monitorRules = []; + try { + monitorRules = JSON.parse(process.env.MONITOR_RULES || '[]'); + } + catch { } + monitor = new monitor_1.LogMonitor({ + enabled: process.env.MONITOR_ENABLED !== 'false', + scanIntervalMs: parseInt(process.env.MONITOR_SCAN_INTERVAL || '60000', 10), + rules: monitorRules, + storageDir: process.env.MONITOR_STORAGE_DIR || path.join(process.cwd(), 'monitor-data'), + }); +} +// Remote collector URL (for viewer mode connecting to a remote collector) +const REMOTE_COLLECTOR_URL = process.env.REMOTE_COLLECTOR_URL || ''; +const MIME_TYPES = { + '.html': 'text/html; charset=utf-8', + '.css': 'text/css; charset=utf-8', + '.js': 'application/javascript; charset=utf-8', + '.json': 'application/json; charset=utf-8', + '.png': 'image/png', + '.svg': 'image/svg+xml', + '.ico': 'image/x-icon', +}; +function sendJson(res, data, status = 200) { + res.writeHead(status, { 'Content-Type': 'application/json; charset=utf-8' }); + res.end(JSON.stringify(data)); +} +function sendError(res, message, status = 500) { + sendJson(res, { error: message }, status); +} +async function readBody(req) { + return new Promise((resolve, reject) => { + const chunks = []; + req.on('data', (chunk) => chunks.push(chunk)); + req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8'))); + req.on('error', reject); + }); +} +async function fetchRemote(remotePath) { + if (!REMOTE_COLLECTOR_URL) + throw new Error('No remote collector configured'); + const fullUrl = REMOTE_COLLECTOR_URL.replace(/\/$/, '') + remotePath; + return new Promise((resolve, reject) => { + const transport = fullUrl.startsWith('https') ? require('https') : require('http'); + transport.get(fullUrl, (res) => { + const chunks = []; + res.on('data', (c) => chunks.push(c)); + res.on('end', () => { + try { + resolve(JSON.parse(Buffer.concat(chunks).toString('utf-8'))); + } + catch { + resolve(Buffer.concat(chunks).toString('utf-8')); + } + }); + }).on('error', reject); + }); +} +const server = http.createServer(async (req, res) => { + const parsedUrl = url.parse(req.url || '/', true); + const pathname = parsedUrl.pathname || '/'; + const method = req.method || 'GET'; + // CORS + res.setHeader('Access-Control-Allow-Origin', '*'); + res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS'); + res.setHeader('Access-Control-Allow-Headers', 'Content-Type, X-Stream-Name'); + if (method === 'OPTIONS') { + res.writeHead(204); + res.end(); + return; + } + // ---- Collector endpoints ---- + if (collector && (pathname.startsWith('/collect/') || pathname.startsWith('/collector/'))) { + const handled = collector.handleRequest(req, res, pathname); + if (handled) + return; + } + // ---- Monitor endpoints ---- + if (monitor && pathname.startsWith('/api/monitor/')) { + const handled = monitor.handleRequest(req, res, pathname); + if (handled) + return; + } + // ---- API Routes ---- + if (pathname.startsWith('/api/')) { + try { + // GET /api/mode + if (pathname === '/api/mode' && method === 'GET') { + return sendJson(res, { mode: MODE, hasCollector: !!collector, hasRemoteCollector: !!REMOTE_COLLECTOR_URL, s3Sources: Array.from(s3Sources.keys()) }); + } + // GET /api/config + if (pathname === '/api/config' && method === 'GET') { + return sendJson(res, { ...configManager.getConfig(), mode: MODE }); + } + // GET /api/sources + if (pathname === '/api/sources' && method === 'GET') { + return sendJson(res, logSourceManager.getSources()); + } + // POST /api/sources { path: "..." } + if (pathname === '/api/sources' && method === 'POST') { + const body = JSON.parse(await readBody(req)); + logSourceManager.addSource(body.path); + return sendJson(res, logSourceManager.getSources()); + } + // DELETE /api/sources?path=... + if (pathname === '/api/sources' && method === 'DELETE') { + const sourcePath = parsedUrl.query.path; + if (!sourcePath) + return sendError(res, 'Missing path parameter', 400); + logSourceManager.removeSource(sourcePath); + return sendJson(res, logSourceManager.getSources()); + } + // GET /api/logs?source=... + if (pathname === '/api/logs' && method === 'GET') { + const source = parsedUrl.query.source; + if (source && source !== 'ALL') { + const entries = await logSourceManager.readLog(source); + return sendJson(res, entries); + } + else { + const entries = await logSourceManager.readAllLogs(); + return sendJson(res, entries); + } + } + // ---- S3 endpoints ---- + // POST /api/s3/add { name, bucket, prefix, accessKeyId, secretAccessKey, region, endpoint? } + if (pathname === '/api/s3/add' && method === 'POST') { + const body = JSON.parse(await readBody(req)); + const { name, bucket, prefix, accessKeyId, secretAccessKey, region, endpoint } = body; + if (!name || !bucket || !accessKeyId || !secretAccessKey || !region) { + return sendError(res, 'Missing required fields: name, bucket, accessKeyId, secretAccessKey, region', 400); + } + const config = { accessKeyId, secretAccessKey, region, bucket, prefix, endpoint }; + s3Sources.set(name, new s3Source_1.S3Source(config)); + return sendJson(res, { ok: true, name }); + } + // GET /api/s3/sources + if (pathname === '/api/s3/sources' && method === 'GET') { + return sendJson(res, Array.from(s3Sources.keys())); + } + // GET /api/s3/list?name=...&prefix=... + if (pathname === '/api/s3/list' && method === 'GET') { + const name = parsedUrl.query.name; + const prefix = parsedUrl.query.prefix; + const s3 = s3Sources.get(name); + if (!s3) + return sendError(res, `S3 source not found: ${name}`, 404); + const objects = await s3.listObjects(prefix); + return sendJson(res, objects); + } + // GET /api/s3/read?name=...&key=... + if (pathname === '/api/s3/read' && method === 'GET') { + const name = parsedUrl.query.name; + const key = parsedUrl.query.key; + const s3 = s3Sources.get(name); + if (!s3) + return sendError(res, `S3 source not found: ${name}`, 404); + if (!key) + return sendError(res, 'Missing key parameter', 400); + const content = await s3.getObject(key); + const lines = content.split('\n').filter(l => l.trim() !== ''); + const entries = lines.map((line, i) => ({ + line, + lineNumber: i + 1, + source: `s3://${name}/${key}`, + timestamp: extractTimestamp(line), + level: extractLevel(line), + })); + return sendJson(res, entries); + } + // DELETE /api/s3/remove?name=... + if (pathname === '/api/s3/remove' && method === 'DELETE') { + const name = parsedUrl.query.name; + if (!name) + return sendError(res, 'Missing name parameter', 400); + s3Sources.delete(name); + return sendJson(res, { ok: true }); + } + // ---- Remote Collector endpoints (viewer reads from remote collector) ---- + // GET /api/remote/streams + if (pathname === '/api/remote/streams' && method === 'GET') { + if (!REMOTE_COLLECTOR_URL) + return sendJson(res, []); + try { + const streams = await fetchRemote('/collector/streams'); + return sendJson(res, streams); + } + catch (err) { + return sendError(res, `Cannot reach remote collector: ${err.message}`); + } + } + // GET /api/remote/stream/:id?tail=N + const remoteStreamMatch = pathname.match(/^\/api\/remote\/stream\/([a-zA-Z0-9_\-\.]+)$/); + if (remoteStreamMatch && method === 'GET') { + const streamId = remoteStreamMatch[1]; + const tail = parsedUrl.query.tail; + const tailParam = tail ? `?tail=${tail}` : ''; + try { + const data = await fetchRemote(`/collector/stream/${streamId}${tailParam}`); + // Convert to LogEntry format + const lines = data.lines || []; + const entries = lines.map((line, i) => ({ + line, + lineNumber: i + 1, + source: `collector://${streamId}`, + timestamp: extractTimestamp(line), + level: extractLevel(line), + })); + return sendJson(res, entries); + } + catch (err) { + return sendError(res, err.message); + } + } + // ---- Collector streams as log source (local) ---- + // GET /api/collector/streams + if (pathname === '/api/collector/streams' && method === 'GET') { + if (!collector) + return sendJson(res, []); + return sendJson(res, collector.getStreams()); + } + // GET /api/collector/stream/:id + const localStreamMatch = pathname.match(/^\/api\/collector\/stream\/([a-zA-Z0-9_\-\.]+)$/); + if (localStreamMatch && method === 'GET') { + const streamId = localStreamMatch[1]; + if (!collector) + return sendError(res, 'Collector not enabled', 400); + try { + const tail = parsedUrl.query.tail; + const lines = collector.readStream(streamId, tail ? parseInt(tail, 10) : undefined); + const entries = lines.map((line, i) => ({ + line, + lineNumber: i + 1, + source: `stream://${streamId}`, + timestamp: extractTimestamp(line), + level: extractLevel(line), + })); + return sendJson(res, entries); + } + catch (err) { + return sendError(res, err.message, 404); + } + } + // POST /api/config/save - Save config to file + if (pathname === '/api/config/save' && method === 'POST') { + const body = JSON.parse(await readBody(req)); + (0, configFile_1.saveConfigFile)(body); + return sendJson(res, { ok: true }); + } + return sendError(res, 'Not found', 404); + } + catch (err) { + console.error('API error:', err); + return sendError(res, err.message); + } + } + // ---- Static Files ---- + const webDir = path.join(__dirname, '..', 'src', 'web'); + let filePath; + // Serve collector UI when in collector mode, monitor UI when in monitor mode + if (pathname === '/' || pathname === '/index.html') { + if (MODE === 'collector') { + filePath = path.join(webDir, 'collector.html'); + } + else if (MODE === 'monitor') { + filePath = path.join(webDir, 'monitor.html'); + } + else { + filePath = path.join(webDir, 'index.html'); + } + } + else { + filePath = path.join(webDir, pathname); + } + const webRoot = path.resolve(webDir); + const resolvedPath = path.resolve(filePath); + if (!resolvedPath.startsWith(webRoot)) { + res.writeHead(403); + res.end('Forbidden'); + return; + } + try { + if (!fs.existsSync(resolvedPath) || fs.statSync(resolvedPath).isDirectory()) { + res.writeHead(404); + res.end('Not found'); + return; + } + const ext = path.extname(resolvedPath); + const contentType = MIME_TYPES[ext] || 'application/octet-stream'; + res.writeHead(200, { 'Content-Type': contentType }); + res.end(fs.readFileSync(resolvedPath)); + } + catch { + res.writeHead(500); + res.end('Internal server error'); + } +}); +// Helper functions +function extractTimestamp(line) { + const patterns = [ + /(\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)/, + /^([A-Z][a-z]{2}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})/, + /\[(\d{2}\/[A-Z][a-z]{2}\/\d{4}:\d{2}:\d{2}:\d{2}\s[+-]\d{4})\]/, + ]; + for (const p of patterns) { + const m = line.match(p); + if (m) + return m[1]; + } + return null; +} +function extractLevel(line) { + const upper = line.toUpperCase(); + for (const level of ['FATAL', 'ERROR', 'WARN', 'WARNING', 'INFO', 'DEBUG', 'TRACE']) { + if (new RegExp(`\\b${level}\\b`).test(upper)) + return level === 'WARNING' ? 'WARN' : level; + } + return null; +} +server.listen(PORT, HOST, () => { + console.log(''); + console.log(' ╔══════════════════════════════════════════════════╗'); + console.log(` ║ 📋 Log Viewer - Mode: ${MODE.toUpperCase().padEnd(24)}║`); + console.log(' ╠══════════════════════════════════════════════════╣'); + console.log(` ║ URL: http://${HOST}:${PORT} ║`); + console.log(` ║ Sources: ${String(logSourceManager.getSources().length).padEnd(3)} file(s) ║`); + console.log(` ║ S3 Sources: ${String(s3Sources.size).padEnd(3)} configured ║`); + console.log(` ║ Collector: ${collector ? 'ACTIVE' : 'OFF'} ║`); + console.log(` ║ Monitor: ${monitor ? 'ACTIVE' : 'OFF'} ║`); + if (REMOTE_COLLECTOR_URL) { + console.log(` ║ Remote: ${REMOTE_COLLECTOR_URL.substring(0, 30).padEnd(30)} ║`); + } + console.log(' ╚══════════════════════════════════════════════════╝'); + console.log(''); + if (collector) { + console.log(' Collector endpoints:'); + console.log(` POST http://${HOST}:${PORT}/collect/ (plain text, one line per line)`); + console.log(` POST http://${HOST}:${PORT}/collect//json (JSON array of entries)`); + console.log(''); + } +}); +//# sourceMappingURL=server.js.map \ No newline at end of file diff --git a/dist-server/server.js.map b/dist-server/server.js.map new file mode 100644 index 0000000..159e870 --- /dev/null +++ b/dist-server/server.js.map @@ -0,0 +1 @@ +{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server/server.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/docs/COLLECTOR.md b/docs/COLLECTOR.md new file mode 100644 index 0000000..24e005e --- /dev/null +++ b/docs/COLLECTOR.md @@ -0,0 +1,358 @@ +# 📡 Log Collector — User Guide + +## Overview + +The Log Collector receives logs from applications via HTTP and UDP, stores them in named streams, rotates log files based on size/time, and optionally forwards them to other systems (databases, other collectors, files). + +--- + +## Starting the Collector + +### Option 1: Environment File +```bash +cp .env.collector .env +node dist-server/server.js +``` + +### Option 2: Inline +```bash +LOG_MODE=collector PORT=8081 COLLECTOR_UDP_PORT=5140 node dist-server/server.js +``` + +### Option 3: Docker +```bash +docker run -d -p 8081:8080 -p 5140:5140/udp \ + -e LOG_MODE=collector \ + -e COLLECTOR_UDP_PORT=5140 \ + -e COLLECTOR_ROTATION_COMPRESSION=gzip \ + -v ./collector-data:/app/collector-data \ + logviewer +``` + +### Option 4: Config File +```json +{ + "mode": "collector", + "port": 8081, + "collector": { + "enabled": true, + "storageDir": "./collector-data", + "maxLinesPerStream": 100000, + "maxStreams": 50, + "persistToDisk": true, + "udp": { "enabled": true, "port": 5140 }, + "rotation": { + "maxSizeBytes": 5242880, + "maxAgeMs": 600000, + "compression": "gzip", + "fileExtension": ".log" + }, + "forwardTargets": [] + } +} +``` + +--- + +## Sending Logs to the Collector + +### HTTP POST (Plain Text) + +Each line in the body becomes one log entry: +```bash +curl -X POST http://localhost:8081/collect/my-app \ + -d "2026-04-30T10:00:01Z INFO Application started" +``` + +Multiple lines: +```bash +curl -X POST http://localhost:8081/collect/my-app -d "line 1 +line 2 +line 3" +``` + +### HTTP POST (JSON) + +Send an array of strings or objects: +```bash +curl -X POST http://localhost:8081/collect/my-app/json \ + -H "Content-Type: application/json" \ + -d '["INFO App started", "ERROR Crash!", {"ts":"2026-04-30","level":"WARN","msg":"low memory"}]' +``` + +### UDP + +Format: `streamId|logline` — the part before `|` is the stream name: +```bash +echo "my-app|2026-04-30 ERROR database timeout" | nc -u localhost 5140 +``` + +Without stream ID (auto-named by sender IP): +```bash +echo "2026-04-30 INFO hello from UDP" | nc -u localhost 5140 +``` + +### From Applications + +**Node.js:** +```javascript +const http = require('http'); +function log(stream, msg) { + const req = http.request({ hostname:'localhost', port:8081, path:`/collect/${stream}`, method:'POST' }); + req.write(`${new Date().toISOString()} ${msg}`); + req.end(); +} +log('my-app', 'INFO Server started on port 3000'); +``` + +**Python:** +```python +import requests, datetime +def log(stream, msg): + ts = datetime.datetime.now().isoformat() + requests.post(f'http://localhost:8081/collect/{stream}', data=f'{ts} {msg}') + +log('my-app', 'INFO Processing complete') +``` + +**Bash (continuous pipe):** +```bash +tail -f /var/log/myapp.log | while read line; do + curl -s -X POST http://localhost:8081/collect/myapp -d "$line" +done +``` + +### Test Script (included) + +Sends random logs every 500ms: +```bash +node send-test-logs.js +node send-test-logs.js demo-app http://localhost:8081 +``` + +--- + +## GUI Guide + +### Layout + +``` +┌─────────────────────────────────────────────────────────────┐ +│ 📡 Log Collector [ACTIVE] Uptime: 5m 32s│ +├──────────────┬──────────────────────────────────────────────┤ +│ │ [🔴 Live Feed] [⚙️ Configuration] [🔀 Fwd] │ +│ 📊 Overview │ │ +│ ┌─────────┐ │ Live Feed: │ +│ │ 3 │ │ [demo-app] 10:00:01 INFO App started │ +│ │ Streams │ │ [demo-app] 10:00:02 ERROR DB timeout ← red │ +│ ├─────────┤ │ [web-srv] 10:00:03 WARN Slow request ← orange +│ │ 1.2k │ │ [demo-app] 10:00:04 INFO Request OK │ +│ │ Lines │ │ │ +│ ├─────────┤ │ New lines appear with animation │ +│ │ 120 │ │ │ +│ │ /min │ │ │ +│ └─────────┘ │ │ +│ │ │ +│ 📡 Streams │ │ +│ ┌──────────┐│ │ +│ │ demo-app ││ │ +│ │ 450 lines││ │ +│ │ 2s ago ││ │ +│ ├──────────┤│ │ +│ │ web-srv ││ │ +│ │ 120 lines││ │ +│ └──────────┘│ │ +│ │ │ +│ 🔗 Endpoints │ +│ POST /collect/ │ +│ UDP :5140 │ │ +└──────────────┴──────────────────────────────────────────────┘ +``` + +### Tabs + +**🔴 Live Feed** +- Shows incoming log lines in real-time +- Color-coded by level (red=ERROR, orange=WARN, blue=INFO) +- New lines animate in from the left +- Click a stream in the sidebar to filter the feed +- Pause/Resume button to freeze the feed +- Clear button to reset + +**⚙️ Configuration** +- Edit all collector settings via the GUI +- Changes are saved to `logviewer.config.json` +- Settings: storage dir, max streams, max lines, UDP port, rotation size/age/compression + +**🔀 Forwarding** +- View active forward targets +- Add new targets (HTTP, File, UDP, Console) +- Configure batch size and flush interval + +--- + +## Configuration Reference + +### Environment Variables + +| Variable | Default | Description | +|----------|---------|-------------| +| `LOG_MODE` | `both` | Set to `collector` | +| `PORT` | `8080` | HTTP port | +| `COLLECTOR_UDP_ENABLED` | `true` | Enable/disable UDP receiver | +| `COLLECTOR_UDP_PORT` | `5140` | UDP listen port | +| `COLLECTOR_STORAGE_DIR` | `./collector-data` | Where to store log files | +| `COLLECTOR_MAX_LINES` | `100000` | Max lines kept in memory per stream | +| `COLLECTOR_MAX_STREAMS` | `50` | Max number of streams | +| `COLLECTOR_PERSIST` | `true` | Write logs to disk | +| `COLLECTOR_ROTATION_MAX_SIZE` | `5242880` | Rotate after N bytes (default 5MB) | +| `COLLECTOR_ROTATION_MAX_AGE` | `600000` | Rotate after N ms (default 10min) | +| `COLLECTOR_ROTATION_COMPRESSION` | `gzip` | `none`, `gzip`, `bzip2`, `xz`, `zstd` | +| `COLLECTOR_ROTATION_EXTENSION` | `.log` | File extension for active log | +| `COLLECTOR_FORWARD_TARGETS` | `[]` | JSON array of forward targets | + +### Log Rotation + +Rotation triggers on whichever condition is met **first**: + +| Condition | Variable | Example | +|-----------|----------|---------| +| File size exceeds limit | `COLLECTOR_ROTATION_MAX_SIZE=10485760` | Rotate at 10MB | +| File age exceeds limit | `COLLECTOR_ROTATION_MAX_AGE=3600000` | Rotate every hour | + +Rotated files are named with timestamp and compressed: +``` +collector-data/ +├── my-app.log ← current (active) +├── my-app_2026-04-30T10-00-00-000Z.log.gz ← rotated + gzipped +├── my-app_2026-04-29T22-00-00-000Z.log.gz +└── _streams.json ← metadata +``` + +### Forward Targets + +Forward targets receive copies of all ingested logs. Configure via environment or GUI. + +**HTTP Target** — POST logs to another service: +```json +{"type":"http","url":"http://elasticsearch:9200/_bulk","format":"json","batchSize":200,"flushIntervalMs":5000} +``` + +**File Target** — Append to a file: +```json +{"type":"file","path":"/backup/all-logs.txt"} +``` + +**UDP Target** — Forward via UDP (e.g., to syslog): +```json +{"type":"udp","host":"syslog.internal","port":514} +``` + +**Stream Target** — Forward to another stream on the same collector: +```json +{"type":"stream","targetStream":"all-logs"} +``` +This copies all ingested lines from any stream into the `all-logs` stream. Lines are prefixed with `[fwd:source-stream]` to identify the origin. Useful for creating an aggregated "all logs" stream. + +**Console Target** — Print to stdout (for debugging): +```json +{"type":"console"} +``` + +**Multiple targets:** +```env +COLLECTOR_FORWARD_TARGETS=[{"type":"http","url":"http://elk:9200/_bulk","format":"json","batchSize":100},{"type":"file","path":"/backup/all.log"},{"type":"console"}] +``` + +--- + +## Example Configurations + +### Minimal Collector +```env +LOG_MODE=collector +PORT=8081 +``` + +### Production Collector (large scale) +```env +LOG_MODE=collector +PORT=8081 +COLLECTOR_UDP_PORT=5140 +COLLECTOR_STORAGE_DIR=/data/logs +COLLECTOR_MAX_LINES=500000 +COLLECTOR_MAX_STREAMS=200 +COLLECTOR_ROTATION_MAX_SIZE=52428800 +COLLECTOR_ROTATION_MAX_AGE=3600000 +COLLECTOR_ROTATION_COMPRESSION=zstd +COLLECTOR_FORWARD_TARGETS=[{"type":"http","url":"http://elasticsearch:9200/logs/_bulk","format":"json","batchSize":500,"flushIntervalMs":3000}] +``` + +### Collector with multiple forward targets +```env +LOG_MODE=collector +PORT=8081 +COLLECTOR_FORWARD_TARGETS=[{"type":"http","url":"http://loki:3100/loki/api/v1/push","format":"json","batchSize":100},{"type":"file","path":"/archive/all-logs.txt"},{"type":"udp","host":"siem.internal","port":514}] +``` + +### Collector with stream aggregation (self-forward) +```env +LOG_MODE=collector +PORT=8081 +COLLECTOR_FORWARD_TARGETS=[{"type":"stream","targetStream":"all-logs"},{"type":"console"}] +``` +Every log sent to any stream (e.g., `web-app`, `auth-service`) is also copied into the `all-logs` stream. Lines are prefixed with `[fwd:web-app]` etc. so you can still tell where they came from. + +### Docker Compose: Collector cluster +```yaml +services: + collector-1: + image: logviewer + ports: ["8081:8080", "5140:5140/udp"] + environment: + LOG_MODE: collector + COLLECTOR_UDP_PORT: "5140" + COLLECTOR_ROTATION_COMPRESSION: gzip + COLLECTOR_FORWARD_TARGETS: '[{"type":"http","url":"http://central:8080/collect/region-eu","format":"json"}]' + volumes: + - ./data-eu:/app/collector-data + + collector-2: + image: logviewer + ports: ["8082:8080", "5141:5140/udp"] + environment: + LOG_MODE: collector + COLLECTOR_UDP_PORT: "5140" + COLLECTOR_FORWARD_TARGETS: '[{"type":"http","url":"http://central:8080/collect/region-us","format":"json"}]' + volumes: + - ./data-us:/app/collector-data + + central: + image: logviewer + ports: ["9090:8080"] + environment: + LOG_MODE: both +``` + +--- + +## API Reference + +| Method | Path | Description | +|--------|------|-------------| +| POST | `/collect/:streamId` | Ingest plain text (one line per line) | +| POST | `/collect/:streamId/json` | Ingest JSON array | +| GET | `/collector/streams` | List all streams | +| GET | `/collector/stream/:id?tail=N` | Read stream (optional: last N lines) | +| GET | `/collector/config` | Current collector config | +| DELETE | `/collector/stream/:id` | Delete a stream | + +### Stream Auto-Creation + +Streams are created automatically when you first send logs to them. No pre-configuration needed. Just POST to `/collect/any-name-you-want` and the stream exists. + +### Stream Naming + +Stream IDs support: `a-z`, `A-Z`, `0-9`, `-`, `_`, `.` + +Examples: `my-app`, `web.server.prod`, `auth_service`, `node-1.api` diff --git a/docs/MONITOR.md b/docs/MONITOR.md new file mode 100644 index 0000000..d780b56 --- /dev/null +++ b/docs/MONITOR.md @@ -0,0 +1,377 @@ +# 🔍 Log Monitor — User Guide + +## Overview + +The Log Monitor scans log files on a schedule, matches regex patterns, and sends alerts via Telegram, Webhooks, Microsoft Teams, or Email. It supports time-based filtering, scheduled scans (daily, hourly, continuous), and automatic attachment of full results when matches exceed a threshold. + +--- + +## Starting the Monitor + +### Option 1: Environment File +```bash +cp .env.monitor .env +node dist-server/server.js +``` + +### Option 2: Inline +```bash +LOG_MODE=monitor PORT=8082 MONITOR_SCAN_INTERVAL=30000 node dist-server/server.js +``` + +### Option 3: Docker +```bash +docker run -d -p 8082:8080 \ + -e LOG_MODE=monitor \ + -e MONITOR_SCAN_INTERVAL=30000 \ + -v /var/log:/logs:ro \ + logviewer +``` + +### Option 4: Config File +```json +{ + "mode": "monitor", + "port": 8082, + "monitor": { + "enabled": true, + "scanIntervalMs": 30000, + "rules": [] + } +} +``` + +--- + +## How It Works + +``` +┌─────────────┐ ┌──────────────┐ ┌─────────────────┐ +│ Log Files │────▶│ Scan Engine │────▶│ Pattern Match │ +│ (sources) │ │ (interval) │ │ (regex) │ +└─────────────┘ └──────────────┘ └────────┬────────┘ + │ + matches found? + │ + ┌──────────────┴──────────────┐ + │ │ + ≤ maxLines > maxLines + │ │ + ┌─────▼─────┐ ┌───────▼───────┐ + │ Inline │ │ Inline (N) │ + │ in alert │ │ + .gz attach │ + └─────┬─────┘ └───────┬───────┘ + │ │ + └──────────────┬──────────────┘ + │ + ┌──────────────▼──────────────┐ + │ Send Notifications │ + │ Telegram │ Webhook │ Teams │ + └─────────────────────────────┘ +``` + +1. **Scan** — Every N seconds (configurable), the monitor reads all source files +2. **Filter** — Only files matching the time range are scanned (today, this week, etc.) +3. **Match** — Each line is tested against the configured regex patterns +4. **Alert** — If matches are found AND cooldown has expired, notifications are sent +5. **Attach** — If matches exceed `maxLinesInMessage`, full results are gzipped and attached + +--- + +## GUI Guide + +### Layout + +``` +┌─────────────────────────────────────────────────────────────┐ +│ 🔍 Log Monitor 2 active rules · 3 alerts│ +├──────────────┬──────────────────────────────────────────────┤ +│ │ │ +│ 📋 Rules │ Rule Editor / Alert Detail │ +│ ┌──────────┐│ │ +│ │●Root DB ││ [General] │ +│ │ 2 src ││ Name: Root DB Access Detection │ +│ │ 6 match ││ Enabled: Yes │ +│ ├──────────┤│ │ +│ │●Failed ││ [Sources] │ +│ │ 1 src ││ /var/log/db-audit.log │ +│ │ 4 match ││ /var/log/db-audit-*.log.gz │ +│ └──────────┘│ │ +│ │ [Patterns] │ +│ 📊 Alerts │ root.*login │ +│ ┌──────────┐│ GRANT.*PRIVILEGES │ +│ │🚨 Root DB││ DROP TABLE │ +│ │ 6 matches││ │ +│ │ 10:30:01 ││ [Schedule] │ +│ ├──────────┤│ Mode: Daily at 07:00 │ +│ │🚨 Failed ││ │ +│ │ 4 matches││ [Notifications] │ +│ │ 10:30:01 ││ [TELEGRAM] Bot: 811... Chat: 859... │ +│ └──────────┘│ [WEBHOOK] https://hooks.slack.com/... │ +│ │ │ +│ │ [💾 Save] [🧪 Test Now] [🗑 Delete] │ +└──────────────┴──────────────────────────────────────────────┘ +``` + +### Creating a Rule + +1. Click **"+ New"** in the sidebar +2. Fill in the fields: + - **Name** — descriptive name for the rule + - **Sources** — one file path per line (supports globs like `/var/log/*.log`) + - **Time Range** — which files to scan (today, week, month, last N hours, all) + - **Patterns** — one regex per line + - **Match Logic** — "any" (OR) or "all" (AND) + - **Schedule** — continuous, daily at time, or every N hours + - **Max Lines** — how many lines to include inline in notifications + - **Cooldown** — minimum time between alerts (prevents spam) +3. Add notification channels +4. Click **"💾 Save Rule"** + +### Testing a Rule + +1. Select a rule from the sidebar +2. Click **"🧪 Test Now"** +3. The rule runs immediately and shows results below the form +4. This does NOT respect cooldown — always runs + +### Testing Notifications + +1. In the Notifications section, configure a channel +2. Click **"🧪 Test Notification"** +3. A test message is sent to verify the channel works + +### Viewing Alerts + +- Alerts appear in the **"📊 Recent Alerts"** section of the sidebar +- Click an alert to see the full detail view with all matched lines +- Lines are color-coded: red for ERROR/FATAL, orange for WARN + +--- + +## Configuration Reference + +### Environment Variables + +| Variable | Default | Description | +|----------|---------|-------------| +| `LOG_MODE` | `both` | Set to `monitor` | +| `PORT` | `8080` | HTTP port | +| `MONITOR_ENABLED` | `true` | Enable/disable scanning | +| `MONITOR_SCAN_INTERVAL` | `60000` | Scan interval in ms | +| `MONITOR_STORAGE_DIR` | `./monitor-data` | Where to store state | +| `MONITOR_RULES` | `[]` | JSON array of rules (see below) | + +### Rule Structure + +```json +{ + "id": "unique-id", + "name": "Human-readable name", + "enabled": true, + "sources": ["/path/to/logs/*.log"], + "patterns": ["regex1", "regex2"], + "patternLogic": "any", + "timeRange": { "type": "week", "hours": 24 }, + "schedule": { "mode": "daily", "value": "07:00", "timezone": "Europe/Berlin" }, + "notifications": [ + { "type": "telegram", "botToken": "123:ABC", "chatId": "-100123" } + ], + "maxLinesInMessage": 20, + "cooldownMs": 300000, + "matchCount": 0, + "lastTriggered": null +} +``` + +### Time Range Options + +| Type | Description | Use Case | +|------|-------------|----------| +| `today` | Only files modified today | Daily reports | +| `week` | Files from last 7 days | Weekly audits | +| `month` | Files from last 30 days | Monthly reviews | +| `hours` | Files from last N hours | Recent activity | +| `all` | All files regardless of age | Full history scan | + +### Schedule Options + +| Mode | Value | Description | +|------|-------|-------------| +| `interval` | — | Runs every scan interval (continuous monitoring) | +| `daily` | `07:00` | Runs once per day at the specified time | +| `hourly` | `2` | Runs every N hours | + +### Notification Channels + +**Telegram:** +```json +{ "type": "telegram", "botToken": "123456:ABC-DEF...", "chatId": "8599028500" } +``` + +**Webhook (Slack, Discord, custom):** +```json +{ "type": "webhook", "url": "https://hooks.slack.com/services/T.../B.../..." } +``` + +**Microsoft Teams:** +```json +{ "type": "teams", "url": "https://outlook.office.com/webhook/..." } +``` + +**Email (SMTP):** +```json +{ "type": "email", "to": "admin@company.com", "smtpHost": "smtp.gmail.com", "smtpPort": 587, "smtpUser": "alerts@company.com", "smtpPass": "app-password" } +``` + +--- + +## Example Configurations + +### 1. Real-time Root Login Detection + +Scans every 10 seconds, alerts immediately via Telegram: +```env +LOG_MODE=monitor +PORT=8082 +MONITOR_SCAN_INTERVAL=10000 +MONITOR_RULES=[{"id":"root-login","name":"Root Login Alert","enabled":true,"sources":["/var/log/auth.log"],"patterns":["session opened for user root","su.*root","sudo.*root"],"patternLogic":"any","timeRange":{"type":"today"},"schedule":{"mode":"interval"},"notifications":[{"type":"telegram","botToken":"YOUR_BOT_TOKEN","chatId":"YOUR_CHAT_ID"}],"maxLinesInMessage":10,"cooldownMs":60000,"matchCount":0,"lastTriggered":null}] +``` + +### 2. Daily DB Audit Report at 7:00 AM + +Scans once per day, sends full report: +```env +LOG_MODE=monitor +PORT=8082 +MONITOR_SCAN_INTERVAL=60000 +MONITOR_RULES=[{"id":"db-audit","name":"Daily DB Audit","enabled":true,"sources":["/var/log/postgresql/audit.log","/var/log/mysql/audit*.log"],"patterns":["admin.*LOGIN","GRANT","DROP","ALTER.*TABLE","CREATE USER"],"patternLogic":"any","timeRange":{"type":"today"},"schedule":{"mode":"daily","value":"07:00","timezone":"Europe/Berlin"},"notifications":[{"type":"telegram","botToken":"TOKEN","chatId":"CHAT_ID"},{"type":"webhook","url":"https://hooks.slack.com/services/..."}],"maxLinesInMessage":20,"cooldownMs":86400000,"matchCount":0,"lastTriggered":null}] +``` + +### 3. Error Spike Detection (every 5 minutes) + +```env +LOG_MODE=monitor +PORT=8082 +MONITOR_SCAN_INTERVAL=30000 +MONITOR_RULES=[{"id":"error-spike","name":"Error Spike","enabled":true,"sources":["/app/logs/production.log"],"patterns":["\\bERROR\\b","\\bFATAL\\b","Exception","panic:"],"patternLogic":"any","timeRange":{"type":"hours","hours":1},"schedule":{"mode":"hourly","value":"0.083"},"notifications":[{"type":"teams","url":"https://outlook.office.com/webhook/..."}],"maxLinesInMessage":30,"cooldownMs":300000,"matchCount":0,"lastTriggered":null}] +``` + +### 4. Security: Unauthorized Access Attempts + +```env +MONITOR_RULES=[{"id":"unauth","name":"Unauthorized Access","enabled":true,"sources":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"patterns":["403 Forbidden","401 Unauthorized","\\.\\./\\.\\./","etc/passwd"," + + diff --git a/src/renderer/renderer.js b/src/renderer/renderer.js new file mode 100644 index 0000000..5445325 --- /dev/null +++ b/src/renderer/renderer.js @@ -0,0 +1,887 @@ +// ============================================ +// Log Viewer - Renderer +// ============================================ + +(function () { + 'use strict'; + + // State + const state = { + allEntries: [], + filteredEntries: [], + sources: [], + activeSource: 'ALL', + activeLevel: 'ALL', + searchQuery: '', + regexMode: false, + caseSensitive: false, + tailMode: true, + wordWrap: false, + showTimestamps: true, + showLineNumbers: true, + showSourceColumn: true, + bookmarks: new Set(), + zoomLevel: 100, + theme: 'dark', + refreshInterval: 2000, + refreshTimer: null, + isLoading: false, + contextMenu: null, + }; + + // DOM Elements + const $ = (sel) => document.querySelector(sel); + const $$ = (sel) => document.querySelectorAll(sel); + + const elements = { + logOutput: $('#log-output'), + searchInput: $('#search-input'), + searchCount: $('#search-count'), + levelFilter: $('#level-filter'), + sourceFilter: $('#source-filter'), + sourceList: $('#source-list'), + emptySources: $('#empty-sources'), + welcomeMessage: $('#welcome-message'), + statLines: $('#stat-lines'), + statFiltered: $('#stat-filtered'), + statusMessage: $('#status-message'), + statusTail: $('#status-tail'), + statusWrap: $('#status-wrap'), + statusRegex: $('#status-regex'), + statusZoom: $('#status-zoom'), + currentSourceName: $('#current-source-name'), + currentSourceInfo: $('#current-source-info'), + themeIcon: $('#theme-icon'), + sidebar: $('#sidebar'), + shortcutsModal: $('#shortcuts-modal'), + exportModal: $('#export-modal'), + gotoModal: $('#goto-modal'), + gotoInput: $('#goto-input'), + }; + + // ============================================ + // Initialization + // ============================================ + async function init() { + try { + const config = await window.logViewerAPI.getConfig(); + state.theme = config.theme || 'dark'; + state.tailMode = config.tailMode !== false; + state.refreshInterval = config.refreshInterval || 2000; + state.activeLevel = config.defaultLevel || 'ALL'; + + applyTheme(); + elements.levelFilter.value = state.activeLevel; + + await loadSources(); + if (state.sources.length > 0) { + await loadAllLogs(); + } + + setupEventListeners(); + setupIPCListeners(); + startAutoRefresh(); + updateStatusBar(); + } catch (err) { + console.error('Init error:', err); + setStatus('Error initializing: ' + err.message); + } + } + + // ============================================ + // Source Management + // ============================================ + async function loadSources() { + state.sources = await window.logViewerAPI.getSources(); + renderSourceList(); + updateSourceFilter(); + } + + function renderSourceList() { + const list = elements.sourceList; + + if (state.sources.length === 0) { + elements.emptySources.style.display = 'block'; + // Remove all source items but keep empty state + list.querySelectorAll('.source-item').forEach((el) => el.remove()); + return; + } + + elements.emptySources.style.display = 'none'; + list.querySelectorAll('.source-item').forEach((el) => el.remove()); + + for (const source of state.sources) { + const item = document.createElement('div'); + item.className = 'source-item' + (state.activeSource === source.path ? ' active' : ''); + item.setAttribute('role', 'listitem'); + item.setAttribute('tabindex', '0'); + + const icon = getSourceIcon(source.type); + const size = formatFileSize(source.size); + const modified = source.lastModified ? formatRelativeTime(new Date(source.lastModified)) : 'unknown'; + + item.innerHTML = ` + + ${icon} +
+
${source.displayName}
+
${size} · ${modified}
+
+ + `; + + item.addEventListener('click', (e) => { + if (e.target.closest('.source-remove')) return; + selectSource(source.path); + }); + + item.querySelector('.source-remove').addEventListener('click', async (e) => { + e.stopPropagation(); + await window.logViewerAPI.removeSource(source.path); + await loadSources(); + if (state.activeSource === source.path) { + state.activeSource = 'ALL'; + await loadAllLogs(); + } + }); + + item.addEventListener('contextmenu', (e) => { + e.preventDefault(); + showContextMenu(e, [ + { label: '📂 Reveal in Explorer', action: () => window.logViewerAPI.revealInExplorer(source.path) }, + { label: '🔄 Reload', action: () => loadLogForSource(source.path) }, + { separator: true }, + { label: '❌ Remove', action: async () => { + await window.logViewerAPI.removeSource(source.path); + await loadSources(); + }}, + ]); + }); + + list.appendChild(item); + } + } + + function updateSourceFilter() { + const select = elements.sourceFilter; + const currentValue = select.value; + + // Remove all options except "All Sources" + while (select.options.length > 1) { + select.remove(1); + } + + for (const source of state.sources) { + const option = document.createElement('option'); + option.value = source.path; + option.textContent = source.displayName; + select.appendChild(option); + } + + select.value = currentValue || 'ALL'; + } + + async function selectSource(sourcePath) { + state.activeSource = sourcePath; + + if (sourcePath === 'ALL') { + elements.currentSourceName.textContent = 'All Sources'; + elements.currentSourceInfo.textContent = ''; + await loadAllLogs(); + } else { + const source = state.sources.find((s) => s.path === sourcePath); + elements.currentSourceName.textContent = source ? source.displayName : sourcePath; + elements.currentSourceInfo.textContent = source ? `${formatFileSize(source.size)} · ${source.type}` : ''; + await loadLogForSource(sourcePath); + } + + elements.sourceFilter.value = sourcePath; + renderSourceList(); + } + + // ============================================ + // Log Loading + // ============================================ + async function loadAllLogs() { + if (state.isLoading) return; + state.isLoading = true; + setStatus('Loading logs...'); + + try { + state.allEntries = await window.logViewerAPI.readAllLogs(); + applyFilters(); + setStatus(`Loaded ${state.allEntries.length} lines from ${state.sources.length} source(s)`); + } catch (err) { + setStatus('Error loading logs: ' + err.message); + } finally { + state.isLoading = false; + } + } + + async function loadLogForSource(sourcePath) { + if (state.isLoading) return; + state.isLoading = true; + setStatus('Loading...'); + + try { + state.allEntries = await window.logViewerAPI.readLog(sourcePath); + applyFilters(); + setStatus(`Loaded ${state.allEntries.length} lines from ${sourcePath.split(/[/\\]/).pop()}`); + } catch (err) { + setStatus('Error: ' + err.message); + } finally { + state.isLoading = false; + } + } + + // ============================================ + // Filtering & Search + // ============================================ + function applyFilters() { + let entries = [...state.allEntries]; + + // Level filter + if (state.activeLevel !== 'ALL') { + entries = entries.filter((e) => e.level === state.activeLevel); + } + + // Source filter (when viewing all) + if (state.activeSource !== 'ALL') { + entries = entries.filter((e) => e.source === state.activeSource); + } + + // Search filter + if (state.searchQuery) { + const query = state.searchQuery; + let matcher; + + if (state.regexMode) { + try { + const flags = state.caseSensitive ? 'g' : 'gi'; + matcher = new RegExp(query, flags); + } catch { + elements.searchInput.style.borderColor = 'var(--error)'; + elements.searchCount.textContent = 'Invalid regex'; + state.filteredEntries = entries; + renderLogs(); + return; + } + } + + elements.searchInput.style.borderColor = ''; + + entries = entries.filter((e) => { + if (state.regexMode) { + matcher.lastIndex = 0; + return matcher.test(e.line); + } + const line = state.caseSensitive ? e.line : e.line.toLowerCase(); + const q = state.caseSensitive ? query : query.toLowerCase(); + return line.includes(q); + }); + + elements.searchCount.textContent = `${entries.length} match${entries.length !== 1 ? 'es' : ''}`; + } else { + elements.searchCount.textContent = ''; + elements.searchInput.style.borderColor = ''; + } + + state.filteredEntries = entries; + renderLogs(); + updateStats(); + } + + // ============================================ + // Rendering + // ============================================ + function renderLogs() { + const output = elements.logOutput; + const wasAtBottom = isScrolledToBottom(); + + // Hide welcome message + if (elements.welcomeMessage) { + elements.welcomeMessage.style.display = state.allEntries.length > 0 ? 'none' : 'flex'; + } + + // Use document fragment for performance + const fragment = document.createDocumentFragment(); + + for (const entry of state.filteredEntries) { + const line = createLogLine(entry); + fragment.appendChild(line); + } + + // Clear and append + const existingLines = output.querySelectorAll('.log-line'); + existingLines.forEach((el) => el.remove()); + output.appendChild(fragment); + + // Auto-scroll if tail mode + if (state.tailMode && wasAtBottom) { + scrollToBottom(); + } + } + + function createLogLine(entry) { + const div = document.createElement('div'); + div.className = 'log-line'; + div.dataset.lineNumber = entry.lineNumber; + div.dataset.source = entry.source; + + // Level-based styling + if (entry.level) { + const levelLower = entry.level.toLowerCase(); + if (levelLower === 'error' || levelLower === 'fatal') { + div.classList.add('line-error'); + } else if (levelLower === 'fatal') { + div.classList.add('line-fatal'); + } else if (levelLower === 'warn' || levelLower === 'warning') { + div.classList.add('line-warn'); + } + } + + // Bookmark + if (state.bookmarks.has(`${entry.source}:${entry.lineNumber}`)) { + div.classList.add('bookmarked'); + } + + // Line number + if (state.showLineNumbers) { + const lineNum = document.createElement('span'); + lineNum.className = 'log-line-number'; + lineNum.textContent = entry.lineNumber; + lineNum.title = 'Click to bookmark'; + lineNum.addEventListener('click', () => toggleBookmark(entry)); + div.appendChild(lineNum); + } + + // Source column (when viewing all sources) + if (state.showSourceColumn && state.activeSource === 'ALL') { + const sourceCol = document.createElement('span'); + sourceCol.className = 'log-line-source'; + sourceCol.textContent = entry.source.split(/[/\\]/).pop(); + sourceCol.title = entry.source; + div.appendChild(sourceCol); + } + + // Timestamp + if (state.showTimestamps && entry.timestamp) { + const ts = document.createElement('span'); + ts.className = 'log-line-timestamp'; + ts.textContent = entry.timestamp; + div.appendChild(ts); + } + + // Level badge + if (entry.level) { + const level = document.createElement('span'); + level.className = `log-line-level level-${entry.level.toLowerCase()}`; + level.textContent = entry.level; + div.appendChild(level); + } + + // Content + const content = document.createElement('span'); + content.className = 'log-line-content'; + + if (state.searchQuery) { + content.innerHTML = highlightSearch(escapeHtml(entry.line)); + } else { + content.textContent = entry.line; + } + + div.appendChild(content); + + // Context menu + div.addEventListener('contextmenu', (e) => { + e.preventDefault(); + showContextMenu(e, [ + { label: '📋 Copy Line', action: () => navigator.clipboard.writeText(entry.line) }, + { label: '🔖 Toggle Bookmark', action: () => toggleBookmark(entry) }, + { separator: true }, + { label: '🔍 Filter by this level', action: () => { + if (entry.level) { + state.activeLevel = entry.level; + elements.levelFilter.value = entry.level; + applyFilters(); + } + }}, + { label: '📂 Filter by this source', action: () => selectSource(entry.source) }, + { separator: true }, + { label: '📋 Copy all visible', action: () => { + const text = state.filteredEntries.map((e) => e.line).join('\n'); + navigator.clipboard.writeText(text); + }}, + ]); + }); + + return div; + } + + function highlightSearch(htmlText) { + if (!state.searchQuery) return htmlText; + + try { + let pattern; + if (state.regexMode) { + pattern = state.searchQuery; + } else { + pattern = state.searchQuery.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + } + + const flags = state.caseSensitive ? 'g' : 'gi'; + const regex = new RegExp(`(${pattern})`, flags); + return htmlText.replace(regex, '$1'); + } catch { + return htmlText; + } + } + + // ============================================ + // Bookmarks + // ============================================ + function toggleBookmark(entry) { + const key = `${entry.source}:${entry.lineNumber}`; + if (state.bookmarks.has(key)) { + state.bookmarks.delete(key); + } else { + state.bookmarks.add(key); + } + renderLogs(); + } + + function clearBookmarks() { + state.bookmarks.clear(); + renderLogs(); + } + + // ============================================ + // Context Menu + // ============================================ + function showContextMenu(event, items) { + hideContextMenu(); + + const menu = document.createElement('div'); + menu.className = 'context-menu'; + + for (const item of items) { + if (item.separator) { + const sep = document.createElement('div'); + sep.className = 'context-menu-separator'; + menu.appendChild(sep); + } else { + const menuItem = document.createElement('div'); + menuItem.className = 'context-menu-item'; + menuItem.textContent = item.label; + menuItem.addEventListener('click', () => { + item.action(); + hideContextMenu(); + }); + menu.appendChild(menuItem); + } + } + + document.body.appendChild(menu); + + // Position + const x = Math.min(event.clientX, window.innerWidth - menu.offsetWidth - 10); + const y = Math.min(event.clientY, window.innerHeight - menu.offsetHeight - 10); + menu.style.left = x + 'px'; + menu.style.top = y + 'px'; + + state.contextMenu = menu; + + // Close on click outside + setTimeout(() => { + document.addEventListener('click', hideContextMenu, { once: true }); + }, 0); + } + + function hideContextMenu() { + if (state.contextMenu) { + state.contextMenu.remove(); + state.contextMenu = null; + } + } + + // ============================================ + // Auto Refresh + // ============================================ + function startAutoRefresh() { + if (state.refreshTimer) clearInterval(state.refreshTimer); + state.refreshTimer = setInterval(async () => { + if (state.tailMode && !state.isLoading) { + if (state.activeSource === 'ALL') { + await loadAllLogs(); + } else { + await loadLogForSource(state.activeSource); + } + } + }, state.refreshInterval); + } + + // ============================================ + // Theme + // ============================================ + function toggleTheme() { + state.theme = state.theme === 'dark' ? 'light' : 'dark'; + applyTheme(); + } + + function applyTheme() { + document.body.className = `theme-${state.theme}`; + elements.themeIcon.textContent = state.theme === 'dark' ? '🌙' : '☀️'; + } + + // ============================================ + // Zoom + // ============================================ + function zoomIn() { + state.zoomLevel = Math.min(state.zoomLevel + 10, 200); + applyZoom(); + } + + function zoomOut() { + state.zoomLevel = Math.max(state.zoomLevel - 10, 50); + applyZoom(); + } + + function zoomReset() { + state.zoomLevel = 100; + applyZoom(); + } + + function applyZoom() { + elements.logOutput.style.fontSize = (12 * state.zoomLevel / 100) + 'px'; + elements.statusZoom.textContent = state.zoomLevel + '%'; + } + + // ============================================ + // Helpers + // ============================================ + function escapeHtml(text) { + const div = document.createElement('div'); + div.textContent = text; + return div.innerHTML; + } + + function isScrolledToBottom() { + const el = elements.logOutput; + return el.scrollHeight - el.scrollTop - el.clientHeight < 50; + } + + function scrollToBottom() { + elements.logOutput.scrollTop = elements.logOutput.scrollHeight; + } + + function scrollToTop() { + elements.logOutput.scrollTop = 0; + } + + function setStatus(message) { + elements.statusMessage.textContent = message; + } + + function updateStats() { + elements.statLines.textContent = `${state.allEntries.length} lines`; + elements.statFiltered.textContent = `${state.filteredEntries.length} shown`; + } + + function updateStatusBar() { + elements.statusTail.classList.toggle('active', state.tailMode); + elements.statusWrap.classList.toggle('active', state.wordWrap); + elements.statusRegex.classList.toggle('active', state.regexMode); + } + + function getSourceIcon(type) { + switch (type) { + case 'gzip': return '📦'; + case 'bzip2': return '📦'; + case 'xz': return '📦'; + case 'zstd': return '📦'; + default: return '📄'; + } + } + + function formatFileSize(bytes) { + if (bytes === 0) return '0 B'; + const units = ['B', 'KB', 'MB', 'GB']; + const i = Math.floor(Math.log(bytes) / Math.log(1024)); + return (bytes / Math.pow(1024, i)).toFixed(i > 0 ? 1 : 0) + ' ' + units[i]; + } + + function formatRelativeTime(date) { + const now = new Date(); + const diff = now - date; + const seconds = Math.floor(diff / 1000); + const minutes = Math.floor(seconds / 60); + const hours = Math.floor(minutes / 60); + const days = Math.floor(hours / 24); + + if (seconds < 60) return 'just now'; + if (minutes < 60) return `${minutes}m ago`; + if (hours < 24) return `${hours}h ago`; + return `${days}d ago`; + } + + function showModal(modal) { + modal.hidden = false; + modal.querySelector('input, button')?.focus(); + } + + function hideModal(modal) { + modal.hidden = true; + } + + // ============================================ + // Event Listeners + // ============================================ + function setupEventListeners() { + // Toolbar buttons + $('#btn-add-source').addEventListener('click', async () => { + const sources = await window.logViewerAPI.openFileDialog(); + if (sources) { + await loadSources(); + await loadAllLogs(); + } + }); + + $('#btn-reload').addEventListener('click', async () => { + await loadSources(); + if (state.activeSource === 'ALL') { + await loadAllLogs(); + } else { + await loadLogForSource(state.activeSource); + } + }); + + $('#btn-tail').addEventListener('click', () => { + state.tailMode = !state.tailMode; + $('#btn-tail').classList.toggle('active', state.tailMode); + $('#btn-tail').setAttribute('aria-pressed', state.tailMode); + updateStatusBar(); + if (state.tailMode) scrollToBottom(); + }); + + $('#btn-wrap').addEventListener('click', () => { + state.wordWrap = !state.wordWrap; + $('#btn-wrap').classList.toggle('active', state.wordWrap); + $('#btn-wrap').setAttribute('aria-pressed', state.wordWrap); + elements.logOutput.classList.toggle('word-wrap', state.wordWrap); + updateStatusBar(); + }); + + $('#btn-timestamps').addEventListener('click', () => { + state.showTimestamps = !state.showTimestamps; + $('#btn-timestamps').classList.toggle('active', state.showTimestamps); + $('#btn-timestamps').setAttribute('aria-pressed', state.showTimestamps); + renderLogs(); + }); + + // Search + elements.searchInput.addEventListener('input', () => { + state.searchQuery = elements.searchInput.value; + applyFilters(); + }); + + $('#btn-regex-toggle').addEventListener('click', () => { + state.regexMode = !state.regexMode; + $('#btn-regex-toggle').classList.toggle('active', state.regexMode); + $('#btn-regex-toggle').setAttribute('aria-pressed', state.regexMode); + updateStatusBar(); + if (state.searchQuery) applyFilters(); + }); + + $('#btn-case-toggle').addEventListener('click', () => { + state.caseSensitive = !state.caseSensitive; + $('#btn-case-toggle').classList.toggle('active', state.caseSensitive); + $('#btn-case-toggle').setAttribute('aria-pressed', state.caseSensitive); + if (state.searchQuery) applyFilters(); + }); + + // Filters + elements.levelFilter.addEventListener('change', () => { + state.activeLevel = elements.levelFilter.value; + applyFilters(); + }); + + elements.sourceFilter.addEventListener('change', () => { + selectSource(elements.sourceFilter.value); + }); + + // Theme + $('#btn-theme').addEventListener('click', toggleTheme); + + // Export + $('#btn-export').addEventListener('click', () => showModal(elements.exportModal)); + $('#close-export').addEventListener('click', () => hideModal(elements.exportModal)); + + $('#export-txt').addEventListener('click', async () => { + const filteredOnly = $('#export-filtered-only').checked; + const entries = filteredOnly ? state.filteredEntries : state.allEntries; + const lines = entries.map((e) => e.line); + await window.logViewerAPI.exportLogs(lines, 'txt'); + hideModal(elements.exportModal); + }); + + $('#export-json').addEventListener('click', async () => { + const filteredOnly = $('#export-filtered-only').checked; + const entries = filteredOnly ? state.filteredEntries : state.allEntries; + const lines = entries.map((e) => e.line); + await window.logViewerAPI.exportLogs(lines, 'json'); + hideModal(elements.exportModal); + }); + + // Sidebar + $('#btn-toggle-sidebar').addEventListener('click', () => { + elements.sidebar.classList.toggle('collapsed'); + const btn = $('#btn-toggle-sidebar'); + btn.textContent = elements.sidebar.classList.contains('collapsed') ? '▶' : '◀'; + }); + + // Scroll buttons + $('#btn-scroll-top').addEventListener('click', scrollToTop); + $('#btn-scroll-bottom').addEventListener('click', scrollToBottom); + $('#btn-clear-bookmarks').addEventListener('click', clearBookmarks); + + // Shortcuts modal + $('#close-shortcuts').addEventListener('click', () => hideModal(elements.shortcutsModal)); + + // Go to line + $('#close-goto').addEventListener('click', () => hideModal(elements.gotoModal)); + $('#goto-btn').addEventListener('click', () => { + const lineNum = parseInt(elements.gotoInput.value, 10); + if (lineNum > 0) { + const target = elements.logOutput.querySelector(`[data-line-number="${lineNum}"]`); + if (target) { + target.scrollIntoView({ behavior: 'smooth', block: 'center' }); + target.style.background = 'var(--highlight-bg)'; + setTimeout(() => { target.style.background = ''; }, 2000); + } + hideModal(elements.gotoModal); + } + }); + + elements.gotoInput.addEventListener('keydown', (e) => { + if (e.key === 'Enter') $('#goto-btn').click(); + }); + + // Modal overlay click to close + $$('.modal-overlay').forEach((overlay) => { + overlay.addEventListener('click', (e) => { + if (e.target === overlay) hideModal(overlay); + }); + }); + + // Keyboard shortcuts + document.addEventListener('keydown', (e) => { + // Escape - close modals / clear search + if (e.key === 'Escape') { + $$('.modal-overlay').forEach((m) => hideModal(m)); + if (state.searchQuery) { + state.searchQuery = ''; + elements.searchInput.value = ''; + applyFilters(); + } + hideContextMenu(); + return; + } + + // Ctrl+G - Go to line + if (e.ctrlKey && e.key === 'g') { + e.preventDefault(); + showModal(elements.gotoModal); + elements.gotoInput.value = ''; + elements.gotoInput.focus(); + return; + } + + // Ctrl+B - Bookmark current + if (e.ctrlKey && e.key === 'b') { + e.preventDefault(); + // Bookmark is handled via line number click + return; + } + + // Home/End for scroll + if (e.key === 'Home' && !e.target.matches('input')) { + e.preventDefault(); + scrollToTop(); + } + if (e.key === 'End' && !e.target.matches('input')) { + e.preventDefault(); + scrollToBottom(); + } + }); + + // Disable tail mode on manual scroll up + elements.logOutput.addEventListener('scroll', () => { + if (!isScrolledToBottom() && state.tailMode) { + // Don't disable tail mode, just note we're not at bottom + } + }); + } + + // ============================================ + // IPC Listeners (from main process) + // ============================================ + function setupIPCListeners() { + window.logViewerAPI.onSourcesUpdated(async (sources) => { + state.sources = sources; + renderSourceList(); + updateSourceFilter(); + await loadAllLogs(); + }); + + window.logViewerAPI.onReloadSources(async () => { + await loadSources(); + if (state.activeSource === 'ALL') { + await loadAllLogs(); + } else { + await loadLogForSource(state.activeSource); + } + }); + + window.logViewerAPI.onToggleSearch(() => { + elements.searchInput.focus(); + elements.searchInput.select(); + }); + + window.logViewerAPI.onToggleRegexSearch(() => { + state.regexMode = true; + $('#btn-regex-toggle').classList.add('active'); + updateStatusBar(); + elements.searchInput.focus(); + elements.searchInput.select(); + }); + + window.logViewerAPI.onToggleTail(() => { + state.tailMode = !state.tailMode; + $('#btn-tail').classList.toggle('active', state.tailMode); + updateStatusBar(); + if (state.tailMode) scrollToBottom(); + }); + + window.logViewerAPI.onToggleWrap(() => { + state.wordWrap = !state.wordWrap; + $('#btn-wrap').classList.toggle('active', state.wordWrap); + elements.logOutput.classList.toggle('word-wrap', state.wordWrap); + updateStatusBar(); + }); + + window.logViewerAPI.onToggleTheme(toggleTheme); + + window.logViewerAPI.onZoomIn(zoomIn); + window.logViewerAPI.onZoomOut(zoomOut); + window.logViewerAPI.onZoomReset(zoomReset); + + window.logViewerAPI.onShowShortcuts(() => { + showModal(elements.shortcutsModal); + }); + } + + // ============================================ + // Start + // ============================================ + init(); +})(); diff --git a/src/renderer/styles.css b/src/renderer/styles.css new file mode 100644 index 0000000..789d5a4 --- /dev/null +++ b/src/renderer/styles.css @@ -0,0 +1,963 @@ +/* ============================================ + Log Viewer - Styles + ============================================ */ + +:root { + /* Dark Theme (default) */ + --bg-primary: #1e1e2e; + --bg-secondary: #181825; + --bg-tertiary: #313244; + --bg-hover: #45475a; + --bg-active: #585b70; + --text-primary: #cdd6f4; + --text-secondary: #a6adc8; + --text-muted: #6c7086; + --border-color: #45475a; + --accent: #89b4fa; + --accent-hover: #74c7ec; + --error: #f38ba8; + --warn: #fab387; + --info: #89b4fa; + --debug: #a6adc8; + --fatal: #f38ba8; + --trace: #6c7086; + --success: #a6e3a1; + --highlight-bg: #f9e2af33; + --highlight-border: #f9e2af; + --bookmark-color: #f9e2af; + --scrollbar-bg: #313244; + --scrollbar-thumb: #585b70; + --shadow: 0 2px 8px rgba(0, 0, 0, 0.3); + --font-mono: 'Cascadia Code', 'JetBrains Mono', 'Fira Code', 'Consolas', monospace; + --font-ui: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; +} + +.theme-light { + --bg-primary: #eff1f5; + --bg-secondary: #e6e9ef; + --bg-tertiary: #ccd0da; + --bg-hover: #bcc0cc; + --bg-active: #acb0be; + --text-primary: #4c4f69; + --text-secondary: #5c5f77; + --text-muted: #8c8fa1; + --border-color: #ccd0da; + --accent: #1e66f5; + --accent-hover: #2a6ef5; + --error: #d20f39; + --warn: #df8e1d; + --info: #1e66f5; + --debug: #8c8fa1; + --fatal: #d20f39; + --trace: #8c8fa1; + --success: #40a02b; + --highlight-bg: #df8e1d33; + --highlight-border: #df8e1d; + --bookmark-color: #df8e1d; + --scrollbar-bg: #ccd0da; + --scrollbar-thumb: #acb0be; + --shadow: 0 2px 8px rgba(0, 0, 0, 0.1); +} + +/* ============================================ + Reset & Base + ============================================ */ +*, *::before, *::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html, body { + height: 100%; + overflow: hidden; +} + +body { + font-family: var(--font-ui); + font-size: 13px; + color: var(--text-primary); + background: var(--bg-primary); + display: flex; + flex-direction: column; + transition: background-color 0.2s, color 0.2s; +} + +/* ============================================ + Scrollbar + ============================================ */ +::-webkit-scrollbar { + width: 10px; + height: 10px; +} + +::-webkit-scrollbar-track { + background: var(--scrollbar-bg); +} + +::-webkit-scrollbar-thumb { + background: var(--scrollbar-thumb); + border-radius: 5px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--bg-active); +} + +/* ============================================ + Toolbar + ============================================ */ +.toolbar { + display: flex; + align-items: center; + justify-content: space-between; + padding: 6px 12px; + background: var(--bg-secondary); + border-bottom: 1px solid var(--border-color); + gap: 12px; + flex-shrink: 0; + -webkit-app-region: drag; + user-select: none; +} + +.toolbar-left, .toolbar-center, .toolbar-right { + display: flex; + align-items: center; + gap: 6px; + -webkit-app-region: no-drag; +} + +.toolbar-center { + flex: 1; + max-width: 500px; +} + +.toolbar-btn { + display: flex; + align-items: center; + gap: 4px; + padding: 5px 10px; + background: var(--bg-tertiary); + color: var(--text-primary); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: pointer; + font-size: 12px; + font-family: var(--font-ui); + transition: all 0.15s; + white-space: nowrap; +} + +.toolbar-btn:hover { + background: var(--bg-hover); +} + +.toolbar-btn:active { + background: var(--bg-active); +} + +.toolbar-btn.active { + background: var(--accent); + color: #1e1e2e; + border-color: var(--accent); +} + +.toolbar-separator { + width: 1px; + height: 24px; + background: var(--border-color); + margin: 0 4px; +} + +.toolbar-select { + padding: 5px 8px; + background: var(--bg-tertiary); + color: var(--text-primary); + border: 1px solid var(--border-color); + border-radius: 4px; + font-size: 12px; + font-family: var(--font-ui); + cursor: pointer; + max-width: 160px; +} + +.toolbar-select:focus { + outline: 2px solid var(--accent); + outline-offset: -1px; +} + +/* ============================================ + Search Box + ============================================ */ +.search-box { + display: flex; + align-items: center; + background: var(--bg-tertiary); + border: 1px solid var(--border-color); + border-radius: 4px; + overflow: hidden; + width: 100%; + transition: border-color 0.15s; +} + +.search-box:focus-within { + border-color: var(--accent); +} + +#search-input { + flex: 1; + padding: 5px 10px; + background: transparent; + color: var(--text-primary); + border: none; + font-size: 12px; + font-family: var(--font-ui); + outline: none; + min-width: 0; +} + +#search-input::placeholder { + color: var(--text-muted); +} + +.search-toggle { + padding: 4px 8px; + background: transparent; + color: var(--text-muted); + border: none; + border-left: 1px solid var(--border-color); + cursor: pointer; + font-size: 11px; + font-family: var(--font-mono); + font-weight: bold; + transition: all 0.15s; +} + +.search-toggle:hover { + color: var(--text-primary); + background: var(--bg-hover); +} + +.search-toggle.active { + color: var(--accent); + background: var(--bg-hover); +} + +.search-count { + padding: 0 8px; + font-size: 11px; + color: var(--text-muted); + white-space: nowrap; +} + +/* ============================================ + Main Content + ============================================ */ +.main-content { + display: flex; + flex: 1; + overflow: hidden; +} + +/* ============================================ + Sidebar + ============================================ */ +.sidebar { + width: 260px; + min-width: 200px; + background: var(--bg-secondary); + border-right: 1px solid var(--border-color); + display: flex; + flex-direction: column; + transition: width 0.2s, min-width 0.2s; + flex-shrink: 0; +} + +.sidebar.collapsed { + width: 0; + min-width: 0; + overflow: hidden; + border-right: none; +} + +.sidebar-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 10px 12px; + border-bottom: 1px solid var(--border-color); +} + +.sidebar-header h2 { + font-size: 13px; + font-weight: 600; + color: var(--text-secondary); + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.sidebar-toggle { + background: none; + border: none; + color: var(--text-muted); + cursor: pointer; + font-size: 12px; + padding: 2px 6px; + border-radius: 3px; + transition: all 0.15s; +} + +.sidebar-toggle:hover { + background: var(--bg-hover); + color: var(--text-primary); +} + +.source-list { + flex: 1; + overflow-y: auto; + padding: 6px; +} + +.source-item { + display: flex; + align-items: center; + padding: 8px 10px; + border-radius: 4px; + cursor: pointer; + transition: background 0.15s; + gap: 8px; + margin-bottom: 2px; +} + +.source-item:hover { + background: var(--bg-hover); +} + +.source-item.active { + background: var(--bg-tertiary); + border-left: 3px solid var(--accent); + padding-left: 7px; +} + +.source-item .source-icon { + font-size: 14px; + flex-shrink: 0; +} + +.source-item .source-details { + flex: 1; + min-width: 0; +} + +.source-item .source-name { + font-size: 12px; + font-weight: 500; + color: var(--text-primary); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.source-item .source-meta { + font-size: 10px; + color: var(--text-muted); + margin-top: 2px; +} + +.source-item .source-remove { + opacity: 0; + background: none; + border: none; + color: var(--text-muted); + cursor: pointer; + font-size: 14px; + padding: 2px 4px; + border-radius: 3px; + transition: all 0.15s; +} + +.source-item:hover .source-remove { + opacity: 1; +} + +.source-item .source-remove:hover { + color: var(--error); + background: var(--bg-hover); +} + +.source-item .source-status { + width: 8px; + height: 8px; + border-radius: 50%; + flex-shrink: 0; +} + +.source-item .source-status.online { + background: var(--success); +} + +.source-item .source-status.offline { + background: var(--error); +} + +.empty-state { + padding: 20px; + text-align: center; + color: var(--text-muted); + font-size: 12px; + line-height: 1.6; +} + +.empty-state code { + background: var(--bg-tertiary); + padding: 2px 6px; + border-radius: 3px; + font-family: var(--font-mono); + font-size: 11px; +} + +.sidebar-footer { + padding: 8px 12px; + border-top: 1px solid var(--border-color); +} + +.stats { + display: flex; + justify-content: space-between; + font-size: 11px; + color: var(--text-muted); +} + +/* ============================================ + Log Container + ============================================ */ +.log-container { + flex: 1; + display: flex; + flex-direction: column; + overflow: hidden; +} + +.log-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 6px 12px; + background: var(--bg-secondary); + border-bottom: 1px solid var(--border-color); + flex-shrink: 0; +} + +.log-header-info { + display: flex; + align-items: center; + gap: 10px; +} + +#current-source-name { + font-weight: 600; + font-size: 13px; +} + +.source-info { + font-size: 11px; + color: var(--text-muted); +} + +.log-header-actions { + display: flex; + gap: 6px; +} + +.small-btn { + padding: 3px 8px; + background: var(--bg-tertiary); + color: var(--text-secondary); + border: 1px solid var(--border-color); + border-radius: 3px; + cursor: pointer; + font-size: 11px; + font-family: var(--font-ui); + transition: all 0.15s; +} + +.small-btn:hover { + background: var(--bg-hover); + color: var(--text-primary); +} + +/* ============================================ + Log Output + ============================================ */ +.log-output { + flex: 1; + overflow-y: auto; + overflow-x: auto; + padding: 0; + font-family: var(--font-mono); + font-size: 12px; + line-height: 1.6; + background: var(--bg-primary); + outline: none; +} + +.log-output.word-wrap { + overflow-x: hidden; +} + +.log-output.word-wrap .log-line-content { + white-space: pre-wrap; + word-break: break-all; +} + +.log-line { + display: flex; + padding: 0 12px; + min-height: 20px; + border-bottom: 1px solid transparent; + transition: background 0.1s; +} + +.log-line:hover { + background: var(--bg-tertiary); +} + +.log-line.bookmarked { + background: var(--highlight-bg); + border-left: 3px solid var(--bookmark-color); +} + +.log-line.search-match { + background: rgba(137, 180, 250, 0.1); +} + +.log-line.search-current { + background: rgba(137, 180, 250, 0.25); + border-left: 3px solid var(--accent); +} + +.log-line-number { + min-width: 50px; + padding-right: 12px; + text-align: right; + color: var(--text-muted); + user-select: none; + flex-shrink: 0; + cursor: pointer; + font-size: 11px; + line-height: 20px; +} + +.log-line-number:hover { + color: var(--accent); +} + +.log-line-source { + min-width: 80px; + max-width: 120px; + padding-right: 8px; + color: var(--text-muted); + font-size: 10px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex-shrink: 0; + line-height: 20px; +} + +.log-line-timestamp { + min-width: 160px; + padding-right: 8px; + color: var(--text-secondary); + font-size: 11px; + flex-shrink: 0; + line-height: 20px; +} + +.log-line-level { + min-width: 60px; + padding-right: 8px; + font-weight: 600; + font-size: 11px; + flex-shrink: 0; + line-height: 20px; +} + +.log-line-level.level-error, +.log-line-level.level-fatal { + color: var(--error); +} + +.log-line-level.level-warn { + color: var(--warn); +} + +.log-line-level.level-info { + color: var(--info); +} + +.log-line-level.level-debug { + color: var(--debug); +} + +.log-line-level.level-trace { + color: var(--trace); +} + +.log-line-content { + flex: 1; + white-space: pre; + min-width: 0; + line-height: 20px; +} + +.log-line-content .highlight { + background: var(--highlight-bg); + border-bottom: 1px solid var(--highlight-border); + border-radius: 2px; + padding: 0 1px; +} + +/* Level-based line coloring */ +.log-line.line-error { + color: var(--error); +} + +.log-line.line-fatal { + color: var(--fatal); + font-weight: 600; +} + +.log-line.line-warn { + color: var(--warn); +} + +/* ============================================ + Welcome Message + ============================================ */ +.welcome-message { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 100%; + color: var(--text-muted); + text-align: center; + padding: 40px; +} + +.welcome-message h2 { + font-size: 20px; + color: var(--text-secondary); + margin-bottom: 16px; +} + +.welcome-message p { + margin-bottom: 8px; +} + +.welcome-message ul { + list-style: none; + margin: 12px 0; +} + +.welcome-message li { + padding: 4px 0; +} + +.welcome-message code { + background: var(--bg-tertiary); + padding: 2px 6px; + border-radius: 3px; + font-family: var(--font-mono); + font-size: 12px; +} + +.shortcut-hint { + margin-top: 20px; + padding: 12px 20px; + background: var(--bg-tertiary); + border-radius: 6px; +} + +kbd { + display: inline-block; + padding: 2px 6px; + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: 3px; + font-family: var(--font-mono); + font-size: 11px; + box-shadow: 0 1px 0 var(--border-color); +} + +/* ============================================ + Status Bar + ============================================ */ +.statusbar { + display: flex; + align-items: center; + justify-content: space-between; + padding: 3px 12px; + background: var(--bg-secondary); + border-top: 1px solid var(--border-color); + font-size: 11px; + color: var(--text-muted); + flex-shrink: 0; +} + +.statusbar-left, .statusbar-right { + display: flex; + align-items: center; + gap: 12px; +} + +.status-indicator { + padding: 1px 6px; + border-radius: 3px; + font-size: 10px; + font-weight: 600; + text-transform: uppercase; + opacity: 0.4; + transition: opacity 0.15s; +} + +.status-indicator.active { + opacity: 1; + color: var(--accent); +} + +/* ============================================ + Modals + ============================================ */ +.modal-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} + +.modal-overlay[hidden] { + display: none; +} + +.modal { + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: 8px; + box-shadow: var(--shadow); + min-width: 400px; + max-width: 600px; + max-height: 80vh; + overflow-y: auto; +} + +.modal-small { + min-width: 300px; + max-width: 400px; +} + +.modal-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 20px; + border-bottom: 1px solid var(--border-color); +} + +.modal-header h2 { + font-size: 16px; + font-weight: 600; +} + +.modal-close { + background: none; + border: none; + color: var(--text-muted); + font-size: 20px; + cursor: pointer; + padding: 4px 8px; + border-radius: 4px; + transition: all 0.15s; +} + +.modal-close:hover { + background: var(--bg-hover); + color: var(--text-primary); +} + +.modal-body { + padding: 20px; +} + +.shortcut-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 20px; +} + +.shortcut-group h3 { + font-size: 13px; + font-weight: 600; + color: var(--text-secondary); + margin-bottom: 8px; + text-transform: uppercase; + letter-spacing: 0.5px; +} + +.shortcut-item { + display: flex; + align-items: center; + justify-content: space-between; + padding: 4px 0; + font-size: 12px; +} + +.shortcut-item kbd { + margin-right: 12px; +} + +.export-options { + display: flex; + gap: 10px; + margin: 16px 0; +} + +.export-btn { + flex: 1; + padding: 10px; + background: var(--bg-tertiary); + color: var(--text-primary); + border: 1px solid var(--border-color); + border-radius: 6px; + cursor: pointer; + font-size: 13px; + font-family: var(--font-ui); + transition: all 0.15s; +} + +.export-btn:hover { + background: var(--accent); + color: #1e1e2e; + border-color: var(--accent); +} + +.checkbox-label { + display: flex; + align-items: center; + gap: 8px; + font-size: 12px; + color: var(--text-secondary); + cursor: pointer; +} + +.primary-btn { + padding: 6px 16px; + background: var(--accent); + color: #1e1e2e; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 13px; + font-family: var(--font-ui); + font-weight: 600; + transition: all 0.15s; +} + +.primary-btn:hover { + background: var(--accent-hover); +} + +#goto-input { + width: 100%; + padding: 8px 12px; + background: var(--bg-tertiary); + color: var(--text-primary); + border: 1px solid var(--border-color); + border-radius: 4px; + font-size: 14px; + font-family: var(--font-mono); + margin-bottom: 12px; + outline: none; +} + +#goto-input:focus { + border-color: var(--accent); +} + +/* ============================================ + Loading & Animations + ============================================ */ +.loading-spinner { + display: inline-block; + width: 16px; + height: 16px; + border: 2px solid var(--border-color); + border-top-color: var(--accent); + border-radius: 50%; + animation: spin 0.6s linear infinite; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +/* ============================================ + Context Menu + ============================================ */ +.context-menu { + position: fixed; + background: var(--bg-secondary); + border: 1px solid var(--border-color); + border-radius: 6px; + box-shadow: var(--shadow); + padding: 4px; + z-index: 2000; + min-width: 180px; +} + +.context-menu-item { + display: flex; + align-items: center; + gap: 8px; + padding: 6px 12px; + color: var(--text-primary); + font-size: 12px; + cursor: pointer; + border-radius: 4px; + transition: background 0.1s; +} + +.context-menu-item:hover { + background: var(--bg-hover); +} + +.context-menu-separator { + height: 1px; + background: var(--border-color); + margin: 4px 0; +} + +/* ============================================ + Responsive + ============================================ */ +@media (max-width: 900px) { + .sidebar { + width: 200px; + min-width: 160px; + } + + .toolbar-center { + max-width: 300px; + } + + .shortcut-grid { + grid-template-columns: 1fr; + } +} diff --git a/src/server/collector.ts b/src/server/collector.ts new file mode 100644 index 0000000..f59d94c --- /dev/null +++ b/src/server/collector.ts @@ -0,0 +1,508 @@ +import * as http from 'http'; +import * as dgram from 'dgram'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as zlib from 'zlib'; + +export interface RotationConfig { + maxSizeBytes: number; // Rotate after N bytes (0 = disabled) + maxAgeMs: number; // Rotate after N ms (0 = disabled) + compression: 'none' | 'gzip' | 'bzip2' | 'xz' | 'zstd'; + fileExtension: string; // .log, .txt, etc. +} + +export interface ForwardTarget { + type: 'http' | 'file' | 'udp' | 'console' | 'stream'; + url?: string; // For http targets + path?: string; // For file targets + host?: string; // For udp targets + port?: number; // For udp targets + targetStream?: string; // For stream targets (self-forward to another stream) + format?: 'json' | 'text'; // Output format + batchSize?: number; // Lines to batch before sending + flushIntervalMs?: number; // Max time before flushing +} + +export interface LogStream { + id: string; + name: string; + description?: string; + createdAt: string; + lineCount: number; + lastReceived: string | null; + currentFileSize: number; +} + +export interface CollectorConfig { + storageDir: string; + maxLinesPerStream: number; + maxStreams: number; + udpPort: number; + udpEnabled: boolean; + rotation: RotationConfig; + forwardTargets: ForwardTarget[]; + persistToDisk: boolean; +} + +export class LogCollector { + private config: CollectorConfig; + private streams: Map = new Map(); + private buffers: Map = new Map(); + private fileSizes: Map = new Map(); + private fileCreatedAt: Map = new Map(); + private rotationTimer: NodeJS.Timeout | null = null; + private udpServer: dgram.Socket | null = null; + private forwardBuffers: Map = new Map(); + private forwardTimers: Map = new Map(); + + constructor(config: Partial = {}) { + this.config = { + storageDir: config.storageDir || path.join(process.cwd(), 'collector-data'), + maxLinesPerStream: config.maxLinesPerStream || 100000, + maxStreams: config.maxStreams || 50, + udpPort: config.udpPort || 5140, + udpEnabled: config.udpEnabled !== false, + rotation: config.rotation || { + maxSizeBytes: 5 * 1024 * 1024, // 5MB default + maxAgeMs: 10 * 60 * 1000, // 10 min default + compression: 'gzip', + fileExtension: '.log', + }, + forwardTargets: config.forwardTargets || [], + persistToDisk: config.persistToDisk !== false, + }; + + if (!fs.existsSync(this.config.storageDir)) { + fs.mkdirSync(this.config.storageDir, { recursive: true }); + } + + this.loadExistingStreams(); + + // Start rotation check timer + if (this.config.rotation.maxAgeMs > 0) { + this.rotationTimer = setInterval(() => this.checkTimeRotation(), Math.min(this.config.rotation.maxAgeMs / 2, 30000)); + } + + // Start UDP server + if (this.config.udpEnabled) { + this.startUdpServer(); + } + } + + private startUdpServer(): void { + try { + this.udpServer = dgram.createSocket('udp4'); + + this.udpServer.on('message', (msg, rinfo) => { + const message = msg.toString('utf-8').trim(); + if (!message) return; + + // Parse stream ID from message or use sender IP as stream + // Format: | or just (uses IP:port as stream) + let streamId: string; + let logLine: string; + + const pipeIdx = message.indexOf('|'); + if (pipeIdx > 0 && pipeIdx < 64 && !message.substring(0, pipeIdx).includes(' ')) { + streamId = message.substring(0, pipeIdx); + logLine = message.substring(pipeIdx + 1); + } else { + streamId = `udp-${rinfo.address}`; + logLine = message; + } + + this.ingest(streamId, [logLine], `UDP ${rinfo.address}:${rinfo.port}`); + }); + + this.udpServer.on('error', (err) => { + console.error(`UDP server error: ${err.message}`); + }); + + this.udpServer.bind(this.config.udpPort, '0.0.0.0', () => { + console.log(` UDP collector listening on port ${this.config.udpPort}`); + }); + } catch (err) { + console.error('Failed to start UDP server:', (err as Error).message); + } + } + + private loadExistingStreams(): void { + try { + const metaFile = path.join(this.config.storageDir, '_streams.json'); + if (fs.existsSync(metaFile)) { + const data = JSON.parse(fs.readFileSync(metaFile, 'utf-8')); + for (const stream of data) { + this.streams.set(stream.id, stream); + const streamFile = this.getStreamFilePath(stream.id); + if (fs.existsSync(streamFile)) { + const content = fs.readFileSync(streamFile, 'utf-8'); + const lines = content.split('\n').filter(l => l.length > 0); + this.buffers.set(stream.id, lines); + const stat = fs.statSync(streamFile); + this.fileSizes.set(stream.id, stat.size); + this.fileCreatedAt.set(stream.id, stat.birthtimeMs || Date.now()); + } else { + this.buffers.set(stream.id, []); + this.fileSizes.set(stream.id, 0); + this.fileCreatedAt.set(stream.id, Date.now()); + } + } + } + } catch (err) { + console.error('Error loading collector streams:', err); + } + } + + private saveMetadata(): void { + const metaFile = path.join(this.config.storageDir, '_streams.json'); + fs.writeFileSync(metaFile, JSON.stringify(Array.from(this.streams.values()), null, 2)); + } + + private getStreamFilePath(streamId: string): string { + return path.join(this.config.storageDir, `${streamId}${this.config.rotation.fileExtension}`); + } + + private getRotatedFilePath(streamId: string): string { + const ts = new Date().toISOString().replace(/[:.]/g, '-'); + const ext = this.config.rotation.fileExtension; + const compExt = this.getCompressionExtension(); + return path.join(this.config.storageDir, `${streamId}_${ts}${ext}${compExt}`); + } + + private getCompressionExtension(): string { + switch (this.config.rotation.compression) { + case 'gzip': return '.gz'; + case 'bzip2': return '.bz2'; + case 'xz': return '.xz'; + case 'zstd': return '.zst'; + default: return ''; + } + } + + private saveStream(streamId: string): void { + if (!this.config.persistToDisk) return; + const lines = this.buffers.get(streamId) || []; + const streamFile = this.getStreamFilePath(streamId); + const content = lines.join('\n') + (lines.length > 0 ? '\n' : ''); + fs.writeFileSync(streamFile, content); + this.fileSizes.set(streamId, Buffer.byteLength(content, 'utf-8')); + } + + private checkSizeRotation(streamId: string): void { + if (this.config.rotation.maxSizeBytes <= 0) return; + const size = this.fileSizes.get(streamId) || 0; + if (size >= this.config.rotation.maxSizeBytes) { + this.rotateStream(streamId); + } + } + + private checkTimeRotation(): void { + if (this.config.rotation.maxAgeMs <= 0) return; + const now = Date.now(); + for (const [streamId, createdAt] of this.fileCreatedAt) { + if (now - createdAt >= this.config.rotation.maxAgeMs) { + const buffer = this.buffers.get(streamId); + if (buffer && buffer.length > 0) { + this.rotateStream(streamId); + } + } + } + } + + private rotateStream(streamId: string): void { + const srcFile = this.getStreamFilePath(streamId); + if (!fs.existsSync(srcFile)) return; + + const content = fs.readFileSync(srcFile); + if (content.length === 0) return; + + const destFile = this.getRotatedFilePath(streamId); + + // Compress and write + let compressed: Buffer; + switch (this.config.rotation.compression) { + case 'gzip': + compressed = zlib.gzipSync(content); + break; + case 'bzip2': + case 'xz': + case 'zstd': + // For these, just copy without compression (would need external tools) + compressed = content; + break; + default: + compressed = content; + } + + fs.writeFileSync(destFile, compressed); + console.log(` Rotated: ${streamId} -> ${path.basename(destFile)} (${compressed.length} bytes)`); + + // Reset current file + fs.writeFileSync(srcFile, ''); + this.buffers.set(streamId, []); + this.fileSizes.set(streamId, 0); + this.fileCreatedAt.set(streamId, Date.now()); + + const stream = this.streams.get(streamId); + if (stream) { stream.lineCount = 0; stream.currentFileSize = 0; } + this.saveMetadata(); + } + + // ---- Forwarding ---- + private forwardLines(streamId: string, lines: string[]): void { + for (const target of this.config.forwardTargets) { + const key = `${streamId}:${target.type}:${target.url || target.path || target.host}`; + if (!this.forwardBuffers.has(key)) this.forwardBuffers.set(key, []); + const buf = this.forwardBuffers.get(key)!; + buf.push(...lines); + + const batchSize = target.batchSize || 100; + if (buf.length >= batchSize) { + this.flushForward(key, target, streamId); + } else if (!this.forwardTimers.has(key)) { + const flushMs = target.flushIntervalMs || 5000; + this.forwardTimers.set(key, setTimeout(() => { + this.flushForward(key, target, streamId); + this.forwardTimers.delete(key); + }, flushMs)); + } + } + } + + private flushForward(key: string, target: ForwardTarget, streamId: string): void { + const lines = this.forwardBuffers.get(key) || []; + if (lines.length === 0) return; + this.forwardBuffers.set(key, []); + + switch (target.type) { + case 'http': + this.forwardHttp(target, streamId, lines); + break; + case 'file': + this.forwardFile(target, lines); + break; + case 'udp': + this.forwardUdp(target, streamId, lines); + break; + case 'stream': + this.forwardToStream(target, streamId, lines); + break; + case 'console': + for (const l of lines) console.log(`[FWD:${streamId}] ${l}`); + break; + } + } + + private forwardHttp(target: ForwardTarget, streamId: string, lines: string[]): void { + if (!target.url) return; + const payload = target.format === 'json' + ? JSON.stringify({ stream: streamId, lines, timestamp: new Date().toISOString() }) + : lines.join('\n'); + + try { + const url = new URL(target.url); + const transport = url.protocol === 'https:' ? require('https') : require('http'); + const req = transport.request({ + hostname: url.hostname, + port: url.port || (url.protocol === 'https:' ? 443 : 80), + path: url.pathname, + method: 'POST', + headers: { 'Content-Type': target.format === 'json' ? 'application/json' : 'text/plain', 'X-Stream-Id': streamId }, + }); + req.on('error', (e: Error) => console.error(`Forward HTTP error: ${e.message}`)); + req.write(payload); + req.end(); + } catch (e) { console.error(`Forward HTTP error: ${(e as Error).message}`); } + } + + private forwardFile(target: ForwardTarget, lines: string[]): void { + if (!target.path) return; + try { + fs.appendFileSync(target.path, lines.join('\n') + '\n'); + } catch (e) { console.error(`Forward file error: ${(e as Error).message}`); } + } + + private forwardUdp(target: ForwardTarget, streamId: string, lines: string[]): void { + if (!target.host || !target.port) return; + try { + const client = dgram.createSocket('udp4'); + for (const line of lines) { + const msg = Buffer.from(`${streamId}|${line}`); + client.send(msg, target.port, target.host); + } + setTimeout(() => client.close(), 1000); + } catch (e) { console.error(`Forward UDP error: ${(e as Error).message}`); } + } + + private forwardToStream(target: ForwardTarget, sourceStreamId: string, lines: string[]): void { + const targetId = target.targetStream; + if (!targetId || targetId === sourceStreamId) return; // Prevent infinite loop + try { + // Prefix lines with source stream info + const prefixed = lines.map(l => `[fwd:${sourceStreamId}] ${l}`); + // Ingest directly into the target stream without triggering forwards again + const stream = this.getOrCreateStream(targetId, `Forwarded from ${sourceStreamId}`); + const buffer = this.buffers.get(targetId)!; + for (const line of prefixed) { + if (buffer.length >= this.config.maxLinesPerStream) buffer.shift(); + buffer.push(line); + } + stream.lineCount = buffer.length; + stream.lastReceived = new Date().toISOString(); + if (this.config.persistToDisk) this.saveStream(targetId); + this.saveMetadata(); + } catch (e) { console.error(`Forward stream error: ${(e as Error).message}`); } + } + + // ---- Public API ---- + + getOrCreateStream(streamId: string, name?: string): LogStream { + if (this.streams.has(streamId)) return this.streams.get(streamId)!; + if (this.streams.size >= this.config.maxStreams) throw new Error(`Max streams (${this.config.maxStreams}) reached`); + + const stream: LogStream = { + id: streamId, name: name || streamId, createdAt: new Date().toISOString(), + lineCount: 0, lastReceived: null, currentFileSize: 0, + }; + this.streams.set(streamId, stream); + this.buffers.set(streamId, []); + this.fileSizes.set(streamId, 0); + this.fileCreatedAt.set(streamId, Date.now()); + this.saveMetadata(); + return stream; + } + + ingest(streamId: string, lines: string[], streamName?: string): { accepted: number; dropped: number } { + const stream = this.getOrCreateStream(streamId, streamName); + const buffer = this.buffers.get(streamId)!; + let accepted = 0, dropped = 0; + + const validLines: string[] = []; + for (const line of lines) { + if (line.trim() === '') continue; + if (buffer.length >= this.config.maxLinesPerStream) { buffer.shift(); dropped++; } + buffer.push(line); + validLines.push(line); + accepted++; + } + + stream.lineCount = buffer.length; + stream.lastReceived = new Date().toISOString(); + + if (this.config.persistToDisk) { + this.saveStream(streamId); + stream.currentFileSize = this.fileSizes.get(streamId) || 0; + this.checkSizeRotation(streamId); + } + + // Forward to targets + if (validLines.length > 0 && this.config.forwardTargets.length > 0) { + this.forwardLines(streamId, validLines); + } + + this.saveMetadata(); + return { accepted, dropped }; + } + + getStreams(): LogStream[] { return Array.from(this.streams.values()); } + + readStream(streamId: string, tail?: number): string[] { + const buffer = this.buffers.get(streamId); + if (!buffer) throw new Error(`Stream not found: ${streamId}`); + return tail && tail > 0 ? buffer.slice(-tail) : [...buffer]; + } + + deleteStream(streamId: string): boolean { + if (!this.streams.has(streamId)) return false; + this.streams.delete(streamId); + this.buffers.delete(streamId); + this.fileSizes.delete(streamId); + this.fileCreatedAt.delete(streamId); + const f = this.getStreamFilePath(streamId); + if (fs.existsSync(f)) fs.unlinkSync(f); + this.saveMetadata(); + return true; + } + + getConfig(): CollectorConfig { return { ...this.config }; } + + shutdown(): void { + if (this.rotationTimer) clearInterval(this.rotationTimer); + if (this.udpServer) this.udpServer.close(); + for (const timer of this.forwardTimers.values()) clearTimeout(timer); + } + + handleRequest(req: http.IncomingMessage, res: http.ServerResponse, pathname: string): boolean { + const method = req.method || 'GET'; + + // POST /collect/:streamId + const collectMatch = pathname.match(/^\/collect\/([a-zA-Z0-9_\-\.]+)(\/json)?$/); + if (collectMatch && method === 'POST') { + const streamId = collectMatch[1]; + const isJson = !!collectMatch[2]; + let body = ''; + req.on('data', (chunk) => { body += chunk.toString(); }); + req.on('end', () => { + try { + let lines: string[]; + if (isJson) { + const parsed = JSON.parse(body); + lines = Array.isArray(parsed) ? parsed.map((e: any) => typeof e === 'string' ? e : JSON.stringify(e)) : [JSON.stringify(parsed)]; + } else { + lines = body.split('\n'); + } + const streamName = req.headers['x-stream-name'] as string | undefined; + const result = this.ingest(streamId, lines, streamName); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: true, ...result })); + } catch (err) { + res.writeHead(400, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: (err as Error).message })); + } + }); + return true; + } + + // GET /collector/streams + if (pathname === '/collector/streams' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.getStreams())); + return true; + } + + // GET /collector/config + if (pathname === '/collector/config' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.getConfig())); + return true; + } + + // GET /collector/stream/:id + const readMatch = pathname.match(/^\/collector\/stream\/([a-zA-Z0-9_\-\.]+)$/); + if (readMatch && method === 'GET') { + const streamId = readMatch[1]; + try { + const url = new URL(req.url || '/', `http://${req.headers.host}`); + const tail = url.searchParams.get('tail'); + const lines = this.readStream(streamId, tail ? parseInt(tail, 10) : undefined); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ streamId, lineCount: lines.length, lines })); + } catch (err) { + res.writeHead(404, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: (err as Error).message })); + } + return true; + } + + // DELETE /collector/stream/:id + const deleteMatch = pathname.match(/^\/collector\/stream\/([a-zA-Z0-9_\-\.]+)$/); + if (deleteMatch && method === 'DELETE') { + const deleted = this.deleteStream(deleteMatch[1]); + res.writeHead(deleted ? 200 : 404, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: deleted })); + return true; + } + + return false; + } +} diff --git a/src/server/configFile.ts b/src/server/configFile.ts new file mode 100644 index 0000000..dcc5ba8 --- /dev/null +++ b/src/server/configFile.ts @@ -0,0 +1,93 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +export interface LogViewerConfig { + mode: string; + port: number; + host: string; + viewer: { + sources: string[]; + theme: string; + refreshInterval: number; + tailMode: boolean; + maxLines: number; + defaultLevel: string; + }; + collector: { + enabled: boolean; + storageDir: string; + maxLinesPerStream: number; + maxStreams: number; + persistToDisk: boolean; + udp: { enabled: boolean; port: number }; + rotation: { maxSizeBytes: number; maxAgeMs: number; compression: string; fileExtension: string }; + forwardTargets: any[]; + }; + s3: { sources: Record }; + remoteCollector: { url: string }; +} + +const CONFIG_FILE = 'logviewer.config.json'; + +export function getConfigFilePath(): string { + return path.join(process.cwd(), CONFIG_FILE); +} + +export function loadConfigFile(): LogViewerConfig { + const defaults: LogViewerConfig = { + mode: 'both', + port: 8080, + host: '0.0.0.0', + viewer: { + sources: [], + theme: 'dark', + refreshInterval: 2000, + tailMode: true, + maxLines: 50000, + defaultLevel: 'ALL', + }, + collector: { + enabled: true, + storageDir: './collector-data', + maxLinesPerStream: 100000, + maxStreams: 50, + persistToDisk: true, + udp: { enabled: true, port: 5140 }, + rotation: { maxSizeBytes: 5242880, maxAgeMs: 600000, compression: 'gzip', fileExtension: '.log' }, + forwardTargets: [], + }, + s3: { sources: {} }, + remoteCollector: { url: '' }, + }; + + const filePath = getConfigFilePath(); + if (fs.existsSync(filePath)) { + try { + const fileContent = JSON.parse(fs.readFileSync(filePath, 'utf-8')); + return deepMerge(defaults, fileContent); + } catch (err) { + console.error(`Error reading ${CONFIG_FILE}:`, (err as Error).message); + } + } + + return defaults; +} + +export function saveConfigFile(config: Partial): void { + const filePath = getConfigFilePath(); + const existing = loadConfigFile(); + const merged = deepMerge(existing, config); + fs.writeFileSync(filePath, JSON.stringify(merged, null, 2)); +} + +function deepMerge(target: any, source: any): any { + const result = { ...target }; + for (const key of Object.keys(source)) { + if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) { + result[key] = deepMerge(target[key] || {}, source[key]); + } else { + result[key] = source[key]; + } + } + return result; +} diff --git a/src/server/configManager.ts b/src/server/configManager.ts new file mode 100644 index 0000000..b072593 --- /dev/null +++ b/src/server/configManager.ts @@ -0,0 +1,79 @@ +import * as fs from 'fs'; +import * as path from 'path'; + +export interface AppConfig { + sources: string[]; + refreshInterval: number; + maxLines: number; + theme: 'dark' | 'light'; + defaultLevel: string; + tailMode: boolean; + timestampRegex: string | null; +} + +export class ConfigManager { + private config: AppConfig; + + constructor() { + this.config = this.loadConfig(); + } + + private loadConfig(): AppConfig { + this.loadEnvFile(); + + const sourcesRaw = process.env.LOG_SOURCES || ''; + const sources = sourcesRaw + .split(',') + .map((s) => s.trim()) + .filter((s) => s.length > 0); + + return { + sources, + refreshInterval: parseInt(process.env.LOG_REFRESH_INTERVAL || '2000', 10), + maxLines: parseInt(process.env.LOG_MAX_LINES || '50000', 10), + theme: (process.env.LOG_THEME as 'dark' | 'light') || 'dark', + defaultLevel: process.env.LOG_DEFAULT_LEVEL || 'ALL', + tailMode: process.env.LOG_TAIL_MODE !== 'false', + timestampRegex: process.env.LOG_TIMESTAMP_REGEX || null, + }; + } + + private loadEnvFile(): void { + const envPaths = [ + path.join(process.cwd(), '.env'), + path.join(__dirname, '..', '..', '.env'), + ]; + + for (const envPath of envPaths) { + if (fs.existsSync(envPath)) { + const content = fs.readFileSync(envPath, 'utf-8'); + for (const line of content.split('\n')) { + const trimmed = line.trim(); + if (trimmed && !trimmed.startsWith('#')) { + const eqIndex = trimmed.indexOf('='); + if (eqIndex > 0) { + const key = trimmed.substring(0, eqIndex).trim(); + const value = trimmed.substring(eqIndex + 1).trim(); + if (!process.env[key]) { + process.env[key] = value; + } + } + } + } + break; + } + } + } + + getConfig(): AppConfig { + return { ...this.config }; + } + + updateSources(sources: string[]): void { + this.config.sources = sources; + } + + getSources(): string[] { + return [...this.config.sources]; + } +} diff --git a/src/server/logSourceManager.ts b/src/server/logSourceManager.ts new file mode 100644 index 0000000..0588c3d --- /dev/null +++ b/src/server/logSourceManager.ts @@ -0,0 +1,274 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as zlib from 'zlib'; +import { execSync } from 'child_process'; +import { ConfigManager } from './configManager'; + +export interface LogEntry { + line: string; + lineNumber: number; + source: string; + timestamp: string | null; + level: string | null; +} + +export interface LogSource { + path: string; + displayName: string; + type: 'text' | 'gzip' | 'bzip2' | 'xz' | 'zstd' | 'unknown'; + size: number; + lastModified: string | null; + exists: boolean; +} + +export interface FileStats { + size: number; + lastModified: string; + lineCount: number; + type: string; +} + +export class LogSourceManager { + private configManager: ConfigManager; + private sources: Map = new Map(); + + constructor(configManager: ConfigManager) { + this.configManager = configManager; + this.initializeSources(); + } + + private initializeSources(): void { + const configSources = this.configManager.getSources(); + for (const source of configSources) { + this.addSource(source); + } + } + + addSource(sourcePath: string): void { + if (sourcePath.includes('*')) { + const resolvedPaths = this.resolveGlob(sourcePath); + for (const rp of resolvedPaths) { + this.addSingleSource(rp); + } + } else { + this.addSingleSource(sourcePath); + } + this.configManager.updateSources(Array.from(this.sources.keys())); + } + + private addSingleSource(sourcePath: string): void { + const resolved = path.resolve(sourcePath); + const type = this.detectType(resolved); + let size = 0; + let lastModified: string | null = null; + let exists = false; + + try { + const stats = fs.statSync(resolved); + size = stats.size; + lastModified = stats.mtime.toISOString(); + exists = true; + } catch { + // File doesn't exist yet + } + + this.sources.set(resolved, { + path: resolved, + displayName: path.basename(resolved), + type, + size, + lastModified, + exists, + }); + } + + removeSource(sourcePath: string): void { + const resolved = path.resolve(sourcePath); + this.sources.delete(resolved); + this.configManager.updateSources(Array.from(this.sources.keys())); + } + + getSources(): LogSource[] { + for (const [key, source] of this.sources) { + try { + const stats = fs.statSync(key); + source.size = stats.size; + source.lastModified = stats.mtime.toISOString(); + source.exists = true; + } catch { + source.exists = false; + } + } + return Array.from(this.sources.values()); + } + + private detectType(filePath: string): LogSource['type'] { + const ext = path.extname(filePath).toLowerCase(); + switch (ext) { + case '.gz': case '.gzip': return 'gzip'; + case '.bz2': case '.bzip2': return 'bzip2'; + case '.xz': return 'xz'; + case '.zst': case '.zstd': return 'zstd'; + default: return 'text'; + } + } + + async readLog(sourcePath: string): Promise { + const resolved = path.resolve(sourcePath); + const source = this.sources.get(resolved); + if (!source) throw new Error(`Source not found: ${sourcePath}`); + + const config = this.configManager.getConfig(); + const content = this.readFileContent(resolved, source.type); + const lines = content.split('\n'); + const maxLines = config.maxLines; + const startIndex = lines.length > maxLines ? lines.length - maxLines : 0; + const entries: LogEntry[] = []; + + for (let i = startIndex; i < lines.length; i++) { + const line = lines[i]; + if (line.trim() === '') continue; + entries.push({ + line, + lineNumber: i + 1, + source: resolved, + timestamp: this.extractTimestamp(line, config.timestampRegex), + level: this.extractLevel(line), + }); + } + return entries; + } + + async readAllLogs(): Promise { + const allEntries: LogEntry[] = []; + for (const [sourcePath] of this.sources) { + try { + const entries = await this.readLog(sourcePath); + allEntries.push(...entries); + } catch (err) { + allEntries.push({ + line: `[ERROR] Could not read ${sourcePath}: ${(err as Error).message}`, + lineNumber: 0, + source: sourcePath, + timestamp: new Date().toISOString(), + level: 'ERROR', + }); + } + } + allEntries.sort((a, b) => { + if (a.timestamp && b.timestamp) return a.timestamp.localeCompare(b.timestamp); + return 0; + }); + return allEntries; + } + + private readFileContent(filePath: string, type: LogSource['type']): string { + switch (type) { + case 'gzip': return this.readGzip(filePath); + case 'bzip2': return this.readBzip2(filePath); + case 'xz': return this.readXz(filePath); + case 'zstd': return this.readZstd(filePath); + default: return fs.readFileSync(filePath, 'utf-8'); + } + } + + private readGzip(filePath: string): string { + const compressed = fs.readFileSync(filePath); + return zlib.gunzipSync(compressed).toString('utf-8'); + } + + private readBzip2(filePath: string): string { + try { + return execSync(`bzcat "${filePath}"`, { maxBuffer: 100 * 1024 * 1024 }).toString('utf-8'); + } catch { + throw new Error('Cannot decompress bzip2. Make sure bzip2 is installed.'); + } + } + + private readXz(filePath: string): string { + try { + return execSync(`xzcat "${filePath}"`, { maxBuffer: 100 * 1024 * 1024 }).toString('utf-8'); + } catch { + throw new Error('Cannot decompress xz. Make sure xz-utils is installed.'); + } + } + + private readZstd(filePath: string): string { + try { + return execSync(`zstdcat "${filePath}"`, { maxBuffer: 100 * 1024 * 1024 }).toString('utf-8'); + } catch { + throw new Error('Cannot decompress zstd. Make sure zstd is installed.'); + } + } + + private extractTimestamp(line: string, customRegex: string | null): string | null { + const patterns = [ + /(\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)/, + /^([A-Z][a-z]{2}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})/, + /\[(\d{2}\/[A-Z][a-z]{2}\/\d{4}:\d{2}:\d{2}:\d{2}\s[+-]\d{4})\]/, + /(\d{4}\/\d{2}\/\d{2}\s+\d{2}:\d{2}:\d{2})/, + ]; + + if (customRegex) { + try { + const match = line.match(new RegExp(customRegex)); + if (match) return match[1] || match[0]; + } catch { /* skip */ } + } + + for (const pattern of patterns) { + const match = line.match(pattern); + if (match) return match[1]; + } + return null; + } + + private extractLevel(line: string): string | null { + const upper = line.toUpperCase(); + const levels = ['FATAL', 'ERROR', 'WARN', 'WARNING', 'INFO', 'DEBUG', 'TRACE', 'VERBOSE']; + for (const level of levels) { + if (new RegExp(`\\b${level}\\b`).test(upper)) { + return level === 'WARNING' ? 'WARN' : level; + } + } + return null; + } + + private resolveGlob(pattern: string): string[] { + const dir = path.dirname(pattern); + const filePattern = path.basename(pattern); + const results: string[] = []; + try { + const files = fs.readdirSync(dir); + const regex = new RegExp( + '^' + filePattern.replace(/\./g, '\\.').replace(/\*/g, '.*').replace(/\?/g, '.') + '$' + ); + for (const file of files) { + if (regex.test(file)) { + const fullPath = path.join(dir, file); + try { + if (fs.statSync(fullPath).isFile()) results.push(fullPath); + } catch { /* skip */ } + } + } + } catch { /* dir doesn't exist */ } + return results; + } + + async getFileStats(sourcePath: string): Promise { + const resolved = path.resolve(sourcePath); + try { + const stats = fs.statSync(resolved); + const source = this.sources.get(resolved); + const content = this.readFileContent(resolved, source?.type || 'text'); + return { + size: stats.size, + lastModified: stats.mtime.toISOString(), + lineCount: content.split('\n').length, + type: source?.type || 'text', + }; + } catch { + return null; + } + } +} diff --git a/src/server/monitor.ts b/src/server/monitor.ts new file mode 100644 index 0000000..1dd223f --- /dev/null +++ b/src/server/monitor.ts @@ -0,0 +1,539 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as zlib from 'zlib'; +import * as http from 'http'; +import * as https from 'https'; +import * as url from 'url'; + +// ---- Types ---- + +export interface MonitorRule { + id: string; + name: string; + enabled: boolean; + sources: string[]; // File paths or globs + patterns: string[]; // Regex patterns to match + patternLogic: 'any' | 'all'; // Match any or all patterns + timeRange: TimeRange; + notifications: NotificationChannel[]; + maxLinesInMessage: number; // Max lines to include inline (rest zipped) + cooldownMs: number; // Min time between alerts for same rule + lastTriggered: string | null; + matchCount: number; +} + +export interface TimeRange { + type: 'today' | 'week' | 'month' | 'hours' | 'all'; + hours?: number; // For type 'hours' +} + +export interface NotificationChannel { + type: 'webhook' | 'telegram' | 'email' | 'teams'; + url?: string; // For webhook, teams + chatId?: string; // For telegram + botToken?: string; // For telegram + to?: string; // For email + smtpHost?: string; + smtpPort?: number; + smtpUser?: string; + smtpPass?: string; +} + +export interface MonitorResult { + ruleId: string; + ruleName: string; + matchedLines: string[]; + totalMatches: number; + sources: string[]; + timestamp: string; +} + +export interface MonitorConfig { + enabled: boolean; + scanIntervalMs: number; // How often to scan (default 60s) + rules: MonitorRule[]; + storageDir: string; +} + +// ---- Monitor Engine ---- + +export class LogMonitor { + private config: MonitorConfig; + private scanTimer: NodeJS.Timeout | null = null; + private results: MonitorResult[] = []; + + constructor(config: Partial = {}) { + this.config = { + enabled: config.enabled !== false, + scanIntervalMs: config.scanIntervalMs || 60000, + rules: config.rules || [], + storageDir: config.storageDir || path.join(process.cwd(), 'monitor-data'), + }; + + if (!fs.existsSync(this.config.storageDir)) { + fs.mkdirSync(this.config.storageDir, { recursive: true }); + } + + this.loadState(); + + if (this.config.enabled && this.config.rules.length > 0) { + this.startScanning(); + } + } + + private loadState(): void { + const stateFile = path.join(this.config.storageDir, '_monitor_state.json'); + if (fs.existsSync(stateFile)) { + try { + const data = JSON.parse(fs.readFileSync(stateFile, 'utf-8')); + this.results = data.results || []; + // Restore lastTriggered from state + if (data.rules) { + for (const saved of data.rules) { + const rule = this.config.rules.find(r => r.id === saved.id); + if (rule) { + rule.lastTriggered = saved.lastTriggered; + rule.matchCount = saved.matchCount || 0; + } + } + } + } catch { } + } + } + + private saveState(): void { + const stateFile = path.join(this.config.storageDir, '_monitor_state.json'); + fs.writeFileSync(stateFile, JSON.stringify({ + results: this.results.slice(-100), + rules: this.config.rules.map(r => ({ id: r.id, lastTriggered: r.lastTriggered, matchCount: r.matchCount })), + }, null, 2)); + } + + startScanning(): void { + if (this.scanTimer) clearInterval(this.scanTimer); + console.log(` Monitor scanning every ${this.config.scanIntervalMs / 1000}s with ${this.config.rules.length} rule(s)`); + this.scanTimer = setInterval(() => this.runScan(), this.config.scanIntervalMs); + // Run immediately + setTimeout(() => this.runScan(), 2000); + } + + stopScanning(): void { + if (this.scanTimer) { clearInterval(this.scanTimer); this.scanTimer = null; } + } + + async runScan(): Promise { + for (const rule of this.config.rules) { + if (!rule.enabled) continue; + + // Check schedule + if ((rule as any).schedule && (rule as any).schedule.mode !== 'interval') { + if (!this.shouldRunBySchedule(rule)) continue; + } + + // Check cooldown + if (rule.lastTriggered) { + const elapsed = Date.now() - new Date(rule.lastTriggered).getTime(); + if (elapsed < rule.cooldownMs) continue; + } + + try { + const matches = this.scanRule(rule); + if (matches.length > 0) { + const result: MonitorResult = { + ruleId: rule.id, + ruleName: rule.name, + matchedLines: matches, + totalMatches: matches.length, + sources: rule.sources, + timestamp: new Date().toISOString(), + }; + + rule.lastTriggered = result.timestamp; + rule.matchCount += matches.length; + this.results.push(result); + + // Send notifications + await this.notify(rule, result); + this.saveState(); + } + } catch (err) { + console.error(` Monitor rule "${rule.name}" error:`, (err as Error).message); + } + } + } + + private shouldRunBySchedule(rule: MonitorRule): boolean { + const schedule = (rule as any).schedule; + if (!schedule) return true; + + const now = new Date(); + const lastRun = rule.lastTriggered ? new Date(rule.lastTriggered) : null; + + switch (schedule.mode) { + case 'daily': { + // Run once per day at specified time (HH:MM) + const [h, m] = (schedule.value || '07:00').split(':').map(Number); + const targetToday = new Date(now); targetToday.setHours(h, m, 0, 0); + // Already ran today? + if (lastRun && lastRun.toDateString() === now.toDateString()) return false; + // Is it past the target time? + return now >= targetToday; + } + case 'hourly': { + // Run every N hours + const hours = parseInt(schedule.value || '2', 10); + if (!lastRun) return true; + return (now.getTime() - lastRun.getTime()) >= hours * 3600000; + } + case 'cron': { + // Simple cron: just check if enough time passed based on scan interval + // Full cron parsing would need a library, so we approximate + return true; + } + default: return true; + } + } + + private scanRule(rule: MonitorRule): string[] { + const allMatches: string[] = []; + const regexes = rule.patterns.map(p => new RegExp(p, 'i')); + + for (const source of rule.sources) { + const files = this.resolveFiles(source); + for (const file of files) { + if (!this.isInTimeRange(file, rule.timeRange)) continue; + + try { + const content = this.readFile(file); + const lines = content.split('\n'); + + for (const line of lines) { + if (line.trim() === '') continue; + const matched = rule.patternLogic === 'all' + ? regexes.every(r => r.test(line)) + : regexes.some(r => r.test(line)); + if (matched) allMatches.push(line); + } + } catch { } + } + } + + return allMatches; + } + + private resolveFiles(pattern: string): string[] { + if (pattern.includes('*')) { + const dir = path.dirname(pattern); + const filePattern = path.basename(pattern); + try { + const files = fs.readdirSync(dir); + const regex = new RegExp('^' + filePattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$'); + return files.filter(f => regex.test(f)).map(f => path.join(dir, f)); + } catch { return []; } + } + return fs.existsSync(pattern) ? [pattern] : []; + } + + private isInTimeRange(file: string, range: TimeRange): boolean { + if (range.type === 'all') return true; + + try { + const stat = fs.statSync(file); + const fileTime = stat.mtime.getTime(); + const now = Date.now(); + + switch (range.type) { + case 'today': { + const startOfDay = new Date(); startOfDay.setHours(0, 0, 0, 0); + return fileTime >= startOfDay.getTime(); + } + case 'week': return fileTime >= now - 7 * 24 * 60 * 60 * 1000; + case 'month': return fileTime >= now - 30 * 24 * 60 * 60 * 1000; + case 'hours': return fileTime >= now - (range.hours || 24) * 60 * 60 * 1000; + default: return true; + } + } catch { return false; } + } + + private readFile(filePath: string): string { + const ext = path.extname(filePath).toLowerCase(); + if (ext === '.gz' || ext === '.gzip') { + return zlib.gunzipSync(fs.readFileSync(filePath)).toString('utf-8'); + } + return fs.readFileSync(filePath, 'utf-8'); + } + + // ---- Notifications ---- + + private async notify(rule: MonitorRule, result: MonitorResult): Promise { + const summary = this.buildSummary(rule, result); + const attachment = result.matchedLines.length > rule.maxLinesInMessage + ? this.buildAttachment(result) + : null; + + for (const channel of rule.notifications) { + try { + switch (channel.type) { + case 'webhook': await this.sendWebhook(channel, summary, attachment); break; + case 'telegram': await this.sendTelegram(channel, summary, attachment); break; + case 'teams': await this.sendTeams(channel, summary); break; + case 'email': console.log(` [Monitor] Email notification not yet implemented`); break; + } + } catch (err) { + console.error(` [Monitor] Notification error (${channel.type}):`, (err as Error).message); + } + } + } + + private buildSummary(rule: MonitorRule, result: MonitorResult): string { + const lines = result.matchedLines.slice(0, rule.maxLinesInMessage); + let msg = `🚨 **Log Monitor Alert: ${rule.name}**\n\n`; + msg += `**Matches:** ${result.totalMatches} lines\n`; + msg += `**Sources:** ${result.sources.join(', ')}\n`; + msg += `**Time:** ${result.timestamp}\n`; + msg += `**Patterns:** ${rule.patterns.join(' | ')}\n\n`; + msg += `**Sample (first ${lines.length} of ${result.totalMatches}):**\n`; + msg += '```\n' + lines.join('\n') + '\n```'; + + if (result.totalMatches > rule.maxLinesInMessage) { + msg += `\n\n📎 Full results (${result.totalMatches} lines) attached as .gz file.`; + } + return msg; + } + + private buildAttachment(result: MonitorResult): Buffer { + const content = result.matchedLines.join('\n'); + return zlib.gzipSync(Buffer.from(content, 'utf-8')); + } + + private async sendWebhook(channel: NotificationChannel, message: string, attachment: Buffer | null): Promise { + if (!channel.url) return; + const payload = JSON.stringify({ + text: message, + matches: attachment ? `(${attachment.length} bytes gzipped attachment)` : undefined, + }); + await this.httpPost(channel.url, payload, 'application/json'); + console.log(` [Monitor] Webhook sent to ${channel.url}`); + } + + private async sendTelegram(channel: NotificationChannel, message: string, attachment: Buffer | null): Promise { + if (!channel.botToken || !channel.chatId) return; + + // Send text message - use plain text to avoid Markdown parsing issues + const payload = JSON.stringify({ + chat_id: channel.chatId, + text: message.replace(/[*_`\[]/g, '').substring(0, 4000), // Strip markdown, respect limit + }); + + await this.httpPost( + `https://api.telegram.org/bot${channel.botToken}/sendMessage`, + payload, + 'application/json' + ); + + console.log(` [Monitor] Telegram sent to chat ${channel.chatId}`); + } + + private async sendTeams(channel: NotificationChannel, message: string): Promise { + if (!channel.url) return; + const payload = JSON.stringify({ + '@type': 'MessageCard', + summary: 'Log Monitor Alert', + text: message.replace(/\n/g, '
').replace(/```/g, ''), + }); + await this.httpPost(channel.url, payload, 'application/json'); + console.log(` [Monitor] Teams webhook sent`); + } + + private httpPost(targetUrl: string, body: string, contentType: string): Promise { + return new Promise((resolve, reject) => { + const parsed = new URL(targetUrl); + const isHttps = parsed.protocol === 'https:'; + const transport = isHttps ? https : http; + const req = transport.request({ + hostname: parsed.hostname, + port: parsed.port || (isHttps ? 443 : 80), + path: parsed.pathname + parsed.search, + method: 'POST', + headers: { 'Content-Type': contentType, 'Content-Length': Buffer.byteLength(body) }, + }, (res) => { + let responseBody = ''; + res.on('data', (c) => { responseBody += c; }); + res.on('end', () => { + if (res.statusCode && res.statusCode >= 400) { + reject(new Error(`HTTP ${res.statusCode}: ${responseBody.substring(0, 200)}`)); + } else { + resolve(); + } + }); + }); + req.on('error', reject); + req.setTimeout(10000, () => { req.destroy(); reject(new Error('Timeout')); }); + req.write(body); + req.end(); + }); + } + + // ---- Public API ---- + + getRules(): MonitorRule[] { return this.config.rules; } + getResults(): MonitorResult[] { return this.results; } + getConfig(): MonitorConfig { return { ...this.config }; } + + addRule(rule: MonitorRule): void { + this.config.rules.push(rule); + this.saveState(); + if (this.config.rules.length === 1 && !this.scanTimer) this.startScanning(); + } + + updateRule(id: string, updates: Partial): boolean { + const rule = this.config.rules.find(r => r.id === id); + if (!rule) return false; + Object.assign(rule, updates); + this.saveState(); + return true; + } + + deleteRule(id: string): boolean { + const idx = this.config.rules.findIndex(r => r.id === id); + if (idx === -1) return false; + this.config.rules.splice(idx, 1); + this.saveState(); + return true; + } + + triggerRule(id: string): MonitorResult | null { + const rule = this.config.rules.find(r => r.id === id); + if (!rule) return null; + const matches = this.scanRule(rule); + if (matches.length === 0) return null; + const result: MonitorResult = { + ruleId: rule.id, ruleName: rule.name, matchedLines: matches, + totalMatches: matches.length, sources: rule.sources, timestamp: new Date().toISOString(), + }; + this.results.push(result); + rule.matchCount += matches.length; + this.saveState(); + return result; + } + + getAttachment(ruleId: string): Buffer | null { + const result = [...this.results].reverse().find(r => r.ruleId === ruleId); + if (!result) return null; + return zlib.gzipSync(Buffer.from(result.matchedLines.join('\n'), 'utf-8')); + } + + handleRequest(req: http.IncomingMessage, res: http.ServerResponse, pathname: string): boolean { + const method = req.method || 'GET'; + + if (pathname === '/api/monitor/rules' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.getRules())); + return true; + } + + if (pathname === '/api/monitor/rules' && method === 'POST') { + let body = ''; + req.on('data', c => body += c); + req.on('end', () => { + try { + const rule = JSON.parse(body); + if (!rule.id) rule.id = 'rule-' + Date.now(); + if (!rule.maxLinesInMessage) rule.maxLinesInMessage = 20; + if (!rule.cooldownMs) rule.cooldownMs = 300000; + if (!rule.matchCount) rule.matchCount = 0; + if (!rule.lastTriggered) rule.lastTriggered = null; + this.addRule(rule); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: true, rule })); + } catch (e) { + res.writeHead(400, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: (e as Error).message })); + } + }); + return true; + } + + // Test notification endpoint + if (pathname === '/api/monitor/test-notification' && method === 'POST') { + let body = ''; + req.on('data', c => body += c); + req.on('end', async () => { + try { + const channel = JSON.parse(body); + const testMsg = `🧪 **Test Notification**\n\nThis is a test from LogViewer Monitor.\nTimestamp: ${new Date().toISOString()}\n\nIf you see this, notifications are working! ✅`; + await this.sendTestNotification(channel, testMsg); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: true })); + } catch (e) { + res.writeHead(500, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok: false, error: (e as Error).message })); + } + }); + return true; + } + + const ruleMatch = pathname.match(/^\/api\/monitor\/rule\/([a-zA-Z0-9_\-]+)$/); + if (ruleMatch && method === 'DELETE') { + const ok = this.deleteRule(ruleMatch[1]); + res.writeHead(ok ? 200 : 404, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok })); + return true; + } + + if (ruleMatch && method === 'PUT') { + let body = ''; + req.on('data', c => body += c); + req.on('end', () => { + const updates = JSON.parse(body); + const ok = this.updateRule(ruleMatch[1], updates); + res.writeHead(ok ? 200 : 404, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ ok })); + }); + return true; + } + + const triggerMatch = pathname.match(/^\/api\/monitor\/trigger\/([a-zA-Z0-9_\-]+)$/); + if (triggerMatch && method === 'POST') { + const result = this.triggerRule(triggerMatch[1]); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(result || { matches: 0 })); + return true; + } + + if (pathname === '/api/monitor/results' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.results.slice(-50))); + return true; + } + + if (pathname === '/api/monitor/config' && method === 'GET') { + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify(this.getConfig())); + return true; + } + + return false; + } + + private async sendTestNotification(channel: NotificationChannel, message: string): Promise { + switch (channel.type) { + case 'webhook': + if (!channel.url) throw new Error('No webhook URL provided'); + await this.sendWebhook(channel, message, null); + break; + case 'telegram': + if (!channel.botToken || !channel.chatId) throw new Error('Bot token and chat ID required'); + await this.sendTelegram(channel, message, null); + break; + case 'teams': + if (!channel.url) throw new Error('No Teams webhook URL provided'); + await this.sendTeams(channel, message); + break; + case 'email': + throw new Error('Email test not yet implemented'); + default: + throw new Error(`Unknown channel type: ${channel.type}`); + } + } +} diff --git a/src/server/s3Source.ts b/src/server/s3Source.ts new file mode 100644 index 0000000..021bc9c --- /dev/null +++ b/src/server/s3Source.ts @@ -0,0 +1,191 @@ +import * as https from 'https'; +import * as http from 'http'; +import * as crypto from 'crypto'; +import * as zlib from 'zlib'; + +export interface S3Config { + accessKeyId: string; + secretAccessKey: string; + region: string; + bucket: string; + prefix?: string; + endpoint?: string; // For S3-compatible (MinIO, etc.) +} + +export interface S3Object { + key: string; + size: number; + lastModified: string; +} + +/** + * Minimal S3 client without external dependencies. + * Supports AWS S3 and S3-compatible services (MinIO, DigitalOcean Spaces, etc.) + */ +export class S3Source { + private config: S3Config; + private host: string; + private useHttps: boolean; + + constructor(config: S3Config) { + this.config = config; + if (config.endpoint) { + const url = new URL(config.endpoint); + this.host = url.host; + this.useHttps = url.protocol === 'https:'; + } else { + this.host = `${config.bucket}.s3.${config.region}.amazonaws.com`; + this.useHttps = true; + } + } + + /** + * List objects in the bucket with optional prefix + */ + async listObjects(prefix?: string): Promise { + const usedPrefix = prefix || this.config.prefix || ''; + const queryParams = usedPrefix ? `list-type=2&prefix=${encodeURIComponent(usedPrefix)}` : 'list-type=2'; + const path = this.config.endpoint ? `/${this.config.bucket}/?${queryParams}` : `/?${queryParams}`; + + const response = await this.request('GET', path, ''); + const objects: S3Object[] = []; + + // Simple XML parsing for S3 ListObjectsV2 response + const contentRegex = /([\s\S]*?)<\/Contents>/g; + let match; + while ((match = contentRegex.exec(response)) !== null) { + const content = match[1]; + const key = this.extractXmlValue(content, 'Key'); + const size = parseInt(this.extractXmlValue(content, 'Size') || '0', 10); + const lastModified = this.extractXmlValue(content, 'LastModified') || ''; + + if (key && !key.endsWith('/')) { + objects.push({ key, size, lastModified }); + } + } + + return objects; + } + + /** + * Download an object's content as string + */ + async getObject(key: string): Promise { + const path = this.config.endpoint + ? `/${this.config.bucket}/${encodeURIComponent(key)}` + : `/${encodeURIComponent(key)}`; + + const response = await this.requestRaw('GET', path, ''); + + // Auto-decompress if gzipped + if (key.endsWith('.gz') || key.endsWith('.gzip')) { + try { + const decompressed = zlib.gunzipSync(response); + return decompressed.toString('utf-8'); + } catch { + return response.toString('utf-8'); + } + } + + return response.toString('utf-8'); + } + + private extractXmlValue(xml: string, tag: string): string | null { + const regex = new RegExp(`<${tag}>(.*?)`); + const match = xml.match(regex); + return match ? match[1] : null; + } + + private async request(method: string, path: string, body: string): Promise { + const buf = await this.requestRaw(method, path, body); + return buf.toString('utf-8'); + } + + private async requestRaw(method: string, path: string, body: string): Promise { + const now = new Date(); + const dateStamp = now.toISOString().replace(/[-:]/g, '').split('.')[0] + 'Z'; + const shortDate = dateStamp.substring(0, 8); + + const headers: Record = { + 'host': this.host, + 'x-amz-date': dateStamp, + 'x-amz-content-sha256': this.sha256(body), + }; + + // Create canonical request + const [pathPart, queryPart] = path.split('?'); + const canonicalQueryString = queryPart || ''; + const signedHeaderKeys = Object.keys(headers).sort(); + const signedHeaders = signedHeaderKeys.join(';'); + const canonicalHeaders = signedHeaderKeys.map(k => `${k}:${headers[k]}\n`).join(''); + + const canonicalRequest = [ + method, + pathPart, + canonicalQueryString, + canonicalHeaders, + signedHeaders, + headers['x-amz-content-sha256'], + ].join('\n'); + + // Create string to sign + const credentialScope = `${shortDate}/${this.config.region}/s3/aws4_request`; + const stringToSign = [ + 'AWS4-HMAC-SHA256', + dateStamp, + credentialScope, + this.sha256(canonicalRequest), + ].join('\n'); + + // Calculate signature + const signingKey = this.getSignatureKey(shortDate); + const signature = this.hmac(signingKey, stringToSign).toString('hex'); + + // Authorization header + headers['authorization'] = `AWS4-HMAC-SHA256 Credential=${this.config.accessKeyId}/${credentialScope}, SignedHeaders=${signedHeaders}, Signature=${signature}`; + + return new Promise((resolve, reject) => { + const options = { + hostname: this.host.split(':')[0], + port: this.host.includes(':') ? parseInt(this.host.split(':')[1]) : (this.useHttps ? 443 : 80), + path: path, + method: method, + headers: headers, + }; + + const transport = this.useHttps ? https : http; + const req = transport.request(options, (res) => { + const chunks: Buffer[] = []; + res.on('data', (chunk: Buffer) => chunks.push(chunk)); + res.on('end', () => { + const data = Buffer.concat(chunks); + if (res.statusCode && res.statusCode >= 400) { + reject(new Error(`S3 error ${res.statusCode}: ${data.toString('utf-8').substring(0, 200)}`)); + } else { + resolve(data); + } + }); + }); + + req.on('error', reject); + req.setTimeout(30000, () => { req.destroy(); reject(new Error('S3 request timeout')); }); + if (body) req.write(body); + req.end(); + }); + } + + private sha256(data: string): string { + return crypto.createHash('sha256').update(data, 'utf8').digest('hex'); + } + + private hmac(key: Buffer | string, data: string): Buffer { + return crypto.createHmac('sha256', key).update(data, 'utf8').digest(); + } + + private getSignatureKey(dateStamp: string): Buffer { + const kDate = this.hmac(`AWS4${this.config.secretAccessKey}`, dateStamp); + const kRegion = this.hmac(kDate, this.config.region); + const kService = this.hmac(kRegion, 's3'); + return this.hmac(kService, 'aws4_request'); + } +} diff --git a/src/server/server.ts b/src/server/server.ts new file mode 100644 index 0000000..5ac8e56 --- /dev/null +++ b/src/server/server.ts @@ -0,0 +1,418 @@ +import * as http from 'http'; +import * as fs from 'fs'; +import * as path from 'path'; +import * as url from 'url'; +import { LogSourceManager } from './logSourceManager'; +import { ConfigManager } from './configManager'; +import { LogCollector } from './collector'; +import { S3Source, S3Config } from './s3Source'; +import { saveConfigFile } from './configFile'; +import { LogMonitor, MonitorConfig } from './monitor'; + +const configManager = new ConfigManager(); +const logSourceManager = new LogSourceManager(configManager); + +// Mode: "viewer" | "collector" | "monitor" | "both" | "all" +const MODE = (process.env.LOG_MODE || 'both').toLowerCase(); +const PORT = parseInt(process.env.PORT || '8080', 10); +const HOST = process.env.HOST || '0.0.0.0'; + +// Collector setup +let collector: LogCollector | null = null; +if (MODE === 'collector' || MODE === 'both') { + let forwardTargets: any[] = []; + try { forwardTargets = JSON.parse(process.env.COLLECTOR_FORWARD_TARGETS || '[]'); } catch { } + + collector = new LogCollector({ + storageDir: process.env.COLLECTOR_STORAGE_DIR || path.join(process.cwd(), 'collector-data'), + maxLinesPerStream: parseInt(process.env.COLLECTOR_MAX_LINES || '100000', 10), + maxStreams: parseInt(process.env.COLLECTOR_MAX_STREAMS || '50', 10), + udpEnabled: process.env.COLLECTOR_UDP_ENABLED !== 'false', + udpPort: parseInt(process.env.COLLECTOR_UDP_PORT || '5140', 10), + persistToDisk: process.env.COLLECTOR_PERSIST !== 'false', + rotation: { + maxSizeBytes: parseInt(process.env.COLLECTOR_ROTATION_MAX_SIZE || '5242880', 10), + maxAgeMs: parseInt(process.env.COLLECTOR_ROTATION_MAX_AGE || '600000', 10), + compression: (process.env.COLLECTOR_ROTATION_COMPRESSION as any) || 'gzip', + fileExtension: process.env.COLLECTOR_ROTATION_EXTENSION || '.log', + }, + forwardTargets, + }); +} + +// S3 sources from env +const s3Sources: Map = new Map(); +function loadS3SourcesFromEnv(): void { + // Format: S3_SOURCE_=bucket:prefix + // S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION (global) + // Or per-source: S3_SOURCE__ACCESS_KEY, S3_SOURCE__SECRET_KEY, etc. + const globalAccessKey = process.env.S3_ACCESS_KEY_ID || process.env.AWS_ACCESS_KEY_ID || ''; + const globalSecretKey = process.env.S3_SECRET_ACCESS_KEY || process.env.AWS_SECRET_ACCESS_KEY || ''; + const globalRegion = process.env.S3_REGION || process.env.AWS_REGION || 'us-east-1'; + const globalEndpoint = process.env.S3_ENDPOINT || ''; + + for (const [key, value] of Object.entries(process.env)) { + if (key.startsWith('S3_SOURCE_') && value && !key.includes('_ACCESS_KEY') && !key.includes('_SECRET_KEY') && !key.includes('_REGION') && !key.includes('_ENDPOINT')) { + const name = key.replace('S3_SOURCE_', '').toLowerCase(); + const parts = value.split(':'); + const bucket = parts[0]; + const prefix = parts.slice(1).join(':') || ''; + + const accessKey = process.env[`S3_SOURCE_${name.toUpperCase()}_ACCESS_KEY`] || globalAccessKey; + const secretKey = process.env[`S3_SOURCE_${name.toUpperCase()}_SECRET_KEY`] || globalSecretKey; + const region = process.env[`S3_SOURCE_${name.toUpperCase()}_REGION`] || globalRegion; + const endpoint = process.env[`S3_SOURCE_${name.toUpperCase()}_ENDPOINT`] || globalEndpoint; + + if (accessKey && secretKey && bucket) { + const config: S3Config = { accessKeyId: accessKey, secretAccessKey: secretKey, region, bucket, prefix: prefix || undefined, endpoint: endpoint || undefined }; + s3Sources.set(name, new S3Source(config)); + } + } + } +} +loadS3SourcesFromEnv(); + +// Monitor setup +let monitor: LogMonitor | null = null; +if (MODE === 'monitor' || MODE === 'both' || MODE === 'all') { + let monitorRules: any[] = []; + try { monitorRules = JSON.parse(process.env.MONITOR_RULES || '[]'); } catch { } + + monitor = new LogMonitor({ + enabled: process.env.MONITOR_ENABLED !== 'false', + scanIntervalMs: parseInt(process.env.MONITOR_SCAN_INTERVAL || '60000', 10), + rules: monitorRules, + storageDir: process.env.MONITOR_STORAGE_DIR || path.join(process.cwd(), 'monitor-data'), + }); +} + +// Remote collector URL (for viewer mode connecting to a remote collector) +const REMOTE_COLLECTOR_URL = process.env.REMOTE_COLLECTOR_URL || ''; + +const MIME_TYPES: Record = { + '.html': 'text/html; charset=utf-8', + '.css': 'text/css; charset=utf-8', + '.js': 'application/javascript; charset=utf-8', + '.json': 'application/json; charset=utf-8', + '.png': 'image/png', + '.svg': 'image/svg+xml', + '.ico': 'image/x-icon', +}; + +function sendJson(res: http.ServerResponse, data: unknown, status = 200): void { + res.writeHead(status, { 'Content-Type': 'application/json; charset=utf-8' }); + res.end(JSON.stringify(data)); +} + +function sendError(res: http.ServerResponse, message: string, status = 500): void { + sendJson(res, { error: message }, status); +} + +async function readBody(req: http.IncomingMessage): Promise { + return new Promise((resolve, reject) => { + const chunks: Buffer[] = []; + req.on('data', (chunk: Buffer) => chunks.push(chunk)); + req.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8'))); + req.on('error', reject); + }); +} + +async function fetchRemote(remotePath: string): Promise { + if (!REMOTE_COLLECTOR_URL) throw new Error('No remote collector configured'); + const fullUrl = REMOTE_COLLECTOR_URL.replace(/\/$/, '') + remotePath; + + return new Promise((resolve, reject) => { + const transport = fullUrl.startsWith('https') ? require('https') : require('http'); + transport.get(fullUrl, (res: http.IncomingMessage) => { + const chunks: Buffer[] = []; + res.on('data', (c: Buffer) => chunks.push(c)); + res.on('end', () => { + try { + resolve(JSON.parse(Buffer.concat(chunks).toString('utf-8'))); + } catch { resolve(Buffer.concat(chunks).toString('utf-8')); } + }); + }).on('error', reject); + }); +} + +const server = http.createServer(async (req, res) => { + const parsedUrl = url.parse(req.url || '/', true); + const pathname = parsedUrl.pathname || '/'; + const method = req.method || 'GET'; + + // CORS + res.setHeader('Access-Control-Allow-Origin', '*'); + res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS'); + res.setHeader('Access-Control-Allow-Headers', 'Content-Type, X-Stream-Name'); + + if (method === 'OPTIONS') { res.writeHead(204); res.end(); return; } + + // ---- Collector endpoints ---- + if (collector && (pathname.startsWith('/collect/') || pathname.startsWith('/collector/'))) { + const handled = collector.handleRequest(req, res, pathname); + if (handled) return; + } + + // ---- Monitor endpoints ---- + if (monitor && pathname.startsWith('/api/monitor/')) { + const handled = monitor.handleRequest(req, res, pathname); + if (handled) return; + } + + // ---- API Routes ---- + if (pathname.startsWith('/api/')) { + try { + // GET /api/mode + if (pathname === '/api/mode' && method === 'GET') { + return sendJson(res, { mode: MODE, hasCollector: !!collector, hasRemoteCollector: !!REMOTE_COLLECTOR_URL, s3Sources: Array.from(s3Sources.keys()) }); + } + + // GET /api/config + if (pathname === '/api/config' && method === 'GET') { + return sendJson(res, { ...configManager.getConfig(), mode: MODE }); + } + + // GET /api/sources + if (pathname === '/api/sources' && method === 'GET') { + return sendJson(res, logSourceManager.getSources()); + } + + // POST /api/sources { path: "..." } + if (pathname === '/api/sources' && method === 'POST') { + const body = JSON.parse(await readBody(req)); + logSourceManager.addSource(body.path); + return sendJson(res, logSourceManager.getSources()); + } + + // DELETE /api/sources?path=... + if (pathname === '/api/sources' && method === 'DELETE') { + const sourcePath = parsedUrl.query.path as string; + if (!sourcePath) return sendError(res, 'Missing path parameter', 400); + logSourceManager.removeSource(sourcePath); + return sendJson(res, logSourceManager.getSources()); + } + + // GET /api/logs?source=... + if (pathname === '/api/logs' && method === 'GET') { + const source = parsedUrl.query.source as string | undefined; + if (source && source !== 'ALL') { + const entries = await logSourceManager.readLog(source); + return sendJson(res, entries); + } else { + const entries = await logSourceManager.readAllLogs(); + return sendJson(res, entries); + } + } + + // ---- S3 endpoints ---- + + // POST /api/s3/add { name, bucket, prefix, accessKeyId, secretAccessKey, region, endpoint? } + if (pathname === '/api/s3/add' && method === 'POST') { + const body = JSON.parse(await readBody(req)); + const { name, bucket, prefix, accessKeyId, secretAccessKey, region, endpoint } = body; + if (!name || !bucket || !accessKeyId || !secretAccessKey || !region) { + return sendError(res, 'Missing required fields: name, bucket, accessKeyId, secretAccessKey, region', 400); + } + const config: S3Config = { accessKeyId, secretAccessKey, region, bucket, prefix, endpoint }; + s3Sources.set(name, new S3Source(config)); + return sendJson(res, { ok: true, name }); + } + + // GET /api/s3/sources + if (pathname === '/api/s3/sources' && method === 'GET') { + return sendJson(res, Array.from(s3Sources.keys())); + } + + // GET /api/s3/list?name=...&prefix=... + if (pathname === '/api/s3/list' && method === 'GET') { + const name = parsedUrl.query.name as string; + const prefix = parsedUrl.query.prefix as string | undefined; + const s3 = s3Sources.get(name); + if (!s3) return sendError(res, `S3 source not found: ${name}`, 404); + const objects = await s3.listObjects(prefix); + return sendJson(res, objects); + } + + // GET /api/s3/read?name=...&key=... + if (pathname === '/api/s3/read' && method === 'GET') { + const name = parsedUrl.query.name as string; + const key = parsedUrl.query.key as string; + const s3 = s3Sources.get(name); + if (!s3) return sendError(res, `S3 source not found: ${name}`, 404); + if (!key) return sendError(res, 'Missing key parameter', 400); + const content = await s3.getObject(key); + const lines = content.split('\n').filter(l => l.trim() !== ''); + const entries = lines.map((line, i) => ({ + line, + lineNumber: i + 1, + source: `s3://${name}/${key}`, + timestamp: extractTimestamp(line), + level: extractLevel(line), + })); + return sendJson(res, entries); + } + + // DELETE /api/s3/remove?name=... + if (pathname === '/api/s3/remove' && method === 'DELETE') { + const name = parsedUrl.query.name as string; + if (!name) return sendError(res, 'Missing name parameter', 400); + s3Sources.delete(name); + return sendJson(res, { ok: true }); + } + + // ---- Remote Collector endpoints (viewer reads from remote collector) ---- + + // GET /api/remote/streams + if (pathname === '/api/remote/streams' && method === 'GET') { + if (!REMOTE_COLLECTOR_URL) return sendJson(res, []); + try { + const streams = await fetchRemote('/collector/streams'); + return sendJson(res, streams); + } catch (err) { + return sendError(res, `Cannot reach remote collector: ${(err as Error).message}`); + } + } + + // GET /api/remote/stream/:id?tail=N + const remoteStreamMatch = pathname.match(/^\/api\/remote\/stream\/([a-zA-Z0-9_\-\.]+)$/); + if (remoteStreamMatch && method === 'GET') { + const streamId = remoteStreamMatch[1]; + const tail = parsedUrl.query.tail as string | undefined; + const tailParam = tail ? `?tail=${tail}` : ''; + try { + const data = await fetchRemote(`/collector/stream/${streamId}${tailParam}`); + // Convert to LogEntry format + const lines: string[] = data.lines || []; + const entries = lines.map((line: string, i: number) => ({ + line, + lineNumber: i + 1, + source: `collector://${streamId}`, + timestamp: extractTimestamp(line), + level: extractLevel(line), + })); + return sendJson(res, entries); + } catch (err) { + return sendError(res, (err as Error).message); + } + } + + // ---- Collector streams as log source (local) ---- + + // GET /api/collector/streams + if (pathname === '/api/collector/streams' && method === 'GET') { + if (!collector) return sendJson(res, []); + return sendJson(res, collector.getStreams()); + } + + // GET /api/collector/stream/:id + const localStreamMatch = pathname.match(/^\/api\/collector\/stream\/([a-zA-Z0-9_\-\.]+)$/); + if (localStreamMatch && method === 'GET') { + const streamId = localStreamMatch[1]; + if (!collector) return sendError(res, 'Collector not enabled', 400); + try { + const tail = parsedUrl.query.tail as string | undefined; + const lines = collector.readStream(streamId, tail ? parseInt(tail, 10) : undefined); + const entries = lines.map((line, i) => ({ + line, + lineNumber: i + 1, + source: `stream://${streamId}`, + timestamp: extractTimestamp(line), + level: extractLevel(line), + })); + return sendJson(res, entries); + } catch (err) { + return sendError(res, (err as Error).message, 404); + } + } + + // POST /api/config/save - Save config to file + if (pathname === '/api/config/save' && method === 'POST') { + const body = JSON.parse(await readBody(req)); + saveConfigFile(body); + return sendJson(res, { ok: true }); + } + + return sendError(res, 'Not found', 404); + } catch (err) { + console.error('API error:', err); + return sendError(res, (err as Error).message); + } + } + + // ---- Static Files ---- + const webDir = path.join(__dirname, '..', 'src', 'web'); + let filePath: string; + + // Serve collector UI when in collector mode, monitor UI when in monitor mode + if (pathname === '/' || pathname === '/index.html') { + if (MODE === 'collector') { + filePath = path.join(webDir, 'collector.html'); + } else if (MODE === 'monitor') { + filePath = path.join(webDir, 'monitor.html'); + } else { + filePath = path.join(webDir, 'index.html'); + } + } else { + filePath = path.join(webDir, pathname); + } + + const webRoot = path.resolve(webDir); + const resolvedPath = path.resolve(filePath); + if (!resolvedPath.startsWith(webRoot)) { + res.writeHead(403); res.end('Forbidden'); return; + } + + try { + if (!fs.existsSync(resolvedPath) || fs.statSync(resolvedPath).isDirectory()) { + res.writeHead(404); res.end('Not found'); return; + } + const ext = path.extname(resolvedPath); + const contentType = MIME_TYPES[ext] || 'application/octet-stream'; + res.writeHead(200, { 'Content-Type': contentType }); + res.end(fs.readFileSync(resolvedPath)); + } catch { + res.writeHead(500); res.end('Internal server error'); + } +}); + +// Helper functions +function extractTimestamp(line: string): string | null { + const patterns = [ + /(\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:?\d{2})?)/, + /^([A-Z][a-z]{2}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2})/, + /\[(\d{2}\/[A-Z][a-z]{2}\/\d{4}:\d{2}:\d{2}:\d{2}\s[+-]\d{4})\]/, + ]; + for (const p of patterns) { const m = line.match(p); if (m) return m[1]; } + return null; +} + +function extractLevel(line: string): string | null { + const upper = line.toUpperCase(); + for (const level of ['FATAL', 'ERROR', 'WARN', 'WARNING', 'INFO', 'DEBUG', 'TRACE']) { + if (new RegExp(`\\b${level}\\b`).test(upper)) return level === 'WARNING' ? 'WARN' : level; + } + return null; +} + +server.listen(PORT, HOST, () => { + console.log(''); + console.log(' ╔══════════════════════════════════════════════════╗'); + console.log(` ║ 📋 Log Viewer - Mode: ${MODE.toUpperCase().padEnd(24)}║`); + console.log(' ╠══════════════════════════════════════════════════╣'); + console.log(` ║ URL: http://${HOST}:${PORT} ║`); + console.log(` ║ Sources: ${String(logSourceManager.getSources().length).padEnd(3)} file(s) ║`); + console.log(` ║ S3 Sources: ${String(s3Sources.size).padEnd(3)} configured ║`); + console.log(` ║ Collector: ${collector ? 'ACTIVE' : 'OFF'} ║`); + console.log(` ║ Monitor: ${monitor ? 'ACTIVE' : 'OFF'} ║`); + if (REMOTE_COLLECTOR_URL) { + console.log(` ║ Remote: ${REMOTE_COLLECTOR_URL.substring(0, 30).padEnd(30)} ║`); + } + console.log(' ╚══════════════════════════════════════════════════╝'); + console.log(''); + if (collector) { + console.log(' Collector endpoints:'); + console.log(` POST http://${HOST}:${PORT}/collect/ (plain text, one line per line)`); + console.log(` POST http://${HOST}:${PORT}/collect//json (JSON array of entries)`); + console.log(''); + } +}); diff --git a/src/web/app.js b/src/web/app.js new file mode 100644 index 0000000..824c7e8 --- /dev/null +++ b/src/web/app.js @@ -0,0 +1,521 @@ +// ============================================ +// Log Viewer - Web Frontend (with S3 + Collector) +// ============================================ +(function () { + 'use strict'; + + const API = ''; + + const state = { + allEntries: [], + filteredEntries: [], + sources: [], + activeSource: 'ALL', + activeLevel: 'ALL', + searchQuery: '', + regexMode: false, + caseSensitive: false, + tailMode: true, + wordWrap: false, + showTimestamps: true, + showSourceColumn: true, + bookmarks: new Set(), + zoomLevel: 100, + theme: 'dark', + refreshInterval: 3000, + refreshTimer: null, + isLoading: false, + contextMenu: null, + mode: 'both', + s3Sources: [], + collectorStreams: [], + remoteStreams: [], + }; + + const $ = (s) => document.querySelector(s); + const $$ = (s) => document.querySelectorAll(s); + + const el = { + logOutput: $('#log-output'), + searchInput: $('#search-input'), + searchCount: $('#search-count'), + levelFilter: $('#level-filter'), + sourceFilter: $('#source-filter'), + sourceList: $('#source-list'), + emptySources: $('#empty-sources'), + welcomeMessage: $('#welcome-message'), + statLines: $('#stat-lines'), + statFiltered: $('#stat-filtered'), + statusMessage: $('#status-message'), + statusTail: $('#status-tail'), + statusWrap: $('#status-wrap'), + statusRegex: $('#status-regex'), + statusZoom: $('#status-zoom'), + currentSourceName: $('#current-source-name'), + currentSourceInfo: $('#current-source-info'), + themeIcon: $('#theme-icon'), + sidebar: $('#sidebar'), + exportModal: $('#export-modal'), + gotoModal: $('#goto-modal'), + gotoInput: $('#goto-input'), + addSourceModal: $('#add-source-modal'), + addSourceInput: $('#add-source-input'), + }; + + // ---- API helpers ---- + async function api(path, opts = {}) { + const res = await fetch(API + path, { headers: { 'Content-Type': 'application/json' }, ...opts }); + return res.json(); + } + + // ---- Init ---- + async function init() { + try { + const config = await api('/api/config'); + state.theme = config.theme || 'dark'; + state.tailMode = config.tailMode !== false; + state.refreshInterval = config.refreshInterval || 3000; + state.activeLevel = config.defaultLevel || 'ALL'; + state.mode = config.mode || 'both'; + applyTheme(); + el.levelFilter.value = state.activeLevel; + + // Load mode info + const modeInfo = await api('/api/mode'); + state.s3Sources = modeInfo.s3Sources || []; + + await loadSources(); + await loadCollectorStreams(); + await loadRemoteStreams(); + + if (state.sources.length > 0 || state.collectorStreams.length > 0) await loadAllLogs(); + + setupEvents(); + startAutoRefresh(); + updateStatusBar(); + setStatus(`Ready · Mode: ${state.mode.toUpperCase()}`); + } catch (err) { + setStatus('Error: ' + err.message); + } + } + + // ---- Sources ---- + async function loadSources() { + state.sources = await api('/api/sources'); + renderSourceList(); + updateSourceFilter(); + } + + async function loadCollectorStreams() { + try { state.collectorStreams = await api('/api/collector/streams'); } catch { state.collectorStreams = []; } + } + + async function loadRemoteStreams() { + try { state.remoteStreams = await api('/api/remote/streams'); } catch { state.remoteStreams = []; } + } + + function renderSourceList() { + const list = el.sourceList; + list.querySelectorAll('.source-item').forEach((e) => e.remove()); + list.querySelectorAll('.source-section-header').forEach((e) => e.remove()); + + const allSources = []; + + // File sources + if (state.sources.length > 0) { + addSectionHeader(list, '📁 Files'); + for (const src of state.sources) { + allSources.push({ type: 'file', ...src }); + addSourceItem(list, src.displayName, src.path, src.exists, fmtSize(src.size), src.type === 'text' ? '📄' : '📦', () => selectSource(src.path), async () => { + await api('/api/sources?path=' + encodeURIComponent(src.path), { method: 'DELETE' }); + await loadSources(); + }); + } + } + + // S3 sources + if (state.s3Sources.length > 0) { + addSectionHeader(list, '☁️ S3'); + for (const name of state.s3Sources) { + addSourceItem(list, name, `s3://${name}`, true, 'S3', '☁️', () => loadS3Source(name), async () => { + await api('/api/s3/remove?name=' + encodeURIComponent(name), { method: 'DELETE' }); + state.s3Sources = state.s3Sources.filter(n => n !== name); + renderSourceList(); + }); + } + } + + // Collector streams (local) + if (state.collectorStreams.length > 0) { + addSectionHeader(list, '📡 Collector Streams'); + for (const stream of state.collectorStreams) { + addSourceItem(list, stream.name || stream.id, `stream://${stream.id}`, true, `${stream.lineCount} lines`, '📡', () => loadCollectorStream(stream.id), async () => { + await fetch(`/collector/stream/${stream.id}`, { method: 'DELETE' }); + await loadCollectorStreams(); + renderSourceList(); + }); + } + } + + // Remote collector streams + if (state.remoteStreams.length > 0) { + addSectionHeader(list, '🌐 Remote Streams'); + for (const stream of state.remoteStreams) { + addSourceItem(list, stream.name || stream.id, `remote://${stream.id}`, true, `${stream.lineCount} lines`, '🌐', () => loadRemoteStream(stream.id), null); + } + } + + el.emptySources.style.display = (state.sources.length === 0 && state.collectorStreams.length === 0 && state.remoteStreams.length === 0 && state.s3Sources.length === 0) ? 'block' : 'none'; + } + + function addSectionHeader(list, text) { + const h = document.createElement('div'); + h.className = 'source-section-header'; + h.textContent = text; + h.style.cssText = 'padding:6px 10px;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;margin-top:8px;'; + list.appendChild(h); + } + + function addSourceItem(list, name, id, online, meta, icon, onClick, onRemove) { + const item = document.createElement('div'); + item.className = 'source-item' + (state.activeSource === id ? ' active' : ''); + item.innerHTML = ` + + ${icon} +
+
${name}
+
${meta}
+
+ ${onRemove ? '' : ''}`; + item.addEventListener('click', (e) => { if (!e.target.closest('.source-remove')) onClick(); }); + if (onRemove) item.querySelector('.source-remove').addEventListener('click', (e) => { e.stopPropagation(); onRemove(); }); + list.appendChild(item); + } + + function updateSourceFilter() { + const sel = el.sourceFilter; + const cur = sel.value; + while (sel.options.length > 1) sel.remove(1); + for (const src of state.sources) { const o = document.createElement('option'); o.value = src.path; o.textContent = src.displayName; sel.appendChild(o); } + for (const s of state.collectorStreams) { const o = document.createElement('option'); o.value = `stream://${s.id}`; o.textContent = `📡 ${s.name || s.id}`; sel.appendChild(o); } + for (const s of state.remoteStreams) { const o = document.createElement('option'); o.value = `remote://${s.id}`; o.textContent = `🌐 ${s.name || s.id}`; sel.appendChild(o); } + sel.value = cur || 'ALL'; + } + + async function selectSource(p) { + state.activeSource = p; + el.currentSourceName.textContent = p === 'ALL' ? 'All Sources' : p.split(/[/\\]/).pop(); + el.sourceFilter.value = p; + renderSourceList(); + if (p === 'ALL') await loadAllLogs(); + else await loadLogForSource(p); + } + + // ---- S3 Loading ---- + async function loadS3Source(name) { + state.activeSource = `s3://${name}`; + el.currentSourceName.textContent = `S3: ${name}`; + setStatus('Loading S3 objects...'); + try { + const objects = await api(`/api/s3/list?name=${encodeURIComponent(name)}`); + if (objects.length === 0) { setStatus('No objects found'); state.allEntries = []; applyFilters(); return; } + // Load first object (or all small ones) + let allEntries = []; + for (const obj of objects.slice(0, 10)) { // Limit to 10 files + try { + const entries = await api(`/api/s3/read?name=${encodeURIComponent(name)}&key=${encodeURIComponent(obj.key)}`); + allEntries.push(...entries); + } catch (e) { console.warn('S3 read error:', obj.key, e); } + } + state.allEntries = allEntries; + applyFilters(); + setStatus(`Loaded ${allEntries.length} lines from S3 (${objects.length} objects)`); + } catch (e) { setStatus('S3 Error: ' + e.message); } + renderSourceList(); + } + + // ---- Collector Stream Loading ---- + async function loadCollectorStream(streamId) { + state.activeSource = `stream://${streamId}`; + el.currentSourceName.textContent = `Stream: ${streamId}`; + setStatus('Loading stream...'); + try { + const entries = await api(`/api/collector/stream/${streamId}`); + state.allEntries = entries; + applyFilters(); + setStatus(`${entries.length} lines from stream ${streamId}`); + } catch (e) { setStatus('Error: ' + e.message); } + renderSourceList(); + } + + async function loadRemoteStream(streamId) { + state.activeSource = `remote://${streamId}`; + el.currentSourceName.textContent = `Remote: ${streamId}`; + setStatus('Loading remote stream...'); + try { + const entries = await api(`/api/remote/stream/${streamId}`); + state.allEntries = entries; + applyFilters(); + setStatus(`${entries.length} lines from remote ${streamId}`); + } catch (e) { setStatus('Error: ' + e.message); } + renderSourceList(); + } + + // ---- Log Loading ---- + async function loadAllLogs() { + if (state.isLoading) return; + state.isLoading = true; + setStatus('Loading...'); + try { + state.allEntries = await api('/api/logs'); + applyFilters(); + setStatus(`${state.allEntries.length} lines from ${state.sources.length} source(s)`); + } catch (e) { setStatus('Error: ' + e.message); } + finally { state.isLoading = false; } + } + + async function loadLogForSource(p) { + if (state.isLoading) return; + state.isLoading = true; + setStatus('Loading...'); + try { + state.allEntries = await api('/api/logs?source=' + encodeURIComponent(p)); + applyFilters(); + setStatus(`${state.allEntries.length} lines`); + } catch (e) { setStatus('Error: ' + e.message); } + finally { state.isLoading = false; } + } + + // ---- Filtering ---- + function applyFilters() { + let entries = [...state.allEntries]; + if (state.activeLevel !== 'ALL') entries = entries.filter((e) => e.level === state.activeLevel); + + if (state.searchQuery) { + const q = state.searchQuery; + let matcher; + if (state.regexMode) { + try { matcher = new RegExp(q, state.caseSensitive ? 'g' : 'gi'); } + catch { el.searchInput.style.borderColor = 'var(--error)'; el.searchCount.textContent = 'Invalid regex'; state.filteredEntries = entries; renderLogs(); return; } + } + el.searchInput.style.borderColor = ''; + entries = entries.filter((e) => { + if (state.regexMode) { matcher.lastIndex = 0; return matcher.test(e.line); } + const line = state.caseSensitive ? e.line : e.line.toLowerCase(); + return line.includes(state.caseSensitive ? q : q.toLowerCase()); + }); + el.searchCount.textContent = `${entries.length} match${entries.length !== 1 ? 'es' : ''}`; + } else { el.searchCount.textContent = ''; el.searchInput.style.borderColor = ''; } + + state.filteredEntries = entries; + renderLogs(); + updateStats(); + } + + // ---- Rendering ---- + function renderLogs() { + const out = el.logOutput; + const atBottom = isAtBottom(); + if (el.welcomeMessage) el.welcomeMessage.style.display = state.allEntries.length > 0 ? 'none' : 'flex'; + const frag = document.createDocumentFragment(); + for (const entry of state.filteredEntries) frag.appendChild(mkLine(entry)); + out.querySelectorAll('.log-line').forEach((e) => e.remove()); + out.appendChild(frag); + if (state.tailMode && atBottom) scrollBottom(); + } + + function mkLine(entry) { + const div = document.createElement('div'); + div.className = 'log-line'; + div.dataset.lineNumber = entry.lineNumber; + if (entry.level) { + const ll = entry.level.toLowerCase(); + if (ll === 'error' || ll === 'fatal') div.classList.add('line-error'); + else if (ll === 'warn' || ll === 'warning') div.classList.add('line-warn'); + } + if (state.bookmarks.has(`${entry.source}:${entry.lineNumber}`)) div.classList.add('bookmarked'); + + const ln = document.createElement('span'); ln.className = 'log-line-number'; ln.textContent = entry.lineNumber; ln.addEventListener('click', () => toggleBookmark(entry)); div.appendChild(ln); + + if (state.showSourceColumn && state.activeSource === 'ALL') { + const sc = document.createElement('span'); sc.className = 'log-line-source'; sc.textContent = entry.source.split(/[/\\]/).pop(); sc.title = entry.source; div.appendChild(sc); + } + if (state.showTimestamps && entry.timestamp) { + const ts = document.createElement('span'); ts.className = 'log-line-timestamp'; ts.textContent = entry.timestamp; div.appendChild(ts); + } + if (entry.level) { + const lv = document.createElement('span'); lv.className = `log-line-level level-${entry.level.toLowerCase()}`; lv.textContent = entry.level; div.appendChild(lv); + } + const ct = document.createElement('span'); ct.className = 'log-line-content'; ct.innerHTML = state.searchQuery ? highlight(esc(entry.line)) : esc(entry.line); div.appendChild(ct); + + div.addEventListener('contextmenu', (e) => { + e.preventDefault(); + showCtx(e, [ + { label: '📋 Copy Line', action: () => navigator.clipboard.writeText(entry.line) }, + { label: '🔖 Toggle Bookmark', action: () => toggleBookmark(entry) }, + { sep: true }, + { label: '🔍 Filter this level', action: () => { if (entry.level) { state.activeLevel = entry.level; el.levelFilter.value = entry.level; applyFilters(); } } }, + { sep: true }, + { label: '📋 Copy all visible', action: () => navigator.clipboard.writeText(state.filteredEntries.map((e) => e.line).join('\n')) }, + ]); + }); + return div; + } + + function highlight(html) { + if (!state.searchQuery) return html; + try { + const p = state.regexMode ? state.searchQuery : state.searchQuery.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + return html.replace(new RegExp(`(${p})`, state.caseSensitive ? 'g' : 'gi'), '$1'); + } catch { return html; } + } + + function toggleBookmark(e) { const k = `${e.source}:${e.lineNumber}`; state.bookmarks.has(k) ? state.bookmarks.delete(k) : state.bookmarks.add(k); renderLogs(); } + + // ---- Context Menu ---- + function showCtx(event, items) { + hideCtx(); + const menu = document.createElement('div'); menu.className = 'context-menu'; + for (const it of items) { + if (it.sep) { const s = document.createElement('div'); s.className = 'context-menu-separator'; menu.appendChild(s); } + else { const mi = document.createElement('div'); mi.className = 'context-menu-item'; mi.textContent = it.label; mi.addEventListener('click', () => { it.action(); hideCtx(); }); menu.appendChild(mi); } + } + document.body.appendChild(menu); + menu.style.left = Math.min(event.clientX, innerWidth - menu.offsetWidth - 10) + 'px'; + menu.style.top = Math.min(event.clientY, innerHeight - menu.offsetHeight - 10) + 'px'; + state.contextMenu = menu; + setTimeout(() => document.addEventListener('click', hideCtx, { once: true }), 0); + } + function hideCtx() { if (state.contextMenu) { state.contextMenu.remove(); state.contextMenu = null; } } + + // ---- Auto Refresh ---- + function startAutoRefresh() { + if (state.refreshTimer) clearInterval(state.refreshTimer); + state.refreshTimer = setInterval(async () => { + if (!state.tailMode || state.isLoading) return; + const prevCount = state.allEntries.length; + const src = state.activeSource; + if (src === 'ALL') await loadAllLogs(); + else if (src.startsWith('stream://')) await loadCollectorStream(src.replace('stream://', '')); + else if (src.startsWith('remote://')) await loadRemoteStream(src.replace('remote://', '')); + else if (!src.startsWith('s3://')) await loadLogForSource(src); + + // Highlight new lines + if (state.allEntries.length > prevCount) { + const newCount = state.allEntries.length - prevCount; + const logLines = el.logOutput.querySelectorAll('.log-line'); + const startIdx = Math.max(0, logLines.length - newCount); + for (let i = startIdx; i < logLines.length; i++) { + logLines[i].classList.add('new-line'); + } + } + + // Also refresh stream list + await loadCollectorStreams(); + await loadRemoteStreams(); + }, state.refreshInterval); + } + + // ---- Theme / Zoom ---- + function toggleTheme() { state.theme = state.theme === 'dark' ? 'light' : 'dark'; applyTheme(); } + function applyTheme() { document.body.className = `theme-${state.theme}`; el.themeIcon.textContent = state.theme === 'dark' ? '🌙' : '☀️'; } + function zoomIn() { state.zoomLevel = Math.min(state.zoomLevel + 10, 200); applyZoom(); } + function zoomOut() { state.zoomLevel = Math.max(state.zoomLevel - 10, 50); applyZoom(); } + function zoomReset() { state.zoomLevel = 100; applyZoom(); } + function applyZoom() { el.logOutput.style.fontSize = (12 * state.zoomLevel / 100) + 'px'; el.statusZoom.textContent = state.zoomLevel + '%'; } + + // ---- Helpers ---- + function esc(t) { const d = document.createElement('div'); d.textContent = t; return d.innerHTML; } + function isAtBottom() { const e = el.logOutput; return e.scrollHeight - e.scrollTop - e.clientHeight < 50; } + function scrollBottom() { el.logOutput.scrollTop = el.logOutput.scrollHeight; } + function scrollTop() { el.logOutput.scrollTop = 0; } + function setStatus(m) { el.statusMessage.textContent = m; } + function updateStats() { el.statLines.textContent = `${state.allEntries.length} lines`; el.statFiltered.textContent = `${state.filteredEntries.length} shown`; } + function updateStatusBar() { el.statusTail.classList.toggle('active', state.tailMode); el.statusWrap.classList.toggle('active', state.wordWrap); el.statusRegex.classList.toggle('active', state.regexMode); } + function fmtSize(b) { if (!b) return '0 B'; const u = ['B','KB','MB','GB']; const i = Math.floor(Math.log(b)/Math.log(1024)); return (b/Math.pow(1024,i)).toFixed(i>0?1:0)+' '+u[i]; } + function showModal(m) { m.hidden = false; const inp = m.querySelector('input'); if (inp) inp.focus(); } + function hideModal(m) { m.hidden = true; } + function downloadFile(content, filename) { const blob = new Blob([content], { type: 'text/plain' }); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = filename; a.click(); URL.revokeObjectURL(a.href); } + + // ---- Events ---- + function setupEvents() { + // Add source (file path) + $('#btn-add-source').addEventListener('click', () => { el.addSourceInput.value = ''; showModal(el.addSourceModal); }); + $('#close-add-source').addEventListener('click', () => hideModal(el.addSourceModal)); + $('#add-source-btn').addEventListener('click', async () => { + const p = el.addSourceInput.value.trim(); + if (!p) return; + await api('/api/sources', { method: 'POST', body: JSON.stringify({ path: p }) }); + hideModal(el.addSourceModal); + await loadSources(); await loadAllLogs(); + }); + if (el.addSourceInput) el.addSourceInput.addEventListener('keydown', (e) => { if (e.key === 'Enter') $('#add-source-btn').click(); }); + + // Add S3 source + const btnS3 = $('#btn-add-s3'); + if (btnS3) { + btnS3.addEventListener('click', () => showModal($('#s3-modal'))); + $('#close-s3').addEventListener('click', () => hideModal($('#s3-modal'))); + $('#add-s3-btn').addEventListener('click', async () => { + const name = $('#s3-name').value.trim(); + const bucket = $('#s3-bucket').value.trim(); + const prefix = $('#s3-prefix').value.trim(); + const accessKeyId = $('#s3-access-key').value.trim(); + const secretAccessKey = $('#s3-secret-key').value.trim(); + const region = $('#s3-region').value.trim(); + const endpoint = $('#s3-endpoint').value.trim(); + if (!name || !bucket || !accessKeyId || !secretAccessKey || !region) { alert('Fill all required fields'); return; } + await api('/api/s3/add', { method: 'POST', body: JSON.stringify({ name, bucket, prefix, accessKeyId, secretAccessKey, region, endpoint: endpoint || undefined }) }); + state.s3Sources.push(name); + hideModal($('#s3-modal')); + renderSourceList(); + }); + } + + $('#btn-reload').addEventListener('click', async () => { await loadSources(); await loadCollectorStreams(); await loadRemoteStreams(); renderSourceList(); if (state.activeSource === 'ALL') await loadAllLogs(); else await selectSource(state.activeSource); }); + + $('#btn-tail').addEventListener('click', () => { state.tailMode = !state.tailMode; $('#btn-tail').classList.toggle('active', state.tailMode); updateStatusBar(); if (state.tailMode) scrollBottom(); }); + $('#btn-wrap').addEventListener('click', () => { state.wordWrap = !state.wordWrap; $('#btn-wrap').classList.toggle('active', state.wordWrap); el.logOutput.classList.toggle('word-wrap', state.wordWrap); updateStatusBar(); }); + $('#btn-timestamps').addEventListener('click', () => { state.showTimestamps = !state.showTimestamps; $('#btn-timestamps').classList.toggle('active', state.showTimestamps); renderLogs(); }); + + el.searchInput.addEventListener('input', () => { state.searchQuery = el.searchInput.value; applyFilters(); }); + $('#btn-regex-toggle').addEventListener('click', () => { state.regexMode = !state.regexMode; $('#btn-regex-toggle').classList.toggle('active', state.regexMode); updateStatusBar(); if (state.searchQuery) applyFilters(); }); + $('#btn-case-toggle').addEventListener('click', () => { state.caseSensitive = !state.caseSensitive; $('#btn-case-toggle').classList.toggle('active', state.caseSensitive); if (state.searchQuery) applyFilters(); }); + + el.levelFilter.addEventListener('change', () => { state.activeLevel = el.levelFilter.value; applyFilters(); }); + el.sourceFilter.addEventListener('change', () => selectSource(el.sourceFilter.value)); + + $('#btn-theme').addEventListener('click', toggleTheme); + $('#btn-export').addEventListener('click', () => showModal(el.exportModal)); + $('#close-export').addEventListener('click', () => hideModal(el.exportModal)); + $('#export-txt').addEventListener('click', () => { const e = $('#export-filtered-only').checked ? state.filteredEntries : state.allEntries; downloadFile(e.map(x => x.line).join('\n'), 'logs.txt'); hideModal(el.exportModal); }); + $('#export-json').addEventListener('click', () => { const e = $('#export-filtered-only').checked ? state.filteredEntries : state.allEntries; downloadFile(JSON.stringify(e, null, 2), 'logs.json'); hideModal(el.exportModal); }); + + $('#btn-toggle-sidebar').addEventListener('click', () => { el.sidebar.classList.toggle('collapsed'); $('#btn-toggle-sidebar').textContent = el.sidebar.classList.contains('collapsed') ? '▶' : '◀'; }); + $('#btn-scroll-top').addEventListener('click', scrollTop); + $('#btn-scroll-bottom').addEventListener('click', scrollBottom); + $('#btn-clear-bookmarks').addEventListener('click', () => { state.bookmarks.clear(); renderLogs(); }); + + $('#close-goto').addEventListener('click', () => hideModal(el.gotoModal)); + $('#goto-btn').addEventListener('click', () => { const n = parseInt(el.gotoInput.value, 10); if (n > 0) { const t = el.logOutput.querySelector(`[data-line-number="${n}"]`); if (t) { t.scrollIntoView({ behavior: 'smooth', block: 'center' }); t.style.background = 'var(--highlight-bg)'; setTimeout(() => t.style.background = '', 2000); } hideModal(el.gotoModal); } }); + if (el.gotoInput) el.gotoInput.addEventListener('keydown', (e) => { if (e.key === 'Enter') $('#goto-btn').click(); }); + + $$('.modal-overlay').forEach((o) => o.addEventListener('click', (e) => { if (e.target === o) hideModal(o); })); + + // Keyboard + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape') { $$('.modal-overlay').forEach((m) => hideModal(m)); if (state.searchQuery) { state.searchQuery = ''; el.searchInput.value = ''; applyFilters(); } hideCtx(); return; } + if (e.ctrlKey && e.key === 'f') { e.preventDefault(); el.searchInput.focus(); el.searchInput.select(); } + if (e.ctrlKey && e.shiftKey && e.key === 'F') { e.preventDefault(); state.regexMode = true; $('#btn-regex-toggle').classList.add('active'); updateStatusBar(); el.searchInput.focus(); } + if (e.ctrlKey && e.key === 'g') { e.preventDefault(); showModal(el.gotoModal); el.gotoInput.value = ''; } + if (e.ctrlKey && e.shiftKey && e.key === 'T') { e.preventDefault(); toggleTheme(); } + if (e.ctrlKey && e.key === '=') { e.preventDefault(); zoomIn(); } + if (e.ctrlKey && e.key === '-') { e.preventDefault(); zoomOut(); } + if (e.ctrlKey && e.key === '0') { e.preventDefault(); zoomReset(); } + if (e.key === 'Home' && !e.target.matches('input')) { e.preventDefault(); scrollTop(); } + if (e.key === 'End' && !e.target.matches('input')) { e.preventDefault(); scrollBottom(); } + }); + } + + init(); +})(); diff --git a/src/web/collector-app.js b/src/web/collector-app.js new file mode 100644 index 0000000..80c3d37 --- /dev/null +++ b/src/web/collector-app.js @@ -0,0 +1,320 @@ +// ============================================ +// Log Collector - Web UI +// ============================================ +(function () { + 'use strict'; + + const state = { + streams: [], + activeStream: null, + config: null, + liveFeed: [], + maxFeedLines: 500, + paused: false, + lastLineCount: 0, + linesPerMinute: 0, + startTime: Date.now(), + theme: 'dark', + pollTimer: null, + rateHistory: [], + }; + + const $ = (s) => document.querySelector(s); + const $$ = (s) => document.querySelectorAll(s); + + // ---- Init ---- + async function init() { + await loadConfig(); + await loadStreams(); + setupTabs(); + setupEvents(); + startPolling(); + updateUptime(); + setInterval(updateUptime, 1000); + setInterval(calcRate, 5000); + } + + // ---- API ---- + async function api(path, opts = {}) { + const res = await fetch(path, { headers: { 'Content-Type': 'application/json' }, ...opts }); + return res.json(); + } + + // ---- Config ---- + async function loadConfig() { + try { + state.config = await api('/collector/config'); + applyConfigToUI(); + } catch (e) { console.error('Config load error:', e); } + } + + function applyConfigToUI() { + const c = state.config; + if (!c) return; + $('#cfg-storage-dir').value = c.storageDir || './collector-data'; + $('#cfg-max-streams').value = c.maxStreams || 50; + $('#cfg-max-lines').value = c.maxLinesPerStream || 100000; + $('#cfg-persist').checked = c.persistToDisk !== false; + $('#cfg-udp-enabled').checked = c.udpEnabled !== false; + $('#cfg-udp-port').value = c.udpPort || 5140; + $('#udp-port').textContent = c.udpPort || 5140; + if (c.rotation) { + $('#cfg-rot-size').value = c.rotation.maxSizeBytes || 5242880; + $('#cfg-rot-age').value = c.rotation.maxAgeMs || 600000; + $('#cfg-rot-compression').value = c.rotation.compression || 'gzip'; + $('#cfg-rot-ext').value = c.rotation.fileExtension || '.log'; + } + renderForwardTargets(); + } + + // ---- Streams ---- + async function loadStreams() { + try { + state.streams = await api('/collector/streams'); + renderStreams(); + updateStats(); + } catch (e) { console.error('Stream load error:', e); } + } + + function renderStreams() { + const list = $('#stream-list'); + list.innerHTML = ''; + $('#no-streams').style.display = state.streams.length === 0 ? 'block' : 'none'; + + for (const s of state.streams) { + const card = document.createElement('div'); + card.className = 'stream-card' + (state.activeStream === s.id ? ' active' : ''); + const ago = s.lastReceived ? timeSince(new Date(s.lastReceived)) : 'never'; + card.innerHTML = ` +
${s.name || s.id}
+
+ ${s.lineCount} lines + ${ago} + ${fmtBytes(s.currentFileSize || 0)} +
`; + card.addEventListener('click', () => selectStream(s.id)); + list.appendChild(card); + } + } + + function selectStream(id) { + state.activeStream = state.activeStream === id ? null : id; + $('#live-stream-label').textContent = state.activeStream ? `Stream: ${state.activeStream}` : 'All Streams'; + renderStreams(); + } + + function updateStats() { + const total = state.streams.reduce((sum, s) => sum + s.lineCount, 0); + $('#stat-streams').textContent = state.streams.length; + $('#stat-lines').textContent = total > 9999 ? Math.floor(total / 1000) + 'k' : total; + $('#stat-rate').textContent = state.linesPerMinute; + } + + function calcRate() { + const total = state.streams.reduce((sum, s) => sum + s.lineCount, 0); + const diff = total - state.lastLineCount; + state.lastLineCount = total; + // Lines per minute (measured over 5s intervals) + state.linesPerMinute = Math.round(diff * 12); + updateStats(); + } + + // ---- Live Feed ---- + async function pollLiveFeed() { + if (state.paused) return; + try { + const streams = await api('/collector/streams'); + const oldStreams = new Map(state.streams.map(s => [s.id, s])); + state.streams = streams; + + for (const s of streams) { + const old = oldStreams.get(s.id); + if (old && s.lineCount > old.lineCount) { + // New lines arrived + const newCount = s.lineCount - old.lineCount; + const tail = Math.min(newCount, 20); + try { + const data = await api(`/collector/stream/${s.id}?tail=${tail}`); + if (data.lines) { + for (const line of data.lines) { + if (state.activeStream && state.activeStream !== s.id) continue; + addLiveLine(s.id, line); + } + } + } catch { } + } + } + + renderStreams(); + updateStats(); + } catch { } + } + + function addLiveLine(streamId, line) { + const feed = $('#live-feed'); + const div = document.createElement('div'); + div.className = 'live-line new'; + + // Detect level + const upper = line.toUpperCase(); + if (/\bERROR\b|\bFATAL\b/.test(upper)) div.classList.add('level-error'); + else if (/\bWARN\b/.test(upper)) div.classList.add('level-warn'); + else if (/\bINFO\b/.test(upper)) div.classList.add('level-info'); + + const prefix = document.createElement('span'); + prefix.style.cssText = 'color:var(--text-muted);margin-right:8px;font-size:10px;'; + prefix.textContent = `[${streamId}]`; + div.appendChild(prefix); + div.appendChild(document.createTextNode(line)); + + feed.appendChild(div); + state.liveFeed.push(div); + + // Remove "new" highlight after 3s + setTimeout(() => div.classList.remove('new'), 3000); + + // Limit feed size + while (state.liveFeed.length > state.maxFeedLines) { + const old = state.liveFeed.shift(); + if (old && old.parentNode) old.parentNode.removeChild(old); + } + + // Auto-scroll + feed.scrollTop = feed.scrollHeight; + } + + function startPolling() { + state.pollTimer = setInterval(pollLiveFeed, 1500); + } + + // ---- Forward Targets ---- + function renderForwardTargets() { + const list = $('#forward-list'); + const targets = state.config?.forwardTargets || []; + list.innerHTML = ''; + $('#no-forwards').style.display = targets.length === 0 ? 'block' : 'none'; + + for (let i = 0; i < targets.length; i++) { + const t = targets[i]; + const div = document.createElement('div'); + div.className = 'forward-target'; + div.innerHTML = ` +
${t.type.toUpperCase()} → ${t.url || t.path || t.host + ':' + t.port || 'stdout'}
+ `; + div.querySelector('button').addEventListener('click', () => removeForwardTarget(i)); + list.appendChild(div); + } + } + + function removeForwardTarget(idx) { + if (!state.config) return; + state.config.forwardTargets.splice(idx, 1); + renderForwardTargets(); + } + + // ---- Tabs ---- + function setupTabs() { + $$('.tab').forEach(tab => { + tab.addEventListener('click', () => { + $$('.tab').forEach(t => t.classList.remove('active')); + $$('.tab-content').forEach(t => t.classList.remove('active')); + tab.classList.add('active'); + $(`#tab-${tab.dataset.tab}`).classList.add('active'); + }); + }); + } + + // ---- Events ---- + function setupEvents() { + $('#btn-theme').addEventListener('click', () => { + state.theme = state.theme === 'dark' ? 'light' : 'dark'; + document.body.className = `theme-${state.theme}`; + $('#btn-theme').textContent = state.theme === 'dark' ? '🌙' : '☀️'; + }); + + $('#btn-clear-feed').addEventListener('click', () => { + $('#live-feed').innerHTML = ''; + state.liveFeed = []; + }); + + $('#btn-pause-feed').addEventListener('click', () => { + state.paused = !state.paused; + $('#btn-pause-feed').textContent = state.paused ? '▶ Resume' : '⏸ Pause'; + }); + + $('#btn-save-config').addEventListener('click', async () => { + const config = { + collector: { + storageDir: $('#cfg-storage-dir').value, + maxStreams: parseInt($('#cfg-max-streams').value, 10), + maxLinesPerStream: parseInt($('#cfg-max-lines').value, 10), + persistToDisk: $('#cfg-persist').checked, + udp: { enabled: $('#cfg-udp-enabled').checked, port: parseInt($('#cfg-udp-port').value, 10) }, + rotation: { + maxSizeBytes: parseInt($('#cfg-rot-size').value, 10), + maxAgeMs: parseInt($('#cfg-rot-age').value, 10), + compression: $('#cfg-rot-compression').value, + fileExtension: $('#cfg-rot-ext').value, + }, + forwardTargets: state.config?.forwardTargets || [], + }, + }; + try { + await api('/api/config/save', { method: 'POST', body: JSON.stringify(config) }); + const status = $('#save-status'); + status.style.display = 'inline'; + setTimeout(() => status.style.display = 'none', 3000); + } catch (e) { alert('Save failed: ' + e.message); } + }); + + $('#btn-add-forward').addEventListener('click', () => { + if (!state.config) state.config = { forwardTargets: [] }; + if (!state.config.forwardTargets) state.config.forwardTargets = []; + + const target = { + type: $('#fwd-type').value, + format: $('#fwd-format').value, + batchSize: parseInt($('#fwd-batch').value, 10) || 100, + flushIntervalMs: parseInt($('#fwd-flush').value, 10) || 5000, + }; + + const urlVal = $('#fwd-url').value.trim(); + const portVal = $('#fwd-port').value.trim(); + + if (target.type === 'http') target.url = urlVal; + else if (target.type === 'file') target.path = urlVal; + else if (target.type === 'udp') { target.host = urlVal; target.port = parseInt(portVal, 10); } + + state.config.forwardTargets.push(target); + renderForwardTargets(); + $('#fwd-url').value = ''; + $('#fwd-port').value = ''; + }); + } + + // ---- Helpers ---- + function updateUptime() { + const s = Math.floor((Date.now() - state.startTime) / 1000); + const m = Math.floor(s / 60); + const h = Math.floor(m / 60); + $('#uptime').textContent = h > 0 ? `Uptime: ${h}h ${m % 60}m` : m > 0 ? `Uptime: ${m}m ${s % 60}s` : `Uptime: ${s}s`; + } + + function timeSince(date) { + const s = Math.floor((Date.now() - date.getTime()) / 1000); + if (s < 5) return 'just now'; + if (s < 60) return s + 's ago'; + const m = Math.floor(s / 60); + if (m < 60) return m + 'm ago'; + return Math.floor(m / 60) + 'h ago'; + } + + function fmtBytes(b) { + if (!b) return '0 B'; + const u = ['B', 'KB', 'MB', 'GB']; + const i = Math.floor(Math.log(b) / Math.log(1024)); + return (b / Math.pow(1024, i)).toFixed(i > 0 ? 1 : 0) + ' ' + u[i]; + } + + init(); +})(); diff --git a/src/web/collector.html b/src/web/collector.html new file mode 100644 index 0000000..04519a2 --- /dev/null +++ b/src/web/collector.html @@ -0,0 +1,205 @@ + + + + + + Log Collector + + + + +
+
+

📡 Log Collector ACTIVE

+
+ Uptime: 0s + +
+
+ +
+ + + + +
+
+
🔴 Live Feed
+
⚙️ Configuration
+
🔀 Forwarding
+
+ + +
+
+ All Streams +
+ + +
+
+
+
+ + +
+
+
+

General

+
+
+
+
+
+
+
+
+
+ +
+

UDP Receiver

+
+
+
+
+
+ +
+

Log Rotation

+
+
+
+
+
+
+ + +
+
+
+
+ + + +
+
+ + +
+
+

Active Forward Targets

+
+
No forward targets configured.
+ +

Add Target

+
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ + + + diff --git a/src/web/index.html b/src/web/index.html new file mode 100644 index 0000000..6802a2e --- /dev/null +++ b/src/web/index.html @@ -0,0 +1,218 @@ + + + + + + Log Viewer + + + + + + + +
+ + + + +
+
+
+ All Sources + +
+
+ + + +
+
+
+
+

📋 Log Viewer

+

Logs are loaded from the server's configured sources.

+
+

Press Ctrl+F to search, Ctrl+T for tail mode

+
+
+
+
+
+ + +
+
+ Connecting... +
+
+ TAIL + WRAP + REGEX + 100% +
+
+ + + + + + + + + + + + + + + + diff --git a/src/web/monitor-app.js b/src/web/monitor-app.js new file mode 100644 index 0000000..36b448f --- /dev/null +++ b/src/web/monitor-app.js @@ -0,0 +1,318 @@ +// ============================================ +// Log Monitor - Web UI +// ============================================ +(function () { + 'use strict'; + + const state = { rules: [], results: [], activeRule: null, editNotifications: [], theme: 'dark' }; + const $ = (s) => document.querySelector(s); + const $$ = (s) => document.querySelectorAll(s); + + async function api(path, opts = {}) { + const res = await fetch(path, { headers: { 'Content-Type': 'application/json' }, ...opts }); + return res.json(); + } + + async function init() { + await loadRules(); + await loadResults(); + setupEvents(); + setInterval(loadResults, 10000); + setInterval(loadRules, 30000); + } + + async function loadRules() { + try { state.rules = await api('/api/monitor/rules'); } catch { state.rules = []; } + renderRules(); + } + + async function loadResults() { + try { state.results = await api('/api/monitor/results'); } catch { state.results = []; } + renderResults(); + $('#scan-status').textContent = `${state.rules.filter(r => r.enabled).length} active rule(s) · ${state.results.length} alert(s)`; + } + + function renderRules() { + const list = $('#rule-list'); + list.innerHTML = ''; + $('#no-rules').style.display = state.rules.length === 0 ? 'block' : 'none'; + for (const rule of state.rules) { + const card = document.createElement('div'); + card.className = 'rule-card' + (state.activeRule === rule.id ? ' active' : ''); + card.innerHTML = ` +
${rule.name}
+
${rule.sources.length} source(s) · ${rule.matchCount || 0} matches · ${rule.timeRange?.type || 'all'}
+
${rule.patterns.join(' | ')}
`; + card.addEventListener('click', () => editRule(rule)); + list.appendChild(card); + } + } + + function renderResults() { + const list = $('#result-list'); + list.innerHTML = ''; + $('#no-results').style.display = state.results.length === 0 ? 'block' : 'none'; + for (const r of state.results.slice(-10).reverse()) { + const card = document.createElement('div'); + card.className = 'result-card'; + const time = new Date(r.timestamp).toLocaleString(); + const lines = r.matchedLines || []; + const preview = lines.slice(0, 8).map(l => esc(l)).join('\n'); + card.innerHTML = ` +
+ ${r.ruleName} + 🚨 ${r.totalMatches} matches +
+
+ 📅 ${time} · 📁 ${(r.sources||[]).map(s=>s.split(/[/\\\\]/).pop()).join(', ')} +
+
${preview}
+ ${lines.length > 8 ? '
... and ' + (lines.length - 8) + ' more lines
' : ''} + `; + card.style.cursor = 'pointer'; + card.addEventListener('click', () => showFullAlert(r)); + list.appendChild(card); + } + } + + function showFullAlert(result) { + const main = $('#main-panel'); + const lines = result.matchedLines || []; + const time = new Date(result.timestamp).toLocaleString(); + main.innerHTML = ` +
+ +

🚨 ${esc(result.ruleName)}

+
+
📅 Triggered: ${time}
+
📁 Sources: ${(result.sources||[]).join(', ')}
+
📊 Total matches: ${result.totalMatches}
+
+
+
+
Matched lines:
+
${lines.map((l,i) => `${String(i+1).padStart(3)}${colorLine(esc(l))}`).join('\n')}
+
+ `; + main.querySelector('#btn-back-alerts').addEventListener('click', () => { + main.innerHTML = ''; + main.appendChild(createWelcomeOrEditor()); + }); + } + + function colorLine(html) { + if (/\bERROR\b|\bFATAL\b|\bCRITICAL\b/i.test(html)) return '' + html + ''; + if (/\bWARN\b/i.test(html)) return '' + html + ''; + return html; + } + + function createWelcomeOrEditor() { + // Re-render the default state + const div = document.createElement('div'); + div.id = 'welcome-panel'; + div.className = 'empty-state'; + div.innerHTML = '

🔍 Log Monitor

Select a rule from the sidebar or click an alert to view details.

'; + return div; + } + + function editRule(rule) { + state.activeRule = rule.id; + state.editNotifications = [...(rule.notifications || [])]; + $('#welcome-panel').style.display = 'none'; + $('#rule-editor').style.display = 'block'; + $('#rule-name').value = rule.name; + $('#rule-enabled').value = String(rule.enabled); + $('#rule-sources').value = (rule.sources || []).join('\n'); + $('#rule-patterns').value = (rule.patterns || []).join('\n'); + $('#rule-logic').value = rule.patternLogic || 'any'; + $('#rule-max-lines').value = rule.maxLinesInMessage || 20; + $('#rule-cooldown').value = rule.cooldownMs || 300000; + $('#rule-time-type').value = rule.timeRange?.type || 'week'; + $('#rule-time-hours').value = rule.timeRange?.hours || 24; + renderNotifications(); + renderRules(); + } + + function newRule() { + state.activeRule = 'new-' + Date.now(); + state.editNotifications = []; + $('#welcome-panel').style.display = 'none'; + $('#rule-editor').style.display = 'block'; + $('#rule-name').value = ''; + $('#rule-enabled').value = 'true'; + $('#rule-sources').value = ''; + $('#rule-patterns').value = ''; + $('#rule-logic').value = 'any'; + $('#rule-max-lines').value = '20'; + $('#rule-cooldown').value = '300000'; + $('#rule-time-type').value = 'week'; + $('#rule-time-hours').value = '24'; + renderNotifications(); + } + + function renderNotifications() { + const list = $('#notification-list'); + list.innerHTML = ''; + for (let i = 0; i < state.editNotifications.length; i++) { + const n = state.editNotifications[i]; + const card = document.createElement('div'); + card.className = 'notification-card'; + card.innerHTML = `
${n.type.toUpperCase()} ${n.url || n.chatId || n.to || ''}
`; + card.querySelector('button').addEventListener('click', () => { state.editNotifications.splice(i, 1); renderNotifications(); }); + list.appendChild(card); + } + } + + function collectRuleFromForm() { + return { + id: state.activeRule.startsWith('new-') ? state.activeRule : state.activeRule, + name: $('#rule-name').value.trim() || 'Unnamed Rule', + enabled: $('#rule-enabled').value === 'true', + sources: $('#rule-sources').value.split('\n').map(s => s.trim()).filter(s => s), + patterns: $('#rule-patterns').value.split('\n').map(s => s.trim()).filter(s => s), + patternLogic: $('#rule-logic').value, + timeRange: { type: $('#rule-time-type').value, hours: parseInt($('#rule-time-hours').value, 10) }, + maxLinesInMessage: parseInt($('#rule-max-lines').value, 10) || 20, + cooldownMs: parseInt($('#rule-cooldown').value, 10) || 300000, + schedule: { mode: $('#rule-schedule').value, value: $('#rule-schedule-value').value.trim(), timezone: $('#rule-schedule-tz').value.trim() }, + notifications: state.editNotifications, + matchCount: 0, + lastTriggered: null, + }; + } + + function setupEvents() { + $('#btn-new-rule').addEventListener('click', newRule); + + $('#btn-save-rule').addEventListener('click', async () => { + const rule = collectRuleFromForm(); + if (state.activeRule.startsWith('new-')) { + await api('/api/monitor/rules', { method: 'POST', body: JSON.stringify(rule) }); + } else { + await api(`/api/monitor/rule/${state.activeRule}`, { method: 'PUT', body: JSON.stringify(rule) }); + } + await loadRules(); + }); + + $('#btn-test-rule').addEventListener('click', async () => { + const rule = collectRuleFromForm(); + // Save first if new + if (state.activeRule.startsWith('new-')) { + const res = await api('/api/monitor/rules', { method: 'POST', body: JSON.stringify(rule) }); + if (res.rule) state.activeRule = res.rule.id; + await loadRules(); + } + // Trigger + const result = await api(`/api/monitor/trigger/${state.activeRule}`, { method: 'POST' }); + const div = $('#test-result'); + div.style.display = 'block'; + if (result && result.totalMatches > 0) { + div.innerHTML = `
Test Result${result.totalMatches} matches
${result.matchedLines.slice(0, 10).map(l => esc(l)).join('
')}
`; + } else { + div.innerHTML = `
No matches found.
`; + } + await loadResults(); + }); + + $('#btn-delete-rule').addEventListener('click', async () => { + if (!state.activeRule || state.activeRule.startsWith('new-')) return; + if (!confirm('Delete this rule?')) return; + await api(`/api/monitor/rule/${state.activeRule}`, { method: 'DELETE' }); + state.activeRule = null; + $('#rule-editor').style.display = 'none'; + $('#welcome-panel').style.display = 'block'; + await loadRules(); + }); + + $('#btn-add-notif').addEventListener('click', () => { + const type = $('#notif-type').value; + const urlVal = $('#notif-url').value.trim(); + const extra = $('#notif-extra').value.trim(); + const notif = { type }; + if (type === 'webhook') notif.url = urlVal; + else if (type === 'teams') notif.url = urlVal; + else if (type === 'telegram') { notif.botToken = urlVal; notif.chatId = extra; } + else if (type === 'email') { + notif.to = extra; + notif.smtpHost = urlVal; + notif.smtpPort = parseInt($('#notif-extra2').value || '587', 10); + notif.smtpUser = $('#notif-smtp-user').value.trim(); + notif.smtpPass = $('#notif-smtp-pass').value.trim(); + } + state.editNotifications.push(notif); + renderNotifications(); + $('#notif-url').value = ''; + $('#notif-extra').value = ''; + }); + + // Dynamic notification form fields + $('#notif-type').addEventListener('change', () => { + const type = $('#notif-type').value; + const f1Label = $('#notif-field-1-label'); + const f2Label = $('#notif-field-2-label'); + const f3Wrap = $('#notif-field-3-wrap'); + const smtpRow = $('#notif-smtp-row'); + const urlInput = $('#notif-url'); + const extraInput = $('#notif-extra'); + + f3Wrap.style.display = 'none'; + smtpRow.style.display = 'none'; + + switch (type) { + case 'webhook': + f1Label.textContent = 'Webhook URL'; + urlInput.placeholder = 'https://hooks.slack.com/services/...'; + f2Label.textContent = '(unused)'; + extraInput.placeholder = ''; + break; + case 'telegram': + f1Label.textContent = 'Bot Token'; + urlInput.placeholder = '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11'; + f2Label.textContent = 'Chat ID'; + extraInput.placeholder = '-1001234567890'; + break; + case 'teams': + f1Label.textContent = 'Teams Webhook URL'; + urlInput.placeholder = 'https://outlook.office.com/webhook/...'; + f2Label.textContent = '(unused)'; + extraInput.placeholder = ''; + break; + case 'email': + f1Label.textContent = 'SMTP Host'; + urlInput.placeholder = 'smtp.gmail.com'; + f2Label.textContent = 'To (email)'; + extraInput.placeholder = 'admin@company.com'; + f3Wrap.style.display = 'block'; + smtpRow.style.display = 'grid'; + break; + } + }); + + // Test notification button + $('#btn-test-notif').addEventListener('click', async () => { + const type = $('#notif-type').value; + const notif = { type }; + const urlVal = $('#notif-url').value.trim(); + const extra = $('#notif-extra').value.trim(); + if (type === 'webhook') notif.url = urlVal; + else if (type === 'teams') notif.url = urlVal; + else if (type === 'telegram') { notif.botToken = urlVal; notif.chatId = extra; } + else if (type === 'email') { notif.to = extra; notif.smtpHost = urlVal; notif.smtpPort = parseInt($('#notif-extra2').value || '587', 10); notif.smtpUser = $('#notif-smtp-user').value.trim(); notif.smtpPass = $('#notif-smtp-pass').value.trim(); } + + try { + const res = await api('/api/monitor/test-notification', { method: 'POST', body: JSON.stringify(notif) }); + alert(res.ok ? '✅ Test notification sent!' : '❌ Failed: ' + (res.error || 'unknown')); + } catch (e) { alert('❌ Error: ' + e.message); } + }); + + $('#btn-theme').addEventListener('click', () => { + state.theme = state.theme === 'dark' ? 'light' : 'dark'; + document.body.className = `theme-${state.theme}`; + $('#btn-theme').textContent = state.theme === 'dark' ? '🌙' : '☀️'; + }); + } + + function esc(t) { const d = document.createElement('div'); d.textContent = t; return d.innerHTML; } + + init(); +})(); diff --git a/src/web/monitor.html b/src/web/monitor.html new file mode 100644 index 0000000..11cb47b --- /dev/null +++ b/src/web/monitor.html @@ -0,0 +1,182 @@ + + + + + + Log Monitor + + + + +
+
+

🔍 Log Monitor

+
+ Scanning... + +
+
+ +
+ + +
+
+

🔍 Log Monitor

+

Create rules to scan log files for patterns and get notified.

+

Click "+ New" to create your first rule.

+
+ + + +
+
+
+ + + + diff --git a/src/web/styles.css b/src/web/styles.css new file mode 100644 index 0000000..0a8f428 --- /dev/null +++ b/src/web/styles.css @@ -0,0 +1,163 @@ +/* ============================================ + Log Viewer - Styles + ============================================ */ + +:root { + --bg-primary: #1e1e2e; + --bg-secondary: #181825; + --bg-tertiary: #313244; + --bg-hover: #45475a; + --bg-active: #585b70; + --text-primary: #cdd6f4; + --text-secondary: #a6adc8; + --text-muted: #6c7086; + --border-color: #45475a; + --accent: #89b4fa; + --accent-hover: #74c7ec; + --error: #f38ba8; + --warn: #fab387; + --info: #89b4fa; + --debug: #a6adc8; + --fatal: #f38ba8; + --trace: #6c7086; + --success: #a6e3a1; + --highlight-bg: #f9e2af33; + --highlight-border: #f9e2af; + --bookmark-color: #f9e2af; + --scrollbar-bg: #313244; + --scrollbar-thumb: #585b70; + --shadow: 0 2px 8px rgba(0, 0, 0, 0.3); + --font-mono: 'Cascadia Code', 'JetBrains Mono', 'Fira Code', 'Consolas', monospace; + --font-ui: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; +} +.theme-light { + --bg-primary: #eff1f5; --bg-secondary: #e6e9ef; --bg-tertiary: #ccd0da; + --bg-hover: #bcc0cc; --bg-active: #acb0be; --text-primary: #4c4f69; + --text-secondary: #5c5f77; --text-muted: #8c8fa1; --border-color: #ccd0da; + --accent: #1e66f5; --accent-hover: #2a6ef5; --error: #d20f39; --warn: #df8e1d; + --info: #1e66f5; --debug: #8c8fa1; --fatal: #d20f39; --trace: #8c8fa1; + --success: #40a02b; --highlight-bg: #df8e1d33; --highlight-border: #df8e1d; + --bookmark-color: #df8e1d; --scrollbar-bg: #ccd0da; --scrollbar-thumb: #acb0be; + --shadow: 0 2px 8px rgba(0,0,0,0.1); +} +*,*::before,*::after{box-sizing:border-box;margin:0;padding:0} +html,body{height:100%;overflow:hidden} +body{font-family:var(--font-ui);font-size:13px;color:var(--text-primary);background:var(--bg-primary);display:flex;flex-direction:column;transition:background-color .2s,color .2s} +::-webkit-scrollbar{width:10px;height:10px} +::-webkit-scrollbar-track{background:var(--scrollbar-bg)} +::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:5px} +::-webkit-scrollbar-thumb:hover{background:var(--bg-active)} +.toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);gap:12px;flex-shrink:0;user-select:none} +.toolbar-left,.toolbar-center,.toolbar-right{display:flex;align-items:center;gap:6px} +.toolbar-center{flex:1;max-width:500px} +.toolbar-btn{display:flex;align-items:center;gap:4px;padding:5px 10px;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;cursor:pointer;font-size:12px;font-family:var(--font-ui);transition:all .15s;white-space:nowrap} +.toolbar-btn:hover{background:var(--bg-hover)} +.toolbar-btn:active{background:var(--bg-active)} +.toolbar-btn.active{background:var(--accent);color:#1e1e2e;border-color:var(--accent)} +.toolbar-separator{width:1px;height:24px;background:var(--border-color);margin:0 4px} +.toolbar-select{padding:5px 8px;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;font-size:12px;font-family:var(--font-ui);cursor:pointer;max-width:160px} +.toolbar-select:focus{outline:2px solid var(--accent);outline-offset:-1px} +.search-box{display:flex;align-items:center;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:4px;overflow:hidden;width:100%;transition:border-color .15s} +.search-box:focus-within{border-color:var(--accent)} +#search-input{flex:1;padding:5px 10px;background:transparent;color:var(--text-primary);border:none;font-size:12px;font-family:var(--font-ui);outline:none;min-width:0} +#search-input::placeholder{color:var(--text-muted)} +.search-toggle{padding:4px 8px;background:transparent;color:var(--text-muted);border:none;border-left:1px solid var(--border-color);cursor:pointer;font-size:11px;font-family:var(--font-mono);font-weight:bold;transition:all .15s} +.search-toggle:hover{color:var(--text-primary);background:var(--bg-hover)} +.search-toggle.active{color:var(--accent);background:var(--bg-hover)} +.search-count{padding:0 8px;font-size:11px;color:var(--text-muted);white-space:nowrap} +.main-content{display:flex;flex:1;overflow:hidden} +.sidebar{width:260px;min-width:200px;background:var(--bg-secondary);border-right:1px solid var(--border-color);display:flex;flex-direction:column;transition:width .2s,min-width .2s;flex-shrink:0} +.sidebar.collapsed{width:0;min-width:0;overflow:hidden;border-right:none} +.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--border-color)} +.sidebar-header h2{font-size:13px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px} +.sidebar-toggle{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:12px;padding:2px 6px;border-radius:3px;transition:all .15s} +.sidebar-toggle:hover{background:var(--bg-hover);color:var(--text-primary)} +.source-list{flex:1;overflow-y:auto;padding:6px} +.source-item{display:flex;align-items:center;padding:8px 10px;border-radius:4px;cursor:pointer;transition:background .15s;gap:8px;margin-bottom:2px} +.source-item:hover{background:var(--bg-hover)} +.source-item.active{background:var(--bg-tertiary);border-left:3px solid var(--accent);padding-left:7px} +.source-item .source-icon{font-size:14px;flex-shrink:0} +.source-item .source-details{flex:1;min-width:0} +.source-item .source-name{font-size:12px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis} +.source-item .source-meta{font-size:10px;color:var(--text-muted);margin-top:2px} +.source-item .source-remove{opacity:0;background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;padding:2px 4px;border-radius:3px;transition:all .15s} +.source-item:hover .source-remove{opacity:1} +.source-item .source-remove:hover{color:var(--error);background:var(--bg-hover)} +.source-item .source-status{width:8px;height:8px;border-radius:50%;flex-shrink:0} +.source-item .source-status.online{background:var(--success)} +.source-item .source-status.offline{background:var(--error)} +.empty-state{padding:20px;text-align:center;color:var(--text-muted);font-size:12px;line-height:1.6} +.empty-state code{background:var(--bg-tertiary);padding:2px 6px;border-radius:3px;font-family:var(--font-mono);font-size:11px} +.sidebar-footer{padding:8px 12px;border-top:1px solid var(--border-color)} +.stats{display:flex;justify-content:space-between;font-size:11px;color:var(--text-muted)} +.log-container{flex:1;display:flex;flex-direction:column;overflow:hidden} +.log-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border-color);flex-shrink:0} +.log-header-info{display:flex;align-items:center;gap:10px} +#current-source-name{font-weight:600;font-size:13px} +.source-info{font-size:11px;color:var(--text-muted)} +.log-header-actions{display:flex;gap:6px} +.small-btn{padding:3px 8px;background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color);border-radius:3px;cursor:pointer;font-size:11px;font-family:var(--font-ui);transition:all .15s} +.small-btn:hover{background:var(--bg-hover);color:var(--text-primary)} +.log-output{flex:1;overflow-y:auto;overflow-x:auto;padding:0;font-family:var(--font-mono);font-size:12px;line-height:1.6;background:var(--bg-primary);outline:none} +.log-output.word-wrap{overflow-x:hidden} +.log-output.word-wrap .log-line-content{white-space:pre-wrap;word-break:break-all} +.log-line{display:flex;padding:0 12px;min-height:20px;border-bottom:1px solid transparent;transition:background .1s} +.log-line:hover{background:var(--bg-tertiary)} +.log-line.bookmarked{background:var(--highlight-bg);border-left:3px solid var(--bookmark-color)} +.log-line-number{min-width:50px;padding-right:12px;text-align:right;color:var(--text-muted);user-select:none;flex-shrink:0;cursor:pointer;font-size:11px;line-height:20px} +.log-line-number:hover{color:var(--accent)} +.log-line-source{min-width:80px;max-width:120px;padding-right:8px;color:var(--text-muted);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:0;line-height:20px} +.log-line-timestamp{min-width:160px;padding-right:8px;color:var(--text-secondary);font-size:11px;flex-shrink:0;line-height:20px} +.log-line-level{min-width:60px;padding-right:8px;font-weight:600;font-size:11px;flex-shrink:0;line-height:20px} +.log-line-level.level-error,.log-line-level.level-fatal{color:var(--error)} +.log-line-level.level-warn{color:var(--warn)} +.log-line-level.level-info{color:var(--info)} +.log-line-level.level-debug{color:var(--debug)} +.log-line-level.level-trace{color:var(--trace)} +.log-line-content{flex:1;white-space:pre;min-width:0;line-height:20px} +.log-line-content .highlight{background:var(--highlight-bg);border-bottom:1px solid var(--highlight-border);border-radius:2px;padding:0 1px} +.log-line.line-error{color:var(--error)} +.log-line.line-fatal{color:var(--fatal);font-weight:600} +.log-line.line-warn{color:var(--warn)} +.welcome-message{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);text-align:center;padding:40px} +.welcome-message h2{font-size:20px;color:var(--text-secondary);margin-bottom:16px} +.welcome-message p{margin-bottom:8px} +.welcome-message code{background:var(--bg-tertiary);padding:2px 6px;border-radius:3px;font-family:var(--font-mono);font-size:12px} +.shortcut-hint{margin-top:20px;padding:12px 20px;background:var(--bg-tertiary);border-radius:6px} +kbd{display:inline-block;padding:2px 6px;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:3px;font-family:var(--font-mono);font-size:11px;box-shadow:0 1px 0 var(--border-color)} +.statusbar{display:flex;align-items:center;justify-content:space-between;padding:3px 12px;background:var(--bg-secondary);border-top:1px solid var(--border-color);font-size:11px;color:var(--text-muted);flex-shrink:0} +.statusbar-left,.statusbar-right{display:flex;align-items:center;gap:12px} +.status-indicator{padding:1px 6px;border-radius:3px;font-size:10px;font-weight:600;text-transform:uppercase;opacity:.4;transition:opacity .15s} +.status-indicator.active{opacity:1;color:var(--accent)} +.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000} +.modal-overlay[hidden]{display:none} +.modal{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;box-shadow:var(--shadow);min-width:400px;max-width:600px;max-height:80vh;overflow-y:auto} +.modal-small{min-width:300px;max-width:400px} +.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-color)} +.modal-header h2{font-size:16px;font-weight:600} +.modal-close{background:none;border:none;color:var(--text-muted);font-size:20px;cursor:pointer;padding:4px 8px;border-radius:4px;transition:all .15s} +.modal-close:hover{background:var(--bg-hover);color:var(--text-primary)} +.modal-body{padding:20px} +.export-options{display:flex;gap:10px;margin:16px 0} +.export-btn{flex:1;padding:10px;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-size:13px;font-family:var(--font-ui);transition:all .15s} +.export-btn:hover{background:var(--accent);color:#1e1e2e;border-color:var(--accent)} +.checkbox-label{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);cursor:pointer} +.primary-btn{padding:6px 16px;background:var(--accent);color:#1e1e2e;border:none;border-radius:4px;cursor:pointer;font-size:13px;font-family:var(--font-ui);font-weight:600;transition:all .15s} +.primary-btn:hover{background:var(--accent-hover)} +#goto-input{width:100%;padding:8px 12px;background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-color);border-radius:4px;font-size:14px;font-family:var(--font-mono);margin-bottom:12px;outline:none} +#goto-input:focus{border-color:var(--accent)} +.context-menu{position:fixed;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;box-shadow:var(--shadow);padding:4px;z-index:2000;min-width:180px} +.context-menu-item{display:flex;align-items:center;gap:8px;padding:6px 12px;color:var(--text-primary);font-size:12px;cursor:pointer;border-radius:4px;transition:background .1s} +.context-menu-item:hover{background:var(--bg-hover)} +.context-menu-separator{height:1px;background:var(--border-color);margin:4px 0} +@media(max-width:900px){.sidebar{width:200px;min-width:160px}.toolbar-center{max-width:300px}} + +/* Live line highlight */ +.log-line.new-line { + animation: newLineFlash 2.5s ease-out; +} +@keyframes newLineFlash { + 0% { background: rgba(137,180,250,0.2); border-left: 3px solid var(--accent); } + 70% { background: rgba(137,180,250,0.05); } + 100% { background: transparent; border-left: 3px solid transparent; } +} diff --git a/test-all.js b/test-all.js new file mode 100644 index 0000000..e953500 --- /dev/null +++ b/test-all.js @@ -0,0 +1,306 @@ +#!/usr/bin/env node +// ============================================ +// Full Integration Test for LogViewer +// Tests: Collector, Viewer, Monitor, Self-Forward, Telegram +// ============================================ +const http = require('http'); + +const COLLECTOR = 'http://localhost:8081'; +const VIEWER = 'http://localhost:9090'; +const MONITOR = 'http://localhost:8082'; + +let passed = 0, failed = 0; + +function post(base, path, data) { + return new Promise((resolve, reject) => { + const payload = JSON.stringify(data); + const url = new URL(path, base); + const req = http.request({ + hostname: url.hostname, port: url.port, path: url.pathname + url.search, + method: 'POST', + headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload) }, + }, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => { try { resolve(JSON.parse(body)); } catch { resolve(body); } }); + }); + req.on('error', reject); + req.write(payload); + req.end(); + }); +} + +function postText(base, path, text) { + return new Promise((resolve, reject) => { + const url = new URL(path, base); + const req = http.request({ + hostname: url.hostname, port: url.port, path: url.pathname, + method: 'POST', + headers: { 'Content-Type': 'text/plain', 'Content-Length': Buffer.byteLength(text) }, + }, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => { try { resolve(JSON.parse(body)); } catch { resolve(body); } }); + }); + req.on('error', reject); + req.write(text); + req.end(); + }); +} + +function get(base, path) { + return new Promise((resolve, reject) => { + const url = new URL(path, base); + http.get({ hostname: url.hostname, port: url.port, path: url.pathname + url.search }, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => { try { resolve(JSON.parse(body)); } catch { resolve(body); } }); + }).on('error', reject); + }); +} + +function del(base, path) { + return new Promise((resolve, reject) => { + const url = new URL(path, base); + const req = http.request({ hostname: url.hostname, port: url.port, path: url.pathname + url.search, method: 'DELETE' }, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => { try { resolve(JSON.parse(body)); } catch { resolve(body); } }); + }); + req.on('error', reject); + req.end(); + }); +} + +function check(name, condition) { + if (condition) { console.log(` ✅ ${name}`); passed++; } + else { console.log(` ❌ ${name}`); failed++; } +} + +function sleep(ms) { return new Promise(r => setTimeout(r, ms)); } + +async function testCollector() { + console.log('\n ═══ COLLECTOR TESTS ═══\n'); + + // 1. Health check + const mode = await get(COLLECTOR, '/api/mode'); + check('Collector is running', mode && mode.mode === 'collector'); + check('Collector is active', mode && mode.hasCollector === true); + + // 2. Send plain text logs + const r1 = await postText(COLLECTOR, '/collect/test-plain', '2026-05-01T10:00:00Z INFO Test line 1\n2026-05-01T10:00:01Z ERROR Test line 2'); + check('Plain text ingest', r1 && r1.ok === true && r1.accepted === 2); + + // 3. Send JSON logs + const r2 = await post(COLLECTOR, '/collect/test-json/json', ['INFO json line 1', 'WARN json line 2', 'ERROR json line 3']); + check('JSON ingest', r2 && r2.ok === true && r2.accepted === 3); + + // 4. List streams + const streams = await get(COLLECTOR, '/collector/streams'); + check('Streams listed', Array.isArray(streams) && streams.length >= 2); + check('test-plain stream exists', streams.some(s => s.id === 'test-plain')); + check('test-json stream exists', streams.some(s => s.id === 'test-json')); + + // 5. Read stream + const data = await get(COLLECTOR, '/collector/stream/test-plain'); + check('Read stream', data && data.lines && data.lines.length === 2); + + // 6. Read with tail + const tail = await get(COLLECTOR, '/collector/stream/test-json?tail=1'); + check('Tail parameter works', tail && tail.lines && tail.lines.length === 1); + + // 7. Self-forward: send to stream-a, should appear in stream-all + // First we need to configure forward targets - this requires restart, so we test via direct ingest + const r3 = await postText(COLLECTOR, '/collect/stream-a', 'INFO from stream-a'); + check('Stream-a ingest', r3 && r3.ok === true); + + // 8. Delete stream + const delResult = await del(COLLECTOR, '/collector/stream/test-plain'); + check('Delete stream', delResult && delResult.ok === true); + const afterDel = await get(COLLECTOR, '/collector/streams'); + check('Stream removed', !afterDel.some(s => s.id === 'test-plain')); + + // 9. Collector config endpoint + const config = await get(COLLECTOR, '/collector/config'); + check('Config endpoint', config && config.storageDir && config.rotation); + + // 10. Bulk ingest + const lines = []; + for (let i = 0; i < 50; i++) lines.push(`2026-05-01T10:${String(i).padStart(2,'0')}:00Z INFO Bulk line ${i}`); + const r4 = await post(COLLECTOR, '/collect/bulk-test/json', lines); + check('Bulk ingest (50 lines)', r4 && r4.accepted === 50); +} + +async function testViewer() { + console.log('\n ═══ VIEWER TESTS ═══\n'); + + // 1. Health check + const mode = await get(VIEWER, '/api/mode'); + check('Viewer is running', mode && mode.mode === 'viewer'); + + // 2. HTML page served + const html = await new Promise((resolve, reject) => { + http.get(`${VIEWER}/`, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => resolve({ status: res.statusCode, body })); + }).on('error', reject); + }); + check('HTML page served (200)', html.status === 200); + check('HTML contains Log Viewer', html.body.includes('Log Viewer')); + + // 3. Sources listed + const sources = await get(VIEWER, '/api/sources'); + check('File sources listed', Array.isArray(sources) && sources.length > 0); + + // 4. Read logs + const logs = await get(VIEWER, '/api/logs'); + check('Logs readable', Array.isArray(logs) && logs.length > 0); + check('Log entries have structure', logs[0] && logs[0].line && logs[0].source); + + // 5. Read specific source + if (sources.length > 0) { + const src = sources[0].path; + const srcLogs = await get(VIEWER, `/api/logs?source=${encodeURIComponent(src)}`); + check('Source-specific logs', Array.isArray(srcLogs) && srcLogs.length > 0); + } + + // 6. Remote streams from collector + const remote = await get(VIEWER, '/api/remote/streams'); + check('Remote streams accessible', Array.isArray(remote)); + if (remote.length > 0) { + const stream = remote[0]; + const remoteData = await get(VIEWER, `/api/remote/stream/${stream.id}`); + check('Remote stream readable', Array.isArray(remoteData) && remoteData.length > 0); + } else { + check('Remote stream readable (skipped - no streams)', true); + } + + // 7. Config endpoint + const config = await get(VIEWER, '/api/config'); + check('Config endpoint', config && config.theme); + + // 8. Add source + const addResult = await post(VIEWER, '/api/sources', { path: 'sample-logs/security-audit.log' }); + check('Add source', Array.isArray(addResult)); +} + +async function testMonitor() { + console.log('\n ═══ MONITOR TESTS ═══\n'); + + // 1. Health check + const mode = await get(MONITOR, '/api/mode'); + check('Monitor is running', mode && mode.mode === 'monitor'); + + // 2. HTML page served (monitor UI) + const html = await new Promise((resolve, reject) => { + http.get(`${MONITOR}/`, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => resolve({ status: res.statusCode, body })); + }).on('error', reject); + }); + check('Monitor HTML served (200)', html.status === 200); + check('Monitor HTML contains Monitor', html.body.includes('Log Monitor')); + + // 3. Create rule + const rule = await post(MONITOR, '/api/monitor/rules', { + id: 'test-rule-1', + name: 'Test: Error Detection', + enabled: true, + sources: ['sample-logs/app.log'], + patterns: ['\\bERROR\\b', '\\bFATAL\\b'], + patternLogic: 'any', + timeRange: { type: 'all' }, + notifications: [], + maxLinesInMessage: 10, + cooldownMs: 5000, + schedule: { mode: 'interval' }, + }); + check('Create rule', rule && rule.ok === true); + + // 4. Create second rule + const rule2 = await post(MONITOR, '/api/monitor/rules', { + id: 'test-rule-2', + name: 'Test: Security Audit', + enabled: true, + sources: ['sample-logs/security-audit.log'], + patterns: ['root.*login', 'DROP TABLE', 'GRANT'], + patternLogic: 'any', + timeRange: { type: 'all' }, + notifications: [{ type: 'telegram', botToken: '8116790669:AAE_llOFDFSwDhPx40vZMBa6dGv3Xxa9ZiQ', chatId: '8599028500' }], + maxLinesInMessage: 5, + cooldownMs: 5000, + schedule: { mode: 'daily', value: '07:00' }, + }); + check('Create rule with Telegram', rule2 && rule2.ok === true); + + // 5. List rules + const rules = await get(MONITOR, '/api/monitor/rules'); + check('Rules listed', Array.isArray(rules) && rules.length >= 2); + + // 6. Trigger rule 1 + const result1 = await post(MONITOR, '/api/monitor/trigger/test-rule-1', {}); + check('Trigger rule 1 (errors in app.log)', result1 && result1.totalMatches > 0); + if (result1 && result1.totalMatches) { + console.log(` → Found ${result1.totalMatches} ERROR/FATAL lines`); + } + + // 7. Trigger rule 2 (with Telegram) + const result2 = await post(MONITOR, '/api/monitor/trigger/test-rule-2', {}); + check('Trigger rule 2 (security + Telegram)', result2 && result2.totalMatches > 0); + if (result2 && result2.totalMatches) { + console.log(` → Found ${result2.totalMatches} security matches, Telegram alert sent`); + } + + // 8. Check results + const results = await get(MONITOR, '/api/monitor/results'); + check('Results stored', Array.isArray(results) && results.length >= 2); + + // 9. Update rule + const updated = await new Promise((resolve, reject) => { + const payload = JSON.stringify({ name: 'Test: Error Detection (updated)' }); + const req = http.request({ + hostname: 'localhost', port: 8082, path: '/api/monitor/rule/test-rule-1', + method: 'PUT', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload) }, + }, (res) => { let b = ''; res.on('data', c => b += c); res.on('end', () => resolve(JSON.parse(b))); }); + req.on('error', reject); + req.write(payload); + req.end(); + }); + check('Update rule', updated && updated.ok === true); + + // 10. Test notification endpoint + const notifTest = await post(MONITOR, '/api/monitor/test-notification', { + type: 'telegram', + botToken: '8116790669:AAE_llOFDFSwDhPx40vZMBa6dGv3Xxa9ZiQ', + chatId: '8599028500', + }); + check('Test notification (Telegram)', notifTest && notifTest.ok === true); + + // 11. Delete rule + const delResult = await del(MONITOR, '/api/monitor/rule/test-rule-1'); + check('Delete rule', delResult && delResult.ok === true); + + // 12. Monitor config + const config = await get(MONITOR, '/api/monitor/config'); + check('Monitor config endpoint', config && config.scanIntervalMs); +} + +async function main() { + console.log('\n ╔══════════════════════════════════════════╗'); + console.log(' ║ LogViewer Full Integration Test ║'); + console.log(' ╚══════════════════════════════════════════╝'); + + try { await testCollector(); } catch (e) { console.log(` ❌ Collector tests failed: ${e.message}`); failed++; } + try { await testViewer(); } catch (e) { console.log(` ❌ Viewer tests failed: ${e.message}`); failed++; } + try { await testMonitor(); } catch (e) { console.log(` ❌ Monitor tests failed: ${e.message}`); failed++; } + + console.log('\n ═══════════════════════════════════════════'); + console.log(` Results: ${passed} passed, ${failed} failed`); + console.log(' ═══════════════════════════════════════════\n'); + + process.exit(failed > 0 ? 1 : 0); +} + +main(); diff --git a/test-full-alert.js b/test-full-alert.js new file mode 100644 index 0000000..07b5179 --- /dev/null +++ b/test-full-alert.js @@ -0,0 +1,61 @@ +const http = require('http'); + +function post(path, data) { + return new Promise((resolve, reject) => { + const payload = JSON.stringify(data); + const req = http.request({ + hostname: 'localhost', port: 8082, path, + method: 'POST', + headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload) }, + }, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => { try { resolve(JSON.parse(body)); } catch { resolve(body); } }); + }); + req.on('error', reject); + req.write(payload); + req.end(); + }); +} + +async function main() { + console.log('\n === Full Alert Test (with Telegram) ===\n'); + + // Delete old rule if exists + try { await post('/api/monitor/rule/telegram-test', {}); } catch {} + + // Create rule with Telegram notification + console.log(' Creating rule with Telegram notification...'); + const res = await post('/api/monitor/rules', { + id: 'telegram-test', + name: 'Security Alert (Telegram)', + enabled: true, + sources: ['sample-logs/security-audit.log'], + patterns: ['root.*login', 'DROP TABLE', 'GRANT.*PRIVILEGES'], + patternLogic: 'any', + timeRange: { type: 'all' }, + notifications: [{ + type: 'telegram', + botToken: '8116790669:AAE_llOFDFSwDhPx40vZMBa6dGv3Xxa9ZiQ', + chatId: '8599028500', + }], + maxLinesInMessage: 5, + cooldownMs: 10000, + matchCount: 0, + lastTriggered: null, + schedule: { mode: 'interval' }, + }); + console.log(' Rule created:', res.ok ? 'OK' : 'FAILED'); + + // Trigger it + console.log(' Triggering rule (this will send Telegram alert)...'); + const result = await post('/api/monitor/trigger/telegram-test', {}); + if (result && result.totalMatches) { + console.log(` ✅ ${result.totalMatches} matches found and Telegram alert sent!`); + console.log(' Check your Telegram for the alert message.\n'); + } else { + console.log(' No matches (unexpected).\n'); + } +} + +main().catch(e => console.error('Error:', e.message)); diff --git a/test-monitor-telegram.js b/test-monitor-telegram.js new file mode 100644 index 0000000..f0231b3 --- /dev/null +++ b/test-monitor-telegram.js @@ -0,0 +1,27 @@ +const http = require('http'); + +// Test the notification endpoint on the monitor +const payload = JSON.stringify({ + type: 'telegram', + botToken: '8116790669:AAE_llOFDFSwDhPx40vZMBa6dGv3Xxa9ZiQ', + chatId: '8599028500', +}); + +console.log('Testing Telegram notification via Monitor API...'); + +const req = http.request({ + hostname: 'localhost', port: 8082, + path: '/api/monitor/test-notification', + method: 'POST', + headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload) }, +}, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => { + console.log(' Status:', res.statusCode); + console.log(' Response:', body); + }); +}); +req.on('error', (e) => console.error(' Error:', e.message)); +req.write(payload); +req.end(); diff --git a/test-telegram.js b/test-telegram.js new file mode 100644 index 0000000..6d4d949 --- /dev/null +++ b/test-telegram.js @@ -0,0 +1,34 @@ +const https = require('https'); + +const BOT_TOKEN = '8116790669:AAE_llOFDFSwDhPx40vZMBa6dGv3Xxa9ZiQ'; +const CHAT_ID = '8599028500'; + +const message = '🧪 Test from LogViewer Monitor\n\nIf you see this, notifications work! ✅'; + +const payload = JSON.stringify({ + chat_id: CHAT_ID, + text: message, + parse_mode: 'Markdown', +}); + +console.log('Sending to Telegram...'); +console.log(' Bot:', BOT_TOKEN.substring(0, 10) + '...'); +console.log(' Chat:', CHAT_ID); + +const req = https.request({ + hostname: 'api.telegram.org', + path: `/bot${BOT_TOKEN}/sendMessage`, + method: 'POST', + headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload) }, +}, (res) => { + let body = ''; + res.on('data', c => body += c); + res.on('end', () => { + console.log(' Status:', res.statusCode); + console.log(' Response:', body); + }); +}); + +req.on('error', (e) => console.error(' Error:', e.message)); +req.write(payload); +req.end(); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..0a6e9e4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "commonjs", + "lib": ["ES2022"], + "outDir": "dist", + "rootDir": "src", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/tsconfig.server.json b/tsconfig.server.json new file mode 100644 index 0000000..ad1da7b --- /dev/null +++ b/tsconfig.server.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "commonjs", + "lib": ["ES2022"], + "outDir": "dist-server", + "rootDir": "src/server", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "sourceMap": true + }, + "include": ["src/server/**/*"], + "exclude": ["node_modules"] +}

-I(x9^niP9pFe3`hcmi+l;*3h( zwA*pR=p2FNfpbO~iEXV{WvwEag~ha}xLL}jIM-fDuw{4B8fVOKi*6FND>#~mx9z~C}wf3jfj z9V;lFWk5wuQbTpv8ntdekS`~@W-G80c7;~pqLuvBWFU#~=Eky!a^rWoMEgg&z9uq3TyT?Wg9*gv%<#z={U@LE} ztiBYeNO;uU^H8u1zDkbuXKM;NLJV;(j%je#lv+q1T`y2uwDLYFuR!I%RMa1YETE^F z{)m~E9}p?8-Kn}Hzu>9lsa-PA8L3uE3Luozm;3FH<#CZ1+hb&}hL;R+rZm6wu(dO= z&WAgwcY#}Qv^WgBLut-Pk^_Zx?!K4O6riyE)V5@7^YsG6nJRQX6`{8nY1-3PkI#U} z?THk$oN)gV2JpizcF7igd<$?^^7pYInv3WR+@nem+rqvUuy89JoN8I&(pKu&Jfp zJ9aGxVoVrt7Kp$ehYAe^PvwrTc`~~>k)q6M4>A>moHC7TDaC#wlz%|F7?)L5y`Lcj zZ&ODzKtajvL!sX?g&;2vgluFPXOzeG+PR&Hl>;^*_E(AMU~E3O;#QRth2hzJ5@m5X zNFQ0P^gOz{X|hAqI^)AKgH&*W3{93*rP=bl@N(bp3omWCf^okJ6=Qetx(?- zaV&b;eC`Do)pykz$`KgqY*ju3F)V~u-D*T&UKF^se%0n1JtNMALftew3z1!~-N^x) zwp*}cb>x!Hgxbw02g9ZM-*v-kL1H;wKO)(dA7H?$lF}LPY&qyXa*QdXy(_mFYGuO$ zl2Zdl?@~R^n}YRvY=P6PKSFuXqd*ya-Iue`4OX5{;Cwq$)z0(@Vz47_SqODPea4az zb!X|0ZOhT^fNfT*VT@K7r%guD6;Ym+iyU+(`_IqkqNDQH1DHj7mhv+qkaw+!xD!?| z0S4*|MVNru&eu{&(a3;VUKFXaJ+kHMhTd{z0sG=8`@FMUyJ*L{M9+90Pn>POD+t4g z!zSrZ>1fM7gHpY&TODr&5Xxo7`$s#<8YlGzw8|@&3xG@Ur?U)y#s*Yh zeRYN;>X-AJWMnap(qbnGnXRsB(C32g`Qpu%@daeCf^UDljb zUdMajDhYW~k@j?1C#j>4o!8%=fuYJ=beHrMWGF2lqrO?rvW1~*5(}Kc@__!Bk(^em z^m{JMM_|W2dbE>-H{hc2S7i)nAVxE@*KHDtwp3Z>D*KL@=yFH3A8Vy7c)z?;Ya{L; z&lKI>lB~;rYGC^6aTye>x;Ew{&&+ym-}M7$Xg;^7F6FzNnx=)7bj%4MU>drcq`(8D zpl`}57%qpo#&Xk)r?~is7hSNEJ7PQj?V(^&xjSxv2v7oU@0QZ<5TB3CnfC7mUY7zh TAT4x*SC{kef2XzgW^4ceXlif! literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T15-13-02-356Z.log.gz b/collector-data/payment-api_2026-05-02T15-13-02-356Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..770792d0110467cf6662e66ea30f4cfff896f969 GIT binary patch literal 4155 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 F004k_HB|rr literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T15-23-02-526Z.log.gz b/collector-data/payment-api_2026-05-02T15-23-02-526Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..1b94588251e4456afcac5b511456100f7a2dbf31 GIT binary patch literal 4436 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 a0@-PKe5mxao!)-^`M&{um?UykasU8)2CmEi literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T15-33-02-729Z.log.gz b/collector-data/payment-api_2026-05-02T15-33-02-729Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..8e0b22f2bcbdc77ab7c12107150d352e93a762fe GIT binary patch literal 4262 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 II1p|C05Cy0u>b%7 literal 0 HcmV?d00001 diff --git a/collector-data/payment-api_2026-05-02T15-43-02-884Z.log.gz b/collector-data/payment-api_2026-05-02T15-43-02-884Z.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..e21308c04e6148524a9ac7032a7663d895c25d99 GIT binary patch literal 4338 zcmVp^KrU9eLS5fG5@-X@gAQ>ym&Z&ct8E+{&+WC-~R9E<}h7cpDvI8etCQM z2`+Cxt~?-ubNFuh?(N$*Z}TgE|8RZ%!|mzje7yVapO?o^=hN-YDv*($faz_2d%FMo z^pCsK`8fUU;&gqyT7d~z=6BO?zx&N!en0(mfBE5f^>BT>dq4g6!}0F(WZlR68f6WT zu}`QE=kuo>fP*OJX)ZHhZ!#@`#W1>jmcffHmf}yhf1R#wZ;prQ{`1Y{S63J3ixp%5 zW_(`wg#7k+cb<;_{B*iI-cMm=CT#?Y@^1RwH$Q&!pI=aK9?sM4-=>epkGFT9f4K^Z z=6NXn#Q#daouXTr5of_0|MX3l7ndK7@25W;FRsrYrZ@kw0&w8aJ?)Cw^8Rq~`Q!2C zJY5|xuTM8?Tf;eEa!-ThHS1Ua=OFUPR(1qrsTlan`+mB+y*%FEAFrl=aRMT%@Gv_< z=_E9Ktp|?bX-oh7aC|s!?`bq3IzNjA{~^ELba{7i|6v7Vf&KHAo~=j6#3F*7&Clbj z_B?>VP%OXoTis35htqlb`|6#3Px`h%i3UPFoF>-cW%>hBm@)qX`a)7znLy? zZ*Gp4x`C$a+xzp%*&+mt)sXG`hzN`+4|Lne1RkGv#%z__;0)~JlTmnFozI5<`s7W_C7k6IwtVmJ`;ouh;^`*@;LeZ~H*7g`ifte&bz(%PyOVN9g10 z?!yRNe0G%Cy0jT4W?&ay;oaGTC3)rX=Kv_N@TD#5%Mm=yJmTCi?jHvhh*3t56CI2N zi}+-8(&$Ylhm^-*h|3pmpLRMJ1i{K}cDyEOzayY08c(K{D77*2vYKNh1%|RD|K>cq<{u+L04O0&z|i`qqtI-e9e>&jb{3 zvAgyrgFSfi{Tq@!h|>R7L&p)=`r)I-5u%e}%Ed}MlA&!rtE}!m5z9GbdpZ*)IRAXo z(tENo(+_X{{Ako~@2-w_l`&$?8M%n1e{NWe1Z5dv1+0W3`0|B!13A`&k(XGy$`>~P zYp%#6j}nQ57xI1aCLgTE$j>J?f8NVpBmn}NwM@yrQDS8~mfa#%)%A@5La==qCsxkk zG4$o`_}~o0P*|pB;=!8Lu@;wE(S0Vs2Zw+>OnCU<0+2C_8E&;Atp47kEWiycln>|t z{V0h|a365c_URwcELoJ{J=+RB1QTCjJTZW=&raeC3*R=M7{SdvL}#?cNtf|LM(om_Z=Gcdz_WZ$`u)p%hLx3Abmh#ne;XS> z@5-fVIty$-W?rs2o5q?VN@2_6gg(A>+k~>_pj|)BWaT+2Q@e;N8htBA2=tul_%dos zvcn&Y0XMHB>=Kp)5mTL*7k#oDPEZw$*>XhnlTDkGJ@@bnOAP+q91ha{$MRwHcxAmxBTA1S_C0m zCaYhJRlKI79P^NI^;*=67E4>OSKaXk>%ls=oSBXDVLcF**_@_*V*?m611}f=*_M{M zZO9027D_K!#>R*dq+-a8Hp&V_q~XKm3b2K4tx+%KLYW$zWWmvuK?s2E^)n+u6U@@PUIX z!iSER_YmUrC4Ck2#|vi zm#(sB{Rko0W#(kxEojwymg>(hx*y>CRJER25CfoIeB2~N&>RA=4`-` z8)P7C!Fm~cRV{YM?jnFcFaplf7u}|dmClsgw!?vO05hX({o@Bf_4f;g(qgkY0vfx< zGkVSe3ov%X9zo+HGT6;9f`&O>l{I}UoN&Trmi$FS6g0Ytwp1dtE=bVmL}sdsENy&= zvWFx}RM*$|b5#f0DjaPvlL;DTfoU6;4H~(4HTuhVb~jBNG#E))@KGljG$IM6@^W2I z@L-Hvc&x3-_26f9^>){opn^-~R!hhqG*qy&JZ7IC3QG5ltCS;6uk0*Dsn%!XV5n%Z zsEfbs3W654O)$kdYPO6CkIHfS30hE!kE$>0(k~@gTE+gjEoc%w)lTaOVPnU+2-Z~I zr)QD`OeG}k+CY+z_iR!38A(WGdNZaW2}<|vtn5@!_m@o(Iv};=Jw=&>N_MCt(H@lH zJ6dwrrbDG=0l|KKVNhN!^W)MLxCbTM&V-TFcu?w1GYwa>oI5CsHr%U>PcZb{U;7Wr zyPb@gXhIN6<(AzFGJ`U9=U(N*R8mpv+d7{>uh|${sPer<#c-eq?2EKs+dKA*=#Mqr53rS3ZG!hgAW#`tqHIBdG z=2?K;04QLkn{VIdF%??E>aeZr8MUrKzEoE2c>Sn^AEl7Mc8nRouGdn!o(xQe* zJUalLn@ANhN~d~hL(~|F{jdZmYW#tIH4V`0W70z;a#wXLYN5kP$?vz^anxvs(e?VW zsG$z|*rDM|kP!U%ygIk&BzWAn+f~Md3MMS$)jbG;r!HC(HO^sE#yL$sC1Inj%Kj}x zGitcwV#VG%HkuYx#5bR4C*Z1Xw+45ekf{o{Fm$_~1TA=3w&k_hICLO5lGKS>1+nX1 zvlX7Yin{GN+1#L4hhmM}h$y?TM(ULS0Y}qvQCaj{Zq~=5qq1nJ`vNz%9>uI$Y?B+M z-_vXCI0=|oMJgThBY+Y{N(>1bZ1Jtz21vzD=m!d;Q8~K{X2eyp1s+Q%MHM?)i9=yV zR0+B9Qhx1b1|n)h9GWV#x3S~cXFXQmC?VI*+L)yvZTnu=!rqpK>9TZ1_u8VUAA zBLNH*bZaaGAF&{)Ei^MhMOJNa`vDeJMMd`A8D!CdgMDS+b9x8`DasI=%p+k!sixbe zRg$75GjMZ&Xw2iO>?`W|!kC*YI*x~ENRYN{qtsoJ&I@^&5NlgT``C!tu7QxG_nN6v zz6iv2*3D{{PZezJq9R0z%P-qY*@}{Uwo5|0!=e%BUJbKVULYiBWWjvGXy(en#iQ) zQ;uu9VuMpCj=;pSx4LIh^v*N&Ws4m5mUGUS`88I%d1r-4*7G&Bo#o$4jLY0h%PuFQ znd5oeXR8TRqzYLpVOIP3P-#zHEo}7{`T)I*iMkr46cxd6*_XXzJ{6|-HBe7=gNzDf z*o~yg6>A}Q+n*g%C<0b(0~@9Taglo7;W`R<3^_ZEsv^~%$2R$x{@iD2RC7G680`?k zJ~2~bi8LDh*qVX3R=|HRbjYZe>j zMFy!qCkWB@20#i_Uo!5BNbl<4B7WLh2(1Kgb2y=ZkZsj)dP1L}S9J{DfuQim-sBEl zL`H>K31h#qNG8c~jPI*}WtceEYtPx`3teA9QS(z6eMjn3F_<-3oka*m5|F8GPTbf& ztbIzWy3(y(sx8*Bdcob#@(^XHIbXrCzJ#u&GC($Ie;kfh6ZHWIMx=1j4GuFQ$#nNE zW?<;LB}_2{Qj)vvHLtD<5SUw55DoAf;+87#6X^F7l)?-X=1fZ}M*K=BS} zb}dkcTt~qk?Cc)m$78sEfUR~D&slSGv0kAOuw^UXW$KJ2%pSO&%Rl3bsc78NW zlJmKy+#OfiB-B{X$v4fEcE6VDn-^`QRk9t32Hm4gcgfVn{Z`9olL%ut8n()G5lhu# z%U0Aht{*AJDptU{*wZwbL4obUs_dI0GP!GXd0;vYIvEgIu5J(7<=ZZsV{oha+;nAS zb7504+R$6Y5KZgPDpTxFMJiG=)y;R7D}Vr9m5$p62rYFFZEwbTYqq7ZY|G`VW>LO_BNzTWWh;K$wWZ}Jd4R&@7T%6SYJ84J036Ydv54jQBVX9RkJ~>A#>{f zd6p>dx#OCg7Ry)ePH!JwI}JIkIrM$%lF;JY<1(lGK}@OTZ#FDWGm#O?Ta30GvD18@ zsj2`yL;8Hv>7Xf15AfJp_{+baCoo&?HzubtUF6lPxZ5{_7UT^Mg(5C>D!MWY)-g@` z?-geM+M)GsS4AQOU$t|$lM$EOCOcD`3FXE2WXqh=yHuNL?A=yGSSWs45R%g?BemNM z7p_c7g9mac0UHMIAQv_lK@7^(fljhWLz&WR~=1XBjm^ z8p}4*wq*$UGUE2yqk>{?#O@MsWSq=X5G~U$z+CE(ci&HPeSBbBYGzi38+P*pqH#qL zV>g&{smZfqJv$i-mm55L|3OH``RX321|gh6F<%?gv54B*>5Ar?4s)+vo>ryZt_dt*G8x=W33tni>FdFTJX gt%uQJ?hY+SmSR=S+83vB<+ivYc_@BSRk<_noC3`knD$k>7TI`{t`x zUH8M?`TPFj{<6P)*ZuwQV|Q`5?swhYhwJl?F3yf;zjHGFVy!3vh-I{o?~i z@B8`L`TM?mzdv?A_aAohPdjw;Kd=Z)_HFl{Pv3m=@ceHt55IQ5-1oO1cAfKRmfqV2 zuuN~eFW`{w@g^7UbVee7?){O!EIIqnbF3)ln(mQeM^fj+<59j^eU3Y$acK3b}h>pr9 zy*~SJ)n6aGn*rQkbboLR%nSGkp0KomFZOpocfa25kA3&k+5WP>SOkXPmeyYbPTE@-cmpxm$E6;gy|K#Pf=}k9ChI*AVf$Wr0&Cslo9A<`I&q!= z-Qr$p&WaDfF*KNnPvA!HD~Cq+x(rC+@o=6VsPSlMAaHzKVR@p;s?dTlQ{2j7MGK6! zTo5v*d;RL$liNSsUi7z1Z|J~@+j`i;`{Vm}-K+a!clfEh>aPyB9~Kq_9Z-nHaanso z2PwwK1sv`7o3mrzUGA^;$BxY(7mx&o{3B8pLbdJ@oHwOq>z1Cuq_}jnDnck3FwRdS z;OG7AvFm@k+28heU0g6v@?d=^V!$>E!N=6}se}-Cwn{Y~gd$+FlQ6VSO(=micIo8n z%#{*E=cg`b%UX%S<5NgEede~O!JV-{;-}`epmmbCGj7<`$pKq+@3=Dr4yTT4{UcF0 zpJATtgo>@<&Kkgxj~ZT3Zv^=dGTod~udNrh4mee=izTqc#jEPK!V+LKTDOJ5N71P&kJ!T4fv^ycmzI5(qr zHEZKNShCdwF9R_=8SN>Q>5SHUh~Z@c7dt{f8~YllA93?6jJFtw^33QhUoEy zd_4aP(-W~h9d*Uy(SQq7Sml;=p#h4E>#R31l;HNX&!^+J<}uJgq%za0StRt}MD5 zmJQyCLUEn7FEbx9K(0(aHaGxTut-bl)a%3Ha@U=mANT+3Kk?oE;g_}(VK?n{@Yp+-zgcPX40Er-SZ2YzW)^O9oA_nqU!83>