MovixOpenSource/API/Mainapi
Movix cbc3f1dad9 Merge depuis le repo privé après tests
Corrections de vulnérabilités sur les commentaires (IDOR)
Rajouts de ratelimit sur les commentaires
Correction de pas de son sur hlsplayer
Livetvplayer détecte le type du flux automatiquement
Amélioration du scraper darkiworld (très chiant)
Correction du détection de l'extension

Correction de la vérification du VIP sur server.py (proxy)
Correction du scraper seekstreaming proxy

Nouvelle url streamonsport et coflix
Correction du scraper fstream (get seasons) car la route fonctionne plus sur leur site
Correction du scraper francetv
Ajout de hydrackerBatch (c'étais pour des tests)
2026-05-03 12:47:41 +02:00
..
config tird release 2026-04-28 17:55:00 +02:00
exportscripts tird release 2026-04-28 17:55:00 +02:00
middleware tird release 2026-04-28 17:55:00 +02:00
routes Merge depuis le repo privé après tests 2026-05-03 12:47:41 +02:00
utils Merge depuis le repo privé après tests 2026-05-03 12:47:41 +02:00
.env.example tird release 2026-04-28 17:55:00 +02:00
app.js Merge depuis le repo privé après tests 2026-05-03 12:47:41 +02:00
checkVip.js tird release 2026-04-28 17:55:00 +02:00
commentsRoutes.js Merge depuis le repo privé après tests 2026-05-03 12:47:41 +02:00
likesRoutes.js tird release 2026-04-28 17:55:00 +02:00
linkSubmissionsRoutes.js tird release 2026-04-28 17:55:00 +02:00
linkzy.json tird release 2026-04-28 17:55:00 +02:00
liveTvRoutes.js Merge depuis le repo privé après tests 2026-05-03 12:47:41 +02:00
mysqlPool.js tird release 2026-04-28 17:55:00 +02:00
package-lock.json tird release 2026-04-28 17:55:00 +02:00
package.json tird release 2026-04-28 17:55:00 +02:00
README.md tird release 2026-04-28 17:55:00 +02:00
recommendationRoutes.js tird release 2026-04-28 17:55:00 +02:00
server.js Merge depuis le repo privé après tests 2026-05-03 12:47:41 +02:00
sharedListsRoutes.js tird release 2026-04-28 17:55:00 +02:00
top10Routes.js tird release 2026-04-28 17:55:00 +02:00
wishboardRoutes.js tird release 2026-04-28 17:55:00 +02:00
wrapped_tables.sql tird release 2026-04-28 17:55:00 +02:00
wrappedRoutes.js tird release 2026-04-28 17:55:00 +02:00

Main API Movix

C'est le cœur applicatif du projet. Si le frontend affiche un catalogue, authentifie un user, synchronise du localStorage, gère les commentaires, le Wishboard, le Top 10, le Live TV, le debrid ou les pages VIP, il finit très souvent ici.

Le service tourne en mode cluster via server.js : un master lance plusieurs workers, surveille les redémarrages et gère un graceful shutdown. app.js monte ensuite Express, Redis, le pool MySQL, les caches disque et les routes injectées par dépendances.

Ce que le service gère

  • auth, sessions et profils
  • recherche, metadata TMDB et agrégation de sources
  • sync frontend <-> backend pour une partie de l'état utilisateur
  • commentaires, likes, listes partagées, Wishboard et soumission de liens
  • Live TV, proxies, debrid et intégrations de scraping
  • VIP, invoices, wrapped et features communautaires

Démarrage

cd API/Mainapi
cp .env.example .env
npm install
npm run dev

Ne lance pas le service avec un .env vide : MySQL, Redis, JWT, TMDB et plusieurs routes métier en dépendent directement.

Notes utiles :

  • le serveur HTTP écoute actuellement sur http://localhost:25565
  • server.js bind aujourd'hui le port 25565 en dur
  • NUM_WORKERS permet de régler le nombre de workers du cluster
  • MySQL et Redis sont nécessaires pour une grosse partie des routes

Architecture

API/Mainapi/
|-- server.js                 # Master cluster + workers + graceful shutdown
|-- app.js                    # Bootstrap Express, middleware, deps partagées
|-- mysqlPool.js              # Pool MySQL unique
|-- config/redis.js           # Redis
|-- middleware/               # CORS, sécurité, auth
|-- routes/                   # Modules avec configure(deps)
|-- commentsRoutes.js         # Commentaires
|-- likesRoutes.js            # Likes / dislikes
|-- sharedListsRoutes.js      # Listes partagées
|-- liveTvRoutes.js           # Live TV
|-- wishboardRoutes.js        # Wishboard
|-- top10Routes.js            # Classements
|-- wrappedRoutes.js          # Wrapped
|-- linkSubmissionsRoutes.js  # Soumission de liens
|-- utils/                    # Cache, proxies, axios helpers, VIP, etc.
|-- cache/                    # Caches disque
`-- exportscripts/            # SQL et scripts de migration

Le pattern important dans routes/ : beaucoup de modules exposent configure(deps). C'est app.js qui injecte les clients HTTP, le cache, les helpers et les constantes partagées avant montage.

Variables d'environnement à renseigner en premier

Le fichier API/Mainapi/.env.example est la référence complète. En pratique, les groupes de variables à traiter en premier sont :

  • cœur applicatif : JWT_SECRET, TMDB_API_KEY, FRONTEND_BASE_URL
  • données : DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME
  • cache et coordination : REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, NUM_WORKERS
  • scraping / proxy : PROXY_SERVER_URL, CF_PROXY_403_URL, BYPASS403_SERVER_URL, SOCKS5_PROXIES, HTTP_PROXIES
  • anti-abuse / forms : TURNSTILE_SECRET_KEY, TURNSTILE_INVISIBLE_SECRETKEY
  • paiement / VIP : variables VIP_*, BTC_EXPLORER_API, LTC_EXPLORER_API

Certaines intégrations sont très spécifiques à des sources données, par exemple les cookies DARKIWORLD_*, FSTREAM_LOGIN_* ou XTREAM_*.

Points d'entrée utiles

  • auth et profils : routes/authRoutes.js, routes/sessions.js, routes/profiles.js
  • persistance frontend : routes/sync.js
  • recherche et catalogues : routes/search.js, routes/tmdb.js
  • scraping / lecture : routes/cpasmal.js, routes/fstream.js, routes/wiflix.js, liveTvRoutes.js
  • communautaire : commentsRoutes.js, likesRoutes.js, sharedListsRoutes.js, wishboardRoutes.js, linkSubmissionsRoutes.js
  • VIP / paiements : utils/vipDonations.js, routes/vipDonations.js

À garder en tête

  • Le backend actif est ici, pas dans l'ancien contenu direct de API/.
  • Plusieurs tables MySQL sont initialisées automatiquement au démarrage.
  • Une partie du comportement applicatif dépend de caches disque et de proxys externes ; un bug peut venir d'ailleurs que du code route lui-même.
  • Si une feature touche la lecture vidéo, regarde aussi API/proxiesembed/, API/miscs/ et parfois l'extension navigateur.