treamz
a7d6287d65
Image converter: add AVIF/TIFF/GIF/BMP/HEIC, quality slider, custom resize
...
- Renamed: Сжать картинки → Конвертер изображений
- New output formats: AVIF, TIFF, GIF (via sharp)
- New input formats: AVIF, TIFF, GIF, BMP, SVG, HEIC
- Quality slider (10-100%) in UI
- Custom resize option (prompt for px)
- 3-column control layout (format, size, quality)
- Updated descriptions in dashboard, DB, page title
2026-03-22 01:15:03 +03:00
treamz
378c1a075e
Add PDF tools: merge, split, rotate, delete, watermark, compress, convert, protect
...
- 15 API endpoints for PDF operations (pdf-lib, pdf-parse, Ghostscript)
- Frontend with 8 operation tabs
- Merge multiple PDFs, split by page ranges
- Rotate/delete/reorder pages
- Add watermark text, page numbers
- Compress via Ghostscript (screen/ebook/printer quality)
- PDF to PNG/JPG, Images to PDF
- Password protection, text extraction
- Added to sidebar, dashboard (Utils category), DB
2026-03-22 01:10:37 +03:00
treamz
b7e9eb03ab
Status page: clean neutral design, uptime only
...
- Removed technical details (memory, PID, disk, ffmpeg checks)
- Services: API, Database, Image Processing, Video Processing, Auth
- Clean layout like status.claude.com
- Same header as auth pages (unified nav)
- English labels (Operational/Degraded/Outage)
2026-03-22 00:43:06 +03:00
treamz
5c7066b7d3
Security hardening: helmet, rate limits, session fixes, admin auth
...
Critical fixes:
- helmet middleware (X-Frame-Options, HSTS, X-Content-Type, CSP, etc)
- Remove /admin from PUBLIC_PREFIXES (double auth: session + admin role)
- Session cookie: httpOnly, sameSite=lax, 1-day expiry (was 30 days)
- Session regeneration on login (prevent session fixation)
- Blocked user check on login
Rate limiting:
- /auth/login: 10 req / 15 min (brute force protection)
- /auth/register: 10 req / 15 min (spam protection)
- /parse, /metadata, /text, /preview: 20 req / min (DDoS via server)
Input sanitization:
- Strip HTML tags from display_name (stored XSS prevention)
2026-03-22 00:39:38 +03:00
treamz
64bf816e34
Status page: public monitoring at /status
...
- Real-time checks: web server, MariaDB, FFmpeg, disk usage
- Auto-refresh every 30 seconds
- Overall status banner (operational/degraded/outage)
- Server info: Node version, uptime, memory, PID
- Public page (no auth required)
- Responsive, theme-aware design
2026-03-22 00:35:15 +03:00
treamz
3353253cef
Fix video progress: parse each chunk, -progress pipe:2, out_time support
...
- Parse time= from each stderr chunk (not accumulated buffer)
- Add -progress pipe:2 flag for frequent progress output
- Support both time= and out_time= formats
- Progress only increases (no jumps back)
2026-03-22 00:22:48 +03:00
treamz
6aca7e9e47
Video: async conversion with live progress polling
...
- /convert now returns immediately, ffmpeg runs in background
- Client polls /progress every second for live progress %
- Progress endpoint returns downloadUrl/outputSize when done
- UI shows real-time percentage during conversion
2026-03-22 00:20:04 +03:00
treamz
b079263534
Fix video: use mpeg4 software encoder (v4l2m2m hw fails on this RPi)
2026-03-22 00:15:05 +03:00
treamz
01c31ec35b
Fix: landing served at / instead of dashboard
...
- Renamed index.html → dashboard.html (express.static was serving index.html for /)
- / now correctly shows landing page (no logout button, no dashboard header)
- /dashboard shows dashboard.html (protected, requires auth)
- Incognito users see only landing + login/register
2026-03-22 00:04:17 +03:00
treamz
1837f42a91
AdminJS admin panel + dynamic content API
...
- AdminJS at /admin with auth (admin role only)
- Manage: users, categories, tools, content blocks, settings
- DB tables: settings, categories, tools, content_blocks
- Users table: added role (user/admin) and is_blocked fields
- API: /api/settings, /api/tools, /api/content/:section
- Sidebar: admin link visible only for admin users
- Removed /logs from public routes (now in AdminJS)
- Video converter: fixed ffmpeg codecs for RPi5 (h264_v4l2m2m)
- Dependencies: sequelize, @adminjs/sequelize, mariadb
2026-03-21 23:46:41 +03:00
treamz
44c85f6e44
Add video converter: convert, compress, extract audio, GIF
...
- New tool: /video with 4 modes (convert formats, compress, extract audio, GIF)
- Backend: ffmpeg-based processing with progress tracking
- Supports MP4, WebM, MOV, AVI, MKV input, up to 200MB
- Frontend: drag-drop upload, mode tabs, progress bar, download
- Added to sidebar, dashboard (Images category), WA_CATEGORIES
- Total tools: 14
2026-03-21 23:28:11 +03:00
treamz
f8616e32b4
Auth + Landing + Categories
...
- Local auth: registration/login with email+password (bcrypt, MariaDB)
- Landing page: marketing page at / with hero, categories, advantages, CTA
- Tool categories: Images (4), Code (3), Web (3), Utilities (2)
- Sidebar: category dividers, user avatar with logout
- Protected routes: all tools require auth, landing/login/register public
- New files: lib/db.js, routes/auth.js, login.html, register.html, landing.html
- Dependencies: bcrypt, mysql2
2026-03-21 22:54:31 +03:00
treamz
5b528d243a
Refactor: modular architecture, security, config
...
- Split monolithic server.js (1111 lines) into route modules
- Add .env config (port, session secret, quality, limits)
- Add SSRF protection for parser/proxy/redirect endpoints
- Add optional password auth middleware
- Add structured logger (replaces raw fs.appendFileSync)
- Add graceful shutdown with timeout
- Add extended /health endpoint (uptime, memory, pid)
- Add ecosystem.config.js for PM2 (memory limit, restart policy)
- Make compress quality configurable (was hardcoded 60)
- Expand SVG AI icons library (7 -> 20 icons)
- Add dotenv dependency
2026-03-21 22:18:54 +03:00