1
0
unfr cc2ad0a6a7 Corrections pour la sélection multiple et l'authentification
## Corrections de fonctionnement

### Synchronisation des checkboxes lors du filtrage
- Ajout de la colonne checkbox dans la fonction updateTable() côté client
- Les checkboxes apparaissent maintenant correctement lors du filtrage par statut
- Synchronisation du panneau d'actions en lot après chargement des données

### Correction de l'authentification unifiée
- Restauration de l'import argon2 manquant
- Fix de l'erreur "argon2 is not defined" lors de l'authentification DB

## Améliorations techniques
- Structure HTML cohérente entre génération serveur et client
- Gestion correcte des événements de sélection après filtrage
- Maintien de la fonctionnalité complète de sélection multiple
2025-09-27 15:54:52 +02:00
2025-08-13 17:27:57 +02:00
2025-08-13 08:51:01 +02:00
2025-08-13 08:32:08 +02:00

Postauto

Poster automatiquement via une simple commande depuis un VPS, dédié ou seedbox

Postauto est un ensemble de scripts (bash + une petite UI web Node.js) qui :

  • génèrent les PAR2
  • postent via Nyuu (avec obfuscation)
  • envoient automatiquement sur le site (MediaInfo/BDInfo inclus)
  • proposent un suivi sur une page web

Sommaire

Prérequis

  • Linux (script bash)
  • Accès SSH (sur /home/$USER)
  • Outils de base : basename, curl, screen, nginx (pour lUI web)
  • Testé avec :
    • VPS / dédiés
    • Seedbox : Ultra.cc , Whatbox , Dediseedbox (limitations)

Linstallateur installe/emballe tout le reste (mediainfo, sqlite3 si besoin, 7z, BDInfo, Nyuu, ParPar, Node v22, modules npm…).

Installation

Avec droits sudo (recommandé)

Installe mediainfo/sqlite via paquets Debian (meilleure compatibilité) :

wget -qO install.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/install.sh \
  && chmod +x install.sh \
  && sudo --preserve-env=HOME ./install.sh

Sans sudo

Utilise des binaires « standalone » dans ~/bin :

wget -qO install.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/install.sh \
  && chmod +x install.sh \
  && ./install.sh

Configuration (bash) — /home/$USER/autopost/conf.sh

Variables obligatoires (placeholders à remplacer), + règles sqlite/mysql.

#!/bin/bash
# CONFIG À MODIFIER
URL_API="A NOUS DEMANDER SUR DISCORD"
APIKEY="A RETROUVER DANS VOTRE PROFIL"

DOSSIER_GLOBAL="/home/$USER/"
DOSSIER_NFO="/home/$USER/autopost/mediainfo/"
DOSSIER_LOGS="/home/$USER/autopost/logs/"
DOSSIER_NZB_ATTENTE="/home/$USER/autopost/ATTENTE/"
DOSSIER_NZB_FINAL="/home/$USER/autopost/FINIS/"

# cp -rl | cp -rs | ln -s | mv | cp
MOVE_CMD="cp -rl"

# CONFIG FOURNISSEUR USENET DE POST (requis)
NG_HOST=""
NG_PORT=""
NG_USER=""
NG_PASS=""
NG_NBR_CONN=""

# Base de données
dbtype="sqlite"            # ou "mysql"
MYSQL_TABLE="release"      # OBLIGATOIRE

# sqlite -> DB_FILE requis, champs MySQL facultatifs
DB_FILE="/home/$USER/autopost/base_autopost.db"

# mysql -> champs MySQL requis, DB_FILE facultatif
MYSQL_HOST=""
MYSQL_PORT=
MYSQL_USER=""
MYSQL_PASS=""
MYSQL_DB=""

Rappels :

  • Si dbtype="sqlite"DB_FILE requis ; MYSQL_* facultatifs.
  • Si dbtype="mysql"MYSQL_HOST/PORT/USER/PASS/DB requis ; DB_FILE facultatif.
  • Les dossiers DOSSIER_* doivent exister.

Configuration (UI web) — /home/$USER/autopost/config.js

Champs obligatoires + règles sqlite/mysql + proxy/HTTPS.

const path = require('path');

module.exports = {
  // Réseau
  port: 3000,                 // ⚠️ Choisissez un port autorisé par votre hébergeur (Ultra.cc: `app-ports free`)
  name: 'NomDuNoeud',         // Nom affiché dans lUI
  background_color: 'slate-900', // Tailwind color: https://tailwindcss.com/docs/colors

  // Base de données
  dbtype: 'sqlite',           // 'sqlite' ou 'mysql'

  // sqlite -> dbFile requis
  dbFile: path.join(__dirname, 'base_autopost.db'),

  // mysql -> champs requis
  DB_HOST: '',
  DB_PORT: 3306,
  DB_USER: '',
  DB_PASSWORD: '',
  DB_DATABASE: '',
  DB_TABLE: 'release',

  // Dossiers
  finishdirectory: path.join(__dirname, 'FINIS'),
  logdirectory:    path.join(__dirname, 'logs'),
  infodirectory:   path.join(__dirname, 'mediainfo'),

  // Sessions (générer un secret : `curl -L pw.vdx.sh/w/32`)
  sessionSecret: 'collez-ici-le-secret-généré',
  trustProxy: 0,              // 0 = pas de proxy, 1 = Nginx, 2 = Cloudflare->Nginx, etc.
  cookieSecure: false,        // true si HTTPS bout-à-bout (reverse proxy compris)
  sessionStorePath: './sessions',

  // Auth UI (à changer !)
  auth: {
    username: 'user',
    password: 'pass'
  }
};

Rappels :

  • dbtype: 'sqlite'dbFile requis ; DB_* facultatifs.
  • dbtype: 'mysql'DB_HOST/PORT/USER/PASSWORD/DATABASE requis ; dbFile facultatif.
  • Si vous êtes derrière Nginx/Cloudflare, ajustez trustProxy et cookieSecure.
  • Les dossiers finishdirectory, logdirectory, infodirectory doivent exister.

Création de la base

postauto createdb

Commandes CLI

Commande Description
start Démarre le script principal.
stop Arrête le script.
restart Redémarre le script.
show Entre dans la session screen (Ctrl+A puis D pour détacher).
status Affiche les 500 derniers enregistrements avec leur statut (Attente / Échec / Succès).
add Ajoute un fichier MKV à traiter (chemin complet requis).
createdb Crée (ou recrée, avec confirmation) la base de données.
log Affiche le log de post pour un fichier donné.
check Vérifie la présence dun fichier sur le site.
update Met à jour les scripts.

Autocomplétion bash fournie (install/update lactivent automatiquement).

Interface web

  • Linstallateur installe Node v22 (via nvm) et tous les modules requis.
  • Lancer lUI (ex. en arrière-plan) :
    postauto restart
    
    (ou configurez un service systemd / pm2 selon vos préférences)

Configuration Nginx

Important : les routes statiques sont servies sous /autopost.

# Remplacez 127.0.0.1:3000 par le host:port de votre UI (voir config.js: port)
location /autopost/ {
    proxy_pass         http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header   Host               $host;
    proxy_set_header   X-Forwarded-Host   $host;
    proxy_set_header   X-Forwarded-Proto  $scheme;
    proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header   X-Real-IP          $remote_addr;
}

location /js/ {
    proxy_pass         http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header   Host               $host;
    proxy_set_header   X-Forwarded-Host   $host;
    proxy_set_header   X-Forwarded-Proto  $scheme;
    proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header   X-Real-IP          $remote_addr;
}

location /jquery/ {
    proxy_pass         http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header   Host               $host;
    proxy_set_header   X-Forwarded-Host   $host;
    proxy_set_header   X-Forwarded-Proto  $scheme;
    proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header   X-Real-IP          $remote_addr;
}

Réglez trustProxy (1 pour Nginx, 2 pour Cloudflare→Nginx) et mettez cookieSecure: true si le site est servi en HTTPS.

Mise à jour

Automatique

postauto restart

ou

postauto stop
postauto update

Manuellement

postauto stop \
  && wget -qO update.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/update.sh \
  && chmod +x update.sh \
  && ./update.sh

Passage en 7z (12/03/2024)

cd ~/autopost
wget -qO compress.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/autopost/compress.sh \
  && chmod +x compress.sh \
  && ./compress.sh

Désinstallation

wget -qO uninstall.sh https://tig.unfr.pw/UNFR/postauto/raw/branch/main/uninstall.sh \
  && chmod +x uninstall.sh \
  && ./uninstall.sh
  • Propose darrêter postauto, de supprimer la conf, la base, les NZB, et les fichiers Node.
  • Nettoie lautocomplétion (~/.bash_completion.d/postauto) et lancien bloc éventuel dans ~/.bashrc.

Limitations

  • Bash → Linux uniquement.
  • Accès SSH requis sur /home/$USER.
  • Les seedbox peuvent restreindre les ports et/ou lexécution de services persistants (voir hébergeur).

Dépannage

  • Port refusé : choisissez un port autorisé (Ultra.cc : app-ports free).
  • Node manquant : relancez install.sh (il installe nvm + Node v22).
  • MediaInfo/sqlite : avec sudo, installés via apt ; sans sudo, binaires fournis dans ~/bin.
  • Erreur GLIBC sur sqlite ou autre binaire : utilisez la version embarquée par linstallateur (dans ~/bin).
  • Sessions derrière Nginx : mettez trustProxy à 1 (ou 2 via Cloudflare→Nginx) et cookieSecure: true si HTTPS.
  • Dossiers manquants : créez/ajustez DOSSIER_* (bash) et *directory (UI).

Développement

Vos idées et axes damélioration sont les bienvenus — PRs et issues appréciés 🙂

Description
No description provided
Readme 908 KiB
Languages
JavaScript 46.4%
Shell 39.7%
HTML 11.7%
CSS 2.2%