Commit graph

94 commits

Author SHA1 Message Date
LimeDrive
cdc3d0834b refactor(debrid): switch to DLToken/EDToken/OCCredentials/PPCredentials 2026-04-04 12:14:45 +02:00
LimeDrive
e79d5874d7 feat(admin): améliorer l'interface du tableau de bord avec des sections et des informations sur les torrents 2026-04-03 17:04:09 +02:00
LimeDrive
d12df0f4e8 feat(deploy): ajouter un fichier de configuration pour le déploiement scalable avec Traefik et PgBouncer
feat(logging): implémenter la suppression des fichiers de log obsolètes et ajuster la configuration des logs

feat(settings): modifier la structure des paramètres de configuration et ajouter un niveau de log TRACE

feat(admin): fusionner les pages de configuration TMDB et Indexeurs, et mettre à jour les titres et descriptions

fix(system): corriger les messages d'alerte concernant le redémarrage des paramètres système
2026-04-03 14:07:03 +02:00
LimeDrive
e8b0976332 refactor(logging): switch info/debug logs to trace across modules
convert info/debug logs to trace across modules for deeper diagnostics
without changing behavior
2026-04-03 12:09:26 +02:00
LimeDrive
333c2a1cbb feat(settings): update orphan torrent cleanup age to 7 days and adjust related documentation 2026-04-02 21:07:28 +02:00
LimeDrive
09adc19273 feat(tmdb_matcher): implement orphan matcher with history
- add TMDB orphan matcher backend (orphan_matcher.py) and search client (tmdb_search.py)
- introduce Redis-backed run history tracker (history.py) for matcher runs
- extend TorrentItemModel with tmdb_match_attempted_at and index
- add Alembic migration to create tmdb_match_attempted_at and its index
- integrate new tmdb_orphan_matching job into scheduler; expose in UI
- add admin UI: tmdb_matcher.html, history/revert endpoints, and nav entry
- wire settings: scheduler_tmdb_match_interval_hours and batch size
- enhance title normalizer: strip possessive s and remove technical brackets/tokens
- update admin docs to reflect new matcher and deprecation of old cleanup
- update admin base navigation and scheduled tasks page accordingly
2026-04-02 20:43:36 +02:00
LimeDrive
acef8f2516 feat(torrent-group): add initial grouping framework for torrents
introduce initial torrent grouping: add torrent_groups table and
group_id on torrent_items. include migrations, ORM models, and DAOs.
expose admin/web endpoints to group by info_hash and by title/size.
propagate tmdb_id across grouped items. non-destructive and backwards
compatible with existing data
2026-04-02 16:13:09 +02:00
LimeDrive
2a175242a7 feat(admin): add dynamic settings management system with new UI
Introduce a comprehensive settings management system that allows runtime
configuration through a new admin interface. The system includes:

- Database-backed settings with Redis caching for performance
- Settings registry defining types, defaults, and categories
- New admin UI with navigation cards and dedicated sub-pages for each category
  (general, cache, indexers, proxy, system, TMDB)
- Shared view logic for consistent GET/POST handling across sub-pages
- Automatic seeding of defaults and application of overrides at startup
- Validation and type coercion for setting values

The previous static configuration page has been replaced with a modular,
category-based interface that provides better organization and extensibility
for future configuration needs.
2026-04-02 13:09:53 +02:00
HyPnoTiiK
e53c8984a9 cleanup 2026-04-01 23:24:44 -04:00
HyPnoTiiK
868379cf80 UI improvements 2026-04-01 23:05:45 -04:00
LimeDrive
3d3372a4bd feat: add scheduled tasks admin page with auto-refresh and job management
- Implemented a new HTML page for managing scheduled tasks in the admin panel.
- Added JavaScript functionality for auto-refreshing job statuses and triggering jobs manually.
- Enhanced job result display with relative time and duration formatting.
- Introduced a toast notification system for user feedback on job actions.

fix: update Redis cache key generation to include a prefix

- Modified the Redis cache key generation to prepend "search:" to the hashed key for better organization.

refactor: improve Yggflix API search functionality

- Added an optional parameter to the search_movie method to specify the search type.
- Implemented a fallback mechanism to broaden search if initial results are insufficient.

chore: enhance Yggflix service with improved result handling

- Introduced a threshold for retrying searches with a broader query type based on result ratios.
- Increased the limit for sorted results from 50 to 100.

feat: add maintenance endpoints for managing expired API and peer keys

- Created endpoints to disable expired API keys and peer keys in the admin panel.
- Added functionality to clean orphan torrent items based on a specified age.

feat: integrate scheduler into the application lifecycle

- Initialized a database cleanup scheduler during application startup.
- Ensured proper shutdown of the scheduler during application termination.
2026-04-02 00:52:11 +02:00
LimeDrive
76bb5ab8aa feat: améliorer la gestion des filtres et ajuster le délai de rafraîchissement en arrière-plan 2026-04-01 18:10:22 +02:00
LimeDrive
b8399900d5 feat: add mismatches management and unmatched torrents search
- Implemented a new admin page for managing TMDB mismatches, including listing, creating, and deleting mismatches.
- Added functionality to search for unmatched torrents with filters for language and type.
- Enhanced UI with improved filtering options and group toggling for better user experience.
- Introduced toast notifications for user actions such as creating mismatches and assigning TMDB IDs.
- Updated backend routes to handle mismatch creation, deletion, and assignment of TMDB IDs to selected torrents.
2026-04-01 17:51:15 +02:00
LimeDrive
d65366cce2 feat: Ajouter la gestion du cache local Postgres avec des paramètres de résultats minimum et de durée de validité 2026-04-01 15:37:54 +02:00
LimeDrive
94c0e26f62 feat(normalizer): add title extraction and boundary detection logic 2026-04-01 12:00:41 +02:00
LimeDrive
fa68cb2c6b feat: Implement title matching and language rules management
- Refactored title filtering logic in `filter_results.py` to utilize a new title matching module.
- Introduced normalization functions for search queries in `jackett_service.py` and `yggflix_service.py`.
- Added new endpoints for managing title and language normalization rules in the admin views.
- Implemented loading and reloading of title matching and language rules in the application lifecycle.
- Enhanced release group extraction and language detection in `parser_utils.py` using the new title matching module.
2026-04-01 11:04:04 +02:00
LimeDrive
204daee1a0 feat: ajouter une action pour vider le cache de recherche et mettre à jour la logique de filtrage des modèles autorisés 2026-03-31 03:18:04 +02:00
LimeDrive
fb019a85bf feat(search): add configurable indexer search phases and RealDebrid optimization
Introduce a 4-phase search system where private indexers are grouped by priority:
- Phase 1 (priority_private): always queried first
- Phase 2 (intermediary_private): queried only if private results < minCachedResults
- Phase 3 (fallback_private): queried only if still insufficient
- Phase 4 (public): Yggflix relay position controlled by yggflixPriority toggle

Add rdMinCachedBeforeCheck setting to skip RealDebrid if prior services already found enough cached results, since RD API is slow (~3s) and rate-limited. Default to 3.

Non-blocking magnet cleanup in AllDebrid availability checks via background task. G3MINI now computes info_hash from .torrent files when API omits it. Public indexer results are excluded from final matches unless already cached by a debrid service.
2026-03-30 17:49:18 +02:00
LimeDrive
0d0c238383 feat(trackers): add support for ABN, G3MINI, and TheOldSchool UNIT3D indexers
Remove deprecated Sharewood tracker integration and add three new private trackers:
- ABN (Abnormal): keyword-based search with name filtering
- G3MINI (Gemini Tracker): TMDB/IMDB ID-based filtering
- TheOldSchool: TMDB/IMDB ID-based filtering

Includes new API clients, result parsers, and service layers. Updates frontend UI, settings configuration, and credential handling to support the new indexers with proper passkey management.
2026-03-30 14:23:20 +02:00
LimeCat on the Hub's
ef8b1a3890
Merge pull request #98 from HyPnoTiiK/develop
Add register page (/register)
2026-03-30 02:17:53 +02:00
LimeDrive
e60af3c95d feat(register): migrate to Jinja2 templates and add Redis-based rate limiting
- Replace inline HTML templates with Jinja2 templates from static directory
- Add Redis client for rate limiting public registration endpoint
- Implement rate limiting of 5 requests per IP per hour
- Improve API key naming with date-based suffix for better traceability
- Add utility functions for IP hashing and rate limit enforcement
2026-03-30 02:09:53 +02:00
LimeDrive
7755a78842 feat(security): add Fernet encryption for config tokens and CSRF protection
- Implement Fernet encryption for configuration URLs to protect sensitive user settings
- Add CONFIG_SECRET_KEY environment variable for key derivation
- Add server-side /api/config/encode endpoint for secure config token generation
- Add CSRF token generation and validation for all admin POST routes
- Auto-inject CSRF tokens into admin forms and AJAX requests via JavaScript
- Update frontend to use async server encoding instead of client-side Base64
- Add localStorage fallback for config restoration on /configure pages
- Maintain backward compatibility with existing Base64-encoded URLs
- Log warning at startup if CONFIG_SECRET_KEY is not configured
- Convert debug logs to trace level in TorrentSmartContainer for reduced noise
2026-03-30 01:18:08 +02:00
HyPnoTiiK
a450a34aa3 Add register page (/register) 2026-03-29 14:22:46 -04:00
LimeDrive
bdc09d69f7 fix: apply compatibility fixes for new admin architecture 2026-03-29 17:54:55 +02:00
HyPnoTiiK
0f37de06d9 Config page redesign 2026-03-29 17:50:07 +02:00
LimeDrive
8468bae024 feat(admin): add metadata mappings table and complete admin UI redesign
Introduce a metadata_mappings table with DAO/model layers for admin-managed
IMDB→TMDB/title overrides, and overhaul the admin panel with a modern
Bootstrap 5 sidebar UI.

- Add metadata_mappings table with migrations (search_titles, year_override)
- Add MetadataMappingDAO with standalone session helpers for use outside FastAPI
- Add new admin pages: dashboard, mappings CRUD, maintenance, config, hash/TMDB search
- Integrate DB mapping lookups into Cinemeta and TMDB metadata providers
- Update catalog views to use DB mappings before hitting external APIs
- Rewrite all admin templates with Bootstrap 5, sidebar navigation, French labels
- Add session-based auth for admin routes with Redis session store
2026-03-29 04:46:51 +02:00
LimeDrive
0aba81abb2 feat(peer): add authenticated peer-to-peer cache sharing
Introduces a secure peer-to-peer cache sharing system using HMAC-SHA256 request signatures and Fernet (AES-128-CBC) response encryption.

- New peer_keys table for per-peer credential management (key_id, secret)
- New /api/peer/check endpoint returns encrypted debrid availability data
- New /api/peer/items endpoint returns encrypted torrent metadata
- Rate limiting per peer key with configurable limits and windows
- Admin UI for creating, viewing, revoking, and deleting peer keys
- Peer cache enrichment integrated into BaseDebrid L2.5 lookup pipeline
- StremThruDebrid override with cross-service PG L2 check + peer cache
- Removed old /api/share/cache endpoint (replaced by /api/peer/*)
- Added cryptography package dependency

BREAKING CHANGE: The /api/share/cache endpoint has been removed and replaced with /api/peer/check. Clients must update to use HMAC authentication with X-Peer-Key-Id, X-Peer-Timestamp, and X-Peer-Signature headers.
2026-03-28 05:07:40 +01:00
LimeDrive
ce2e88a24d refactor: Supprimer le cache public et les références associées 2026-03-25 03:36:36 +01:00
LimeDrive
7074387c3a feat: Implement StremThruDebrid integration with new SDK
- Added StremThruDebrid class for handling debrid operations using StremThru as backend.
- Introduced StremThruSDK for API interactions, including health checks and request handling.
- Created error handling with StremThruError for better error management.
- Updated torrent_smart_container to use the new StremThruDebrid class.
- Added necessary utility functions and data structures for managing magnet and torrent data.
- Implemented caching and session management for improved performance and reliability.
2026-03-25 02:23:56 +01:00
LimeDrive
93ec64eb4a fix: update StremThru handling and improve torrent file processing in cache pre-fetch 2026-03-24 17:16:30 +01:00
LimeDrive
68a71dd886 revert: remove allow_anonymous_access flag and fix broken indexer enable flags
The allow_anonymous_access setting introduced in a previous branch was
partially implemented and breaking: it was only checked in the
/{config}/manifest.json route but ignored entirely in the stream search
route, which always returned 401 anyway. This created an inconsistent
and misleading security posture. The flag has been removed from settings
and the manifest route now unconditionally returns 401 when no API key
is present, consistent with the rest of the API.

Additionally, the SERVER-SIDE INDEXER ENABLE FLAGS (sharewood_enable,
c411_enable, torr9_enable, lacale_enable) were incorrectly tied to the
presence of server-side credentials via check_env_variable(). This was
a breaking regression: users with their own tracker credentials in their
Stremio config were silently blocked from using those indexers whenever
no server-level key was configured. These flags are now True by default
and can be explicitly set to False via environment variable to disable
an indexer server-wide.

A new generationfree_enable flag (True by default) has been added for
consistency. The config page (index.html) now conditionally renders
indexer checkboxes and credential fields based on these enable flags,
mirroring the existing jackett_enable pattern.
2026-03-24 01:04:42 +01:00
laster13
18551fa8ff Improve search fallback/coverage for private indexers and fix AllDebrid cached check cleanup 2026-03-22 18:43:06 +00:00
laster13
3066565735 Ajout Generation Free 2026-03-19 16:42:48 +00:00
laster13
eecceadc9f La-Cale et YggLeak 2026-03-16 15:12:27 +00:00
Telkaoss
4fc4a5cacc update 2026-03-02 11:32:28 +01:00
Telkaoss
563a4129a8
Add files via upload 2026-02-25 11:56:56 +01:00
Telkaoss
bd66a772f7
Add files via upload 2026-02-25 10:16:48 +01:00
Telkaoss
02b3794ce6
Add files via upload 2025-11-07 02:02:29 +01:00
Telkaoss
e2e2f59d7c
Update index.html 2025-05-27 15:57:46 +02:00
Telkaoss
30f28b8da5
Update config.js 2025-05-27 15:55:37 +02:00
Telkaoss
2c1892c260 update 2025-05-23 04:48:08 +02:00
Telkaoss
e196b6413a
Update api_keys.html 2025-05-23 04:29:06 +02:00
Telkaoss
7a5caab47c
Update create_api_key.html 2025-05-23 04:26:27 +02:00
Telkaoss
972107876f
Update config.js 2025-05-11 03:31:49 +02:00
Telkaoss
35edbcf29e
Update index.html 2025-05-11 03:31:39 +02:00
Telkaoss
c76df27bca Stremthru 2025-05-05 05:45:09 +02:00
Telkaoss
1530d0557c Stremthru, async ++
Async Streaming: Converted key methods (fill_buffer, stream_content, close, get_stream_link, head_playback) to async for non-blocking streaming and improved scalability.

🔄 Unified Stremthru: Full refactor with dynamic STORE_CODE_TO_NAME / STORE_NAME_TO_TOKEN_KEY mappings and propagation of store_name in all requests (add_magnet, unrestrict_link, etc.). Updated RealDebrid to delegate via Stremthru.

💾 Cache Persistence: Store valid Stremthru links in Redis (stremthru:working:{store_code}:{info_hash}, TTL 7 days) and leverage this cache to mark links as "working" even on cached results.
2025-05-04 05:34:36 +02:00
Telkaoss
33ba79f68e
Update config.js 2025-04-22 21:20:50 +02:00
Telkaoss
40283dce5a
Update config.js 2024-12-19 18:01:22 +01:00
Telkaoss
9cf60a316e
Update index.html 2024-12-19 18:01:03 +01:00