Commit Graph
12 Commits
Author SHA1 Message Date
ayrisdevandClaude Sonnet 5 13355d9f67 Fix invalid JSON in partners.json breaking footer partner links
Stray extra quote after the milliol.com URL made the file invalid JSON,
so json_decode failed and the footer silently rendered no partner links.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-22 13:47:13 +03:00
ayrisdevandClaude Opus 4.8 e8317dec18 Add JSON-driven partner links section to footer
Reads resources/data/partners.json (url/anchor/title/rel), cached by the file's
mtime so edits go live on the next deploy. Skips invalid/non-http entries and
renders nothing when the list is empty.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-22 10:06:05 +03:00
ayrisdevandClaude Opus 4.8 2ef6916891 Fix inflated watch metrics: one row per viewing instead of per 30s ping
The player pings /track/watch every 30s with the CUMULATIVE position, and each
ping inserted a new row (~18 rows per viewing, 254k/day). SUM(seconds_watched)
therefore summed cumulative snapshots: a single 58-minute viewing reported as
4238 minutes (~73x), skewing TrendingController's watch-minute ranking and the
admin "total_sec"/"plays" figures.

Upsert per (session_id, episode_id) so SUM is the real watch time and COUNT is
the real play count. Adds the supporting index.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 14:59:00 +03:00
ayrisdevandClaude Opus 4.8 87e0d7dcf5 Perf: drop session/bot middleware from /media so Cloudflare can cache images
Media responses carried Laravel session cookies (Set-Cookie), which made
Cloudflare BYPASS the cache for every cover/avatar/banner. These are public
files with no user context, so the session/cookie/CSRF chain is unnecessary.
Also skips BotDetector (one analytics_bot_logs INSERT per image) and the SEO
redirect lookup.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 13:28:18 +03:00
ayrisdevandClaude Opus 4.8 782226674a Security: harden SSRF guard on stream proxies, fix vtt-proxy allowlist
Resolve hosts to IPs and reject private/reserved/link-local ranges (incl.
169.254 cloud metadata) instead of matching hostname text, and re-validate
every redirect hop by following them manually. Restrict curl to http(s).
vtt-proxy allowlist now requires an exact host or a real subdomain.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 13:12:44 +03:00
ayrisdevandClaude Opus 4.8 cf8c5be984 Add discreet partner link to footer
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-15 10:23:07 +03:00
ayrisdevandClaude Opus 4.8 4d24b04cef Add "Created by ayris.tech" credit to footer
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 11:37:49 +03:00
ayrisdevandClaude Opus 4.8 145ff396ee Add Ayris VPS Panel analytics script to frontend head
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 11:31:51 +03:00
ayrisdevandClaude Opus 4.8 32777dabac Security: remove backdoor scripts from public/ (setup, migrate_run, clearcache, error_log)
Unauthenticated cache-clear (DoS) and weak-key migration runners; not needed by the app.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 01:31:14 +03:00
ayrisdevandClaude Opus 4.8 6437ac112c Fix container crash: skip route:cache (app has Closure routes), make entrypoint tolerant
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 00:15:13 +03:00
ayrisdevandClaude Opus 4.8 3f602c61ef Add production Dockerfile (php-fpm + nginx) for Coolify
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 00:03:55 +03:00
ayrisdevandClaude Opus 4.8 a63515cfc6 Initial commit: Animexe Laravel platform
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-14 00:01:48 +03:00