Aller au contenu

Ssh & Download Station Ou Notification


Messages recommandés

Bonjour @Langer  

ca fait longtemps que je n’ai pas regardé mon script (qui tourne toujours chez moi sans aucun souci)

il faut que je m’y penche plus pour te dire, mais à première vu, un truc m’interpelle. Tout ce qui est après les balises « renommage » sont commentées. De mémoire c’est ce qui permet l’affichage du tableau et donc du flux RSS (entre les deux balises tu peux laisser commenté)

Lien vers le commentaire
Partager sur d’autres sites

Salut @Vinky,

J'ai dé-commenté les sections de Renommage, mais cela ne change rien. Ma dernière mise à jour du flux RSS avec succès remonte à octobre de l'an passé. Après une réinstallation complète du serveur sous Debian 9.x et Yunohost 3.x.

Yunohost utilse Nginx et non pas Apache. est ce que cela a un lien ?

As tu ton script sous la main, J'ai peut être fait la manip de trop ?

Merci,

Lien vers le commentaire
Partager sur d’autres sites

Hello,

j'ai supprimé la partie du script qui était inutile pour moi, et dé commenté après renommage, et ca refonctionne !!!

Le plus gros des mercis !!! @Vinky

Voici le script :

<?php

//Utilisation : <-----------URL------------>/rss.php?dossier=<NOM_DU_DOSSIER>
//Si le paramêtre dossier n'est pas mis, le dossier par défaut est listé.

/********************************/
/*        CONFIGURATION         */
/********************************/

	$physical_path = '/home/yunohost.transmission/completed'; // Dossier à lister par défaut (ex : /var/www/download)
	
	$max = 20; //Nombre de fichiers à afficher dans le flux RSS

	$site = 'sftp://XXX:XXX@XXXX.org:22'; // IP ou NDD (http://<IP> ou https://<IP> ou ftp://<IP> etc... utilisé pour télécharger les fichiers)
	
	$nomDePage = 'Seedbox Langer';// Nom affiché
	
	$lienInterne = ''; //position non affiché dans l'url (ex : /var/www/download/fichier.ext et url = http://<IP>/download/fichier.ext, mettre /var/www/ dans ce champs car non présent dans l'url)
    
	$tempsAttente = 100; //Temps (en s) sans que le fichier soit modifié avant de le lister. (si trop rapide, il peut apparaître alors que le fichier n'est pas fini de téléchargé).

//VOIR LIGNE 100 POUR INDIQUER LES EXTENSIONS AUTORISES : 
//			Ajouter '|| get_file_icon($file)=="ext"' (sans les '')  avant la fin de la parenthèse avec ext, l'extension que l'on veut qui soit listé

/********************************/
/*          FONCTIONS           */
/********************************/

	$excludeFiles = array(".", "..", ".htaccess", "");  // Liste des fichiers ignorés dans le listing

/**
 * Récupère récursivement le contenu d'un répertoire
 * et le retourne sous forme d'array
 * @param $directory Le répertoire à traiter
 **/
function recursive_directory_tree($directory = null)
{
    global $excludeFiles;

    //If $directory is null, set $directory to the current working directory.
    if ($directory == null) {
        $directory = getcwd();
    }

    //declare the array to return
    $return = array();

    //Check if the argument specified is an array
    if (is_dir($directory)) {

        //Scan the directory and loop through the results
        foreach(scandir($directory) as $file) {

            //. = current directory, .. = up one level. We want to ignore both.
            if ($file[0] == ".") {
                continue;
            }

            //Exclude some specified files
            if (in_array($file, $excludeFiles)) {
                continue;
            }

            //Check if the current $file is a directory itself.
            //The appending of $directory is necessary here.
            if (is_dir($directory."/".$file))
            {
                //Create a new array with an index of the folder name.
                $return[$directory."/".$file] = recursive_directory_tree($directory."/".$file);
            }
            else
            {
                //If $file is not a directory, just add it to th return array.
                $return[] = $directory."/".$file;
            }
        }
    }
    else
    {
        $return[] = $directory;
    }

    return $return;
}

/**
 * Stock dans un tableau tous les fichiers video présents dans le repertoire mis en pareamètre
 **/
function liste($dossier)
{
  global $tabTrie;
  foreach ($dossier as $file) 
  {
    if (  is_array($file) )
    {
      liste($file);
    }
    else
    {
#       if(get_file_icon($file)=="mp4" || get_file_icon($file)=="mkv" || get_file_icon($file)=="avi" )
        {
        array_push($tabTrie, $file);
        }
    }
  }
}


/**
 * Convertit la taille en Xo
 * @param $fs La taille à convertir
 */
function convert_size($fs)
{
     if ($fs >= 1073741824)
      $fs = round($fs / 1073741824 * 100) / 100 . " Go";
     elseif ($fs >= 1048576)
      $fs = round($fs / 1048576 * 100) / 100 . " Mo";
     elseif ($fs >= 1024)
      $fs = round($fs / 1024 * 100) / 100 . " Ko";
     else
      $fs = $fs . " o";
     return $fs;
}

/**
 * Retourne l'extention d'un fichier en fonction de son type
 * @filename Le nom du fichier à considérer
 */
function get_file_icon($filename)
{
  
  return pathinfo($filename, PATHINFO_EXTENSION);
  
}

/**
 * Retourne le mime d'un fichier
 * @filename Le nom du fichier à considérer
 */
function mime_file($filename)
{
  
	$finfo = finfo_open(FILEINFO_MIME_TYPE); // Retourne le type mime à la extension mimetype
	$mime=finfo_file($finfo, $filename);
	finfo_close($finfo);
	return $mime;
  
}

/********************************/
/*          FONCTIONS           */
/********************************/
#ISO-8859-1
	$entete = '<?xml version="1.0" encoding="UTF-8"?> 
		<rss version="2.0" 
				xmlns:atom="http://www.w3.org/2005/Atom" 
				xmlns:content="http://purl.org/rss/1.0/modules/content/" 
				xmlns:wfw="http://wellformedweb.org/CommentAPI/" 
				xmlns:media="http://search.yahoo.com/mrss/" 
				xmlns:dc="http://purl.org/dc/elements/1.1/">
			<channel>
				<atom:link href="'.$site.'/rss.php" rel="self" type="application/rss+xml" />
				<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
				<title>'.$nomDePage.'</title>
				<link>'.$site.'</link>
				<language>fr-FR</language>
				<description>Liste des nouveaux fichiers</description>
	';
	$pied = '</channel>
		</rss>';


	if(isset ($_GET['dossier']))
		$physical_path = $physical_path.'/'.$_GET['dossier'];
	
	$current_dir = array();
	$tab= array();
	$tabSize = array();
	$tabTrie= array();
	$current_dir = recursive_directory_tree($physical_path);


	liste($current_dir);


	foreach ($tabTrie as $key => $fichier)
	{
	
		$time = filemtime($fichier);
		$actualTime = time();
		$date = date("F d Y H:i:s.", filemtime($fichier));
			
		if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
		{
			$tab["$fichier"] = $time;
			$taille=filesize($fichier);
			$tabSize["$fichier"] = $taille;
		} 

	}
	
		array_multisort($tab, SORT_DESC, $tabSize);

			 echo $entete;
		
		$nombre = 1;
	foreach ($tab as $fichier => $heure) 
	{
		$nom = basename($fichier);
		$extension = get_file_icon($fichier,TRUE);
		$nom = str_replace(".$extension", "" , $nom);
		$nom = str_replace(".", " " , $nom);


/********************************/
/*           RENOMMAGE          */
/********************************/

		if(($actualTime-$heure) > $tempsAttente)
		{
			if ($nombre <= $max)
			{
				echo('
					<item>
						<title>'.$nom.'</title>
						<description>'.$nombre.' | Format : '.$extension.' | Date d\'ajout : '. date("d/m/Y H:i:s", $heure).' | Taille : '.convert_size($tabSize["$fichier"]).'</description>
						<pubDate>'.date("D, d M Y H:i:s", $heure).'</pubDate>
						<link>'.$site.str_replace($lienInterne, "" ,$fichier).'</link>
						<enclosure length="'.$tabSize[$fichier].'" type="'.mime_file($fichier).'" url="'.$site.str_replace($lienInterne, "" ,$fichier).'" />
					</item>
				');
				$nombre++;
			}
		}							
	}
		
	echo $pied; 	
	
?>

 

Lien vers le commentaire
Partager sur d’autres sites

  • 8 mois après...

Bonjour,

Suite à une interrogation de ma part, @Vinky m'a redirigé vers vous. Tout d'abord, il m'est impossible de saisir une URL SFTP ou FTP dans le flus RSS de Download Station car celui-ci ne prend en compte que des HTTP ou HTTPS.

J'exclue aussi le dossier Temp qui est mon dossier d'en cours de téléchargement avec rtorrent. Et je prends 60 fichiers dans le flux car il m'arrive d'en lancer presqu'autant en une fois.

Ma problématique est que je ne parviens pas à me connecter au lien http://IP_Seedbox/Radarr (sous-dossier)/RSS.php, ni avec http://IP_Seedbox/torrents/Radarr/RSS.php. Download Station me dit que le lien est incorrect. Dans Chrome, j'ai File not found.

L'emplacement du fichier RSS.php a-t-il une importance ? Doit-il être placé dans un dossier en particulier ? 

Voici le code que je mets :

<?php

//Utilisation : <-----------URL------------>/rss.php?dossier=</torrents>
//Si le paramêtre dossier n'est pas mis, le dossier par défaut est listé.

/********************************/
/*        CONFIGURATION         */
/********************************/

	$physical_path = '/home/fabien/torrents'; // Dossier à lister par défaut (ex : /var/www/download)
	
	$max = 60; //Nombre de fichiers à afficher dans le flux RSS

	$site = 'http://IP_Seedbox'; // IP ou NDD (http://<IP> ou htps://<IP> ou ftp://<IP> etc... utilisé pour télécharger les fichiers)

	$nomDePage = 'Le flux RSS de mon site';// Nom affiché

	$lienInterne = '/home/fabien/'; //position non affiché dans l'url (ex : /var/www/download/fichier.ext et url = http://<IP>/download/fichier.ext, mettre /var/www/ dans ce champs car non présent dans l'url)

        $tempsAttente = 300; //Temps (en s) sans que le fichier soit modifié avant de le lister. (si trop rapide, il peut apparaître alors que le fichier n'est pas fini de téléchargé).

//VOIR LIGNE 100 POUR INDIQUER LES EXTENSIONS AUTORISES : 
//			Ajouter '|| get_file_icon($file)=="ext"' (sans les '')  avant la fin de la parenthèse avec ext, l'extension que l'on veut qui soit listé

/********************************/
/*          FONCTIONS           */
/********************************/

	$excludeFiles = array(".", "..", ".htaccess", "");  // Liste des fichiers ignorés dans le listing

/**
 * Récupère récursivement le contenu d'un répertoire
 * et le retourne sous forme d'array
 * @param $directory Le répertoire à traiter
 **/
function recursive_directory_tree($directory = null)
{
    global $excludeFiles;

    //If $directory is null, set $directory to the current working directory.
    if ($directory == null) {
        $directory = getcwd();
    }

    //declare the array to return
    $return = array();

    //Check if the argument specified is an array
    if (is_dir($directory)) {

        //Scan the directory and loop through the results
        foreach(scandir($directory) as $file) {

            //. = current directory, .. = up one level. We want to ignore both.
            if ($file[0] == "Temp") {
                continue;
            }

 

Modifié par Alandil
Lien vers le commentaire
Partager sur d’autres sites

il y a 17 minutes, Alandil a dit :

Tout d'abord, il m'est impossible de saisir une URL SFTP ou FTP dans le flus RSS de Download Station car celui-ci ne prend en compte que des HTTP ou HTTPS.

Je ne fonctionne qu'en https, mais d'après les exemples ci-dessus, cela doit fonctionner si tu rentres le paramètre dans la variable $site=sftp://IP_Seedbox, cela devrait fonctionner)

il y a 17 minutes, Alandil a dit :

J'exclue aussi le dossier Temp qui est mon dossier d'en cours de téléchargement avec rtorrent. Et je prends 60 fichiers dans le flux car il m'arrive d'en lancer presqu'autant en une fois.

 

Ok, cela ne devrait pas poser de soucis.

il y a 17 minutes, Alandil a dit :

Ma problématique est que je ne parviens pas à me connecter au lien http://IP_Seedbox/Radarr (sous-dossier)/RSS.php, ni avec http://IP_Seedbox/torrents/Radarr/RSS.php. Download Station me dit que le lien est incorrect. Dans Chrome, j'ai File not found.

L'emplacement du fichier RSS.php a-t-il une importance ? Doit-il être placé dans un dossier en particulier ? 

Non pas d'importance, par contre, il faut que indiques le lien de ton fichier php. Si ton fichier php est situé dans le dossier : /var/www/ et que ton apache ou NginX a pour racine ce dossier, l'url de ton fichier php sera : http://IP_Seedbox/rss.php (et cela n'a aucune incidence sur le lieu où sont stocké tes fichiers à lister).

Le fichier listera les fichiers qui sont situés dans le dossier par défaut de la variable : $physical_path.

Apriori, tu n'utilises pas la bonne url pour accéder à ton fichier php. Où l'as tu mis ?

 

De mon point de vu, il faut que tu fasses par étape pour te permettre dans un premier temps de bien comprendre le script et de le paramétrer au fur et à mesure mais surtout faciliter le débugage.

Etape : 

  1. Accéder au fichier php qui renvoi tous les fichiers de tous les dossiers (peu importe le lien généré)
  2. Vérifier si les liens générés sont fonctionnels
  3. Faire un flux par dossier via un seul fichier php : http://IP_Seedbox/rss.php?dossier=/Radarr et http://IP_Seedbox/rss.php?dossier=/Sonarr
  4. Sécurisé l'accès via configurateur apache ou htaccess en limitant les IP qui peuvent se connecter à ton url si tes données sont accessibles sans mdp.
Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Vinky a dit :

$site=sftp://IP_Seedbox, cela devrait fonctionner)

Je ne comprends pas.... sftp https ou hhtp ?! sftp ne sera pas pris par Donwload Station donc https je suppose ? Et comment je gère la partie identification ?

Il y a 2 heures, Vinky a dit :

Si ton fichier php est situé dans le dossier : /var/www/ et que ton apache ou NginX a pour racine ce dossier,

Nginx est présent dans ces dossiers :

/usr/sbin/nginx
/usr/lib/nginx
/usr/share/doc/nginx
/usr/share/nginx
/usr/share/lintian/overrides/nginx
/var/cache/nginx
/var/log/nginx
/etc/nginx
/etc/logrotate.d/nginx
/etc/init.d/nginx
/etc/default/nginx

J'ignore lequel est le bon même si j'ai une préférence pour le dossier /etc/defaut/nginx...

Aujourd'hui, j'ai placé mon fichier RSS.php dans le dossier /home/fabien/scripts mais, si je comprends bien, ce n'est pas bon.

Lien vers le commentaire
Partager sur d’autres sites

@Alandil : Apriori Download station gère parfaitement les liens sftp (c'est ce qu'il indique) donc tu peux lui proposer des liens sftp si tu le souhaites.

 

372101826_Capturedcran2020-05-2819_48_37.thumb.png.11f28523b86ecae1ea98b9a1e32f453e.png

 

Cependant, je pense que ça c'est l'étape 2. Pour la partie authentification, ce sera également dans la partie 2 voir 4. Sachant que le SFTP, peut, comme proposé dans ce topic plus tôt, être sécurisé par clé publique/clé privée te permettant de ne pas à t'authentifier via le lien de téléchargement, mais cela me semble être quelque chose à gérer après.

Intéressons-nous au premier point, sans génération d'un flux rss qui liste tes derniers fichiers, cela ne marchera pas. et nous passerons aux étapes après.

Il y a 2 heures, Alandil a dit :

Aujourd'hui, j'ai placé mon fichier RSS.php dans le dossier /home/fabien/scripts mais, si je comprends bien, ce n'est pas bon.

Effectivement, ce n'est, sauf si tu l'as paramêtré comme ça,  pas là. Pas par défaut.

Je vois que tu utilises Nginx, je ne suis pas très connaisseur de celui-ci, mais apriori c'est dans /var/www/html/, as-tu quelque chose ? Si oui, tu mets ton fichier RSS.php dans ce répertoire.

Si non, tu auras les infos dans : /etc/nginx/sites-available/default

Et tu tapes : http://IP_Seedbox/RSS.php

Modifié par Vinky
Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, Vinky a dit :

Apriori Download station gère parfaitement les liens sftp (c'est ce qu'il indique) donc tu peux lui proposer des liens sftp si tu le souhaites.

Excuse-moi. Je corrige mon affirmation. Pour utiliser un flux RSS sur download station, il faut que ce soit du HTTP ou HTTPS.

 

il y a une heure, Vinky a dit :

/var/www/html/, as-tu quelque chose ?

Je pense avoir trouvé le bon emplacement /var/www/base car maintenant je n'ai pas de "File not found" mais une belle page noire avec "HTTP ERROR 500"

Je peux te dire que quand nous aurons réussi à faire fonctionner cela, je vais me faire un sacré tuto étant donné le temps passé à chercher et celui à tester 😉 

Modifié par Alandil
Lien vers le commentaire
Partager sur d’autres sites

il y a 51 minutes, Alandil a dit :

Excuse-moi. Je corrige mon affirmation. Pour utiliser un flux RSS sur download station, il faut que ce soit du HTTP ou HTTPS.

Ah, oui, effectivement, je te confirme, le flux RSS doit être en http ou https.

il y a 51 minutes, Alandil a dit :

Je pense avoir trouvé le bon emplacement /var/www/base car maintenant je n'ai pas de "File not found" mais une belle page noire avec "HTTP ERROR 500"

Effectivement, le problème est de configuration (ou alors ton code php qui n'est pas bon).

Pour être certain, peux-tu reprendre le fichier initial (j'ai cru voir que tu avais modifié certaines choses comme l'exclusion du fichier "temp") pour savoir si ton souci est de ta page php ou ta configuration ? Ou bien même un fichier simple "test.php" avec uniquement un fonction genre echo "test". 

Autre question, tu n'as pas de fichier .htaccess qui a été mis dessus ?

Essai ça pour obtenir un peu d'info sur ton erreur : https://stackoverflow.com/a/17693462

Cependant, tes difficultés est plutôt autour du paramètrage d'un serveur web. Voici un tuto qui semble bien fait pour essayer de t'aider : https://www.elkwaetblog.tk/administration-linux-installation-serveur-http-nginx-plusieurs-sites

il y a 51 minutes, Alandil a dit :

Je peux te dire que quand nous aurons réussi à faire fonctionner cela, je vais me faire un sacré tuto étant donné le temps passé à chercher et celui à tester 😉 

Avec plaisir, n'hésite pas à le mettre ici 🙂

Modifié par Vinky
Lien vers le commentaire
Partager sur d’autres sites

il y a 22 minutes, Vinky a dit :

Effectivement, le problème est de configuration (ou alors ton code php qui n'est pas bon).

Pour être certain, peux-tu reprendre le fichier initial (j'ai cru voir que tu avais modifié certaines choses comme l'exclusion du fichier "temp") pour savoir si ton souci est de ta page php ou ta configuration ? Ou bien même un fichier simple "test.php" avec uniquement un fonction genre echo "test". 

Autre question, tu n'as pas de fichier .htaccess qui a été mis dessus ?

Cependant, tes difficultés est plutôt autour du paramètrage d'un serveur web. Voici un tuto qui semble bien fait pour essayer de t'aider : https://www.elkwaetblog.tk/administration-linux-installation-serveur-http-nginx-plusieurs-sites

Bon alors, j'ai enlevé mon exclusion du dossier Temp et remis à 20 le nombre de fichiers traités. J'ai suivi le tuto dont tu m'as donné le lien et ai créé le fichier default dans /etc/nginx/sites-available/ et ajouté le dossier que j'utilise ainsi que le site RSS.php. et cela ne fonctionne pas...

Je ne sais ce qu'est le .htaccess même si je connais son utilité. Je n'y ai pas touché. Qu'est-ce que je dois y faire ?

Lien vers le commentaire
Partager sur d’autres sites

Ajoute le code suivant juste après la balise php d'ouverture ( à la ligne 2) : 

ini_set('display_errors', 1);

<?php
ini_set('display_errors', 1);
//Utilisation : <-----------URL------------>/rss.php?dossier=</torrents>

Cela doit normalement t'afficher la raison de ton erreur 500.

Modifié par Vinky
Lien vers le commentaire
Partager sur d’autres sites

<?php

    

ini_set('display_errors', 1)

//Utilisation : <-----------URL------------>/rss.php?dossier=<NOM_DU_DOSSIER>
//Si le paramêtre dossier n'est pas mis, le dossier par défaut est listé.

/********************************/
/*        CONFIGURATION         */
/********************************/

    $physical_path = '/home/fabien/torrents'; // Dossier à lister par défaut (ex : /var/www/download)
    
    $max = 20; //Nombre de fichiers à afficher dans le flux RSS

    $site = 'https://login:mdp@IP_Seedbox'; // IP ou NDD (http://<IP> ou htps://<IP> ou ftp://<IP> etc... utilisé pour télécharger les fichiers)

    $nomDePage = 'Le flux RSS de mon site';// Nom affiché

    $lienInterne = '/home/fabien/torrents'; //position non affiché dans l'url (ex : /var/www/download/fichier.ext et url = http://<IP>/download/fichier.ext, mettre /var/www/ dans ce champs car non présent dans l'url)

        $tempsAttente = 300; //Temps (en s) sans que le fichier soit modifié avant de le lister. (si trop rapide, il peut apparaître alors que le fichier n'est pas fini de téléchargé).

//VOIR LIGNE 100 POUR INDIQUER LES EXTENSIONS AUTORISES : 
//            Ajouter '|| get_file_icon($file)=="ext"' (sans les '')  avant la fin de la parenthèse avec ext, l'extension que l'on veut qui soit listé

/********************************/
/*          FONCTIONS           */
/********************************/

    $excludeFiles = array(".", "..", ".htaccess", "");  // Liste des fichiers ignorés dans le listing

/**
 * Récupère récursivement le contenu d'un répertoire
 * et le retourne sous forme d'array
 * @param $directory Le répertoire à traiter
 **/
function recursive_directory_tree($directory = null)
{
    global $excludeFiles;

    //If $directory is null, set $directory to the current working directory.
    if ($directory == null) {
        $directory = getcwd();
    }

    //declare the array to return
    $return = array();

    //Check if the argument specified is an array
    if (is_dir($directory)) {

        //Scan the directory and loop through the results
        foreach(scandir($directory) as $file) {

            //. = current directory, .. = up one level. We want to ignore both.
            if ($file[0] == ".") {
                continue;
            }

            //Exclude some specified files
            if (in_array($file, $excludeFiles)) {
                continue;
            }

            //Check if the current $file is a directory itself.
            //The appending of $directory is necessary here.
            if (is_dir($directory."/".$file))
            {
                //Create a new array with an index of the folder name.
                $return[$directory."/".$file] = recursive_directory_tree($directory."/".$file);
            }
            else
            {
                //If $file is not a directory, just add it to th return array.
                $return[] = $directory."/".$file;
            }
        }
    }
    else
    {
        $return[] = $directory;
    }

    return $return;
}

/**
 * Stock dans un tableau tous les fichiers video présents dans le repertoire mis en pareamètre
 **/
function liste($dossier)
{
  global $tabTrie;
  foreach ($dossier as $file) 
  {
    if (  is_array($file) )
    {
      liste($file);
    }
    else
    {
        if(get_file_icon($file)=="mp4" || get_file_icon($file)=="mkv" || get_file_icon($file)=="avi" )
        {
          array_push($tabTrie, $file);
        }
    }
  }
}


/**
 * Convertit la taille en Xo
 * @param $fs La taille à convertir
 */
function convert_size($fs)
{
     if ($fs >= 1073741824)
      $fs = round($fs / 1073741824 * 100) / 100 . " Go";
     elseif ($fs >= 1048576)
      $fs = round($fs / 1048576 * 100) / 100 . " Mo";
     elseif ($fs >= 1024)
      $fs = round($fs / 1024 * 100) / 100 . " Ko";
     else
      $fs = $fs . " o";
     return $fs;
}

/**
 * Retourne l'extention d'un fichier en fonction de son type
 * @filename Le nom du fichier à considérer
 */
function get_file_icon($filename)
{
  
  return pathinfo($filename, PATHINFO_EXTENSION);
  
}

/**
 * Retourne le mime d'un fichier
 * @filename Le nom du fichier à considérer
 */
function mime_file($filename)
{
  
    $finfo = finfo_open(FILEINFO_MIME_TYPE); // Retourne le type mime à la extension mimetype
    $mime=finfo_file($finfo, $filename);
    finfo_close($finfo);
    return $mime;
  
}

/********************************/
/*          FONCTIONS           */
/********************************/

    $entete = '<?xml version="1.0" encoding="ISO-8859-1"?> 
        <rss version="2.0" 
                xmlns:atom="http://www.w3.org/2005/Atom" 
                xmlns:content="http://purl.org/rss/1.0/modules/content/" 
                xmlns:wfw="http://wellformedweb.org/CommentAPI/" 
                xmlns:media="http://search.yahoo.com/mrss/" 
                xmlns:dc="http://purl.org/dc/elements/1.1/">
            <channel>
                <atom:link href="'.$site.'/rss.php" rel="self" type="application/rss+xml" />
                <xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
                <title>'.$nomDePage.'</title>
                <link>'.$site.'</link>
                <language>fr-FR</language>
                <description>Liste des nouveaux fichiers</description>
    ';
    $pied = '</channel>
        </rss>';

    if(isset ($_GET['dossier']))
        $physical_path = $physical_path.'/'.$_GET['dossier'];
    
    $current_dir = array();
    $tab= array();
    $tabSize = array();
    $tabTrie= array();
    $current_dir = recursive_directory_tree($physical_path);


    liste($current_dir);


    foreach ($tabTrie as $key => $fichier)
    {
    
        $time = filemtime($fichier);
        $actualTime = time();
        $date = date("F d Y H:i:s.", filemtime($fichier));
            
        if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
        {
            $tab["$fichier"] = $time;
            $taille=filesize($fichier);
            $tabSize["$fichier"] = $taille;
        } 

    }
    
        array_multisort($tab, SORT_DESC, $tabSize);

             echo $entete;
        
        $nombre = 1;
    foreach ($tab as $fichier => $heure) 
    {
        $nom = basename($fichier);
        $extension = get_file_icon($fichier,TRUE);
        $nom = str_replace(".$extension", "" , $nom);
        $nom = str_replace(".", " " , $nom);

/********************************/
/*           RENOMMAGE          */
/********************************/

        if(substr_count(strtoupper($nom), strtoupper(" epz")) > 0)
        {
            $nom = str_replace("epz-", "" , $nom);
        }
        
        if(substr_count(strtoupper($nom), strtoupper(" HDTV")) > 0)
        {
            $nom = strrev($nom);
            $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("VTDH"))+5));
        }

        if(substr_count(strtoupper($nom), strtoupper(" PDTV")) > 0)
        {
            $nom = strrev($nom);
            $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("VTDP"))+5));
        }
        
        if(substr_count(strtoupper($nom), strtoupper(" WEB")) > 0)
        {
            $nom = strrev($nom);
            $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("BEW"))+4));
        }
        
        if(substr_count(strtoupper($nom), strtoupper(" XVID")) > 0)
        {
            $nom = strrev($nom);
            $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("DIVX"))+5));
        }
        
        if(substr_count(strtoupper($nom), strtoupper(" LD")) > 0)
        {
            $nom = strrev($nom);
            $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("DL"))+3));

        }
        
        
        if(substr_count(strtoupper($nom), strtoupper(" DC")) > 0)
        {
            $nom = strrev($nom);
            $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("CD"))+3));
        }
        
        if(substr_count(strtoupper($nom), strtoupper(" x264")) > 0)
        {
            $nom = strrev($nom);
            $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("462x"))+3));
        }

        if(substr_count(strtoupper($nom), strtoupper(" bluray")) > 0)
        {
            $nom = strrev($nom);
            $nom = strrev(substr($nom,strpos(strtoupper($nom),strtoupper("yarulb"))+7));
        }
            $nom = ucwords(mb_strtolower($nom));

            $nom = str_replace ( "French" ,  "FRENCH", $nom);
            $nom = str_replace ( "Vostfr" ,  "VOSTFR", $nom);
            $nom = str_replace ( "e0" ,  "E0", $nom);
            $nom = str_replace ( "e1" ,  "E1", $nom);
            $nom = str_replace ( "e2" ,  "E2", $nom);

            $nom = $nom." [$extension]";
/********************************/
/*           RENOMMAGE          */
/********************************/

        if(($actualTime-$heure) > $tempsAttente)
        {
            if ($nombre <= $max)
            {
                echo('
                    <item>
                        <title>'.$nom.'</title>
                        <description>'.$nombre.' | Format : '.$extension.' | Date d'ajout : '. date("d/m/Y H:i:s", $heure).' | Taille : '.convert_size($tabSize["$fichier"]).'</description>
                        <pubDate>'.date("D, d M Y H:i:s", $heure).'</pubDate>
                        <link>'.$site.str_replace($lienInterne, "" ,$fichier).'</link>
                        <enclosure length="'.$tabSize[$fichier].'" type="'.mime_file($fichier).'" url="'.$site.str_replace($lienInterne, "" ,$fichier).'" />
                    </item>
                ');
                $nombre++;
            }
        }                            
    }
        
    echo $pied;     
    
?>

Lien vers le commentaire
Partager sur d’autres sites

@Alandil :

Ton code avait 2 erreurs : 

Le ";" est obligatoire à la fin d'une commande, dans la commande que je t'ai indiqué tu ne l'avais pas mis.

A la toute fin (c'était présent dans mon code initial partagé mais pas sur mon fichier perso, j'ai fait la modif du coup, le terme "date d'ajout" doit être remplacé par "date d\'ajout") sur les dernières lignes, remplace par ça : 

/********************************/
/*           RENOMMAGE          */
/********************************/


        if(($actualTime-$heure) > $tempsAttente)
        {
            if ($nombre <= $max)
            {
                echo('
                    <item>
                        <title>'.$nom.'</title>
                        <description>'.$nombre.' | Format : '.$extension.' | Date d\'ajout : '. date("d/m/Y H:i:s", $heure).' | Taille : '.convert_size($tabSize["$fichier"]).'</description>
                        <pubDate>'.date("D, d M Y H:i:s", $heure).'</pubDate>
                        <link>'.$site.str_replace($lienInterne, "" ,$fichier).'</link>
                        <enclosure length="'.$tabSize[$fichier].'" type="'.mime_file($fichier).'" url="'.$site.str_replace($lienInterne, "" ,$fichier).'" />
                    </item>
                ');
                $nombre++;
            }
        }                            
    }
        
    echo $pied;     
    
?>

Suite à ces modifications, ça marchait bien chez moi, en tout cas, pas d'erreur.

Modifié par Vinky
Lien vers le commentaire
Partager sur d’autres sites

Salut @Vinky

Les corrections apportées fonctionnent. J'ai bien un flux RSS visible sur le navigateur et Download Station le comprend.

J'ai 4 demandes :

  1. Les liens sur Download Station sont incorrects... Je ne sais pas trop quoi faire là... Le login et mdp sont bons pourtant... Quand je prends 1 lien que je place dans le navigateur, j'ai une erreur 404 avec détail Nginx... Que le lien du fichier soit http ou https j'ai la même erreur.
  2. Est-il possible d'avoir une liste lisible sur le navigateur avec un retour chariot pour chaque fichier ? Cela permet de jeter un oeil sur la liste en cours sans que ce soit galère.
  3. L'arborescence des sous-dossiers est-elle conservée ? Je prends le dossier Sonarr depuis la seedbox et celui-ci contient un dossier pour chaque saison d'une série. Est-ce que ces dossiers Saison seront conservés ? Si non, y a-t-il un moyen de le mettre en place ?
  4. Comment éviter de devoir saisir le login et mdp dans le script ? Avec une clé ? Avec le fameux .htaccess ? Sans pour autant mettre par terre toutes mes autres connections.

Merci d'avance @Vinky 😉 

Modifié par Alandil
Lien vers le commentaire
Partager sur d’autres sites

Félicitation on passe à l'étape 2 🙂 

Il y a 19 heures, Vinky a dit :

Etape : 

  1. Accéder au fichier php qui renvoi tous les fichiers de tous les dossiers (peu importe le lien généré)
  2. Vérifier si les liens générés sont fonctionnels
  3. Faire un flux par dossier via un seul fichier php : http://IP_Seedbox/rss.php?dossier=/Radarr et http://IP_Seedbox/rss.php?dossier=/Sonarr
  4. Sécurisé l'accès via configurateur apache ou htaccess en limitant les IP qui peuvent se connecter à ton url si tes données sont accessibles sans mdp.

Désolé, c'était en partie de ma faute.

Il y a 1 heure, Alandil a dit :
  1. Les liens sur Download Station sont incorrects... Je ne sais pas trop quoi faire là... Le login et mdp sont bons pourtant... Quand je prends 1 lien que je place dans le navigateur, j'ai une erreur 404 avec détail Nginx... Que le lien du fichier soit http ou https j'ai la même erreur.
  2. Est-il possible d'avoir une liste lisible sur le navigateur avec un retour chariot pour chaque fichier ? Cela permet de jeter un oeil sur la liste en cours sans que ce soit galère.
  3. L'arborescence des sous-dossiers est-elle conservée ? Je prends le dossier Sonarr depuis la seedbox et celui-ci contient un dossier pour chaque saison d'une série. Est-ce que ces dossiers Saison seront conservés ? Si non, y a-t-il un moyen de le mettre en place ?
  4. Comment éviter de devoir saisir le login et mdp dans le script ? Avec une clé ? Avec le fameux .htaccess ? Sans pour autant mettre par terre toutes mes autres connections.

1. C'est possiblement logique, tes fichiers ne semblent pas accessible de Nginx. Tu souhaites utiliser le http/https pour recevoir ou tu souhaites passer par sftp ? Actuellement, qu'utilises-tu comme protocole pour récupérer un fichier ? De ce que j'ai compris tu étais plutôt sur du sftp, il te faut donc mettre dans la variable $site = 'sftp://monlogin:monpasswd@monip:port' pour que ton lien soit "téléchargeable".

2. Les navigateurs ne gèrent plus les flux RSS (à l'époque c'était le cas de Firefox, mais plus maintenant). Prend n'importe quel agrégateur de flux RSS et cela le fera (Download Station sépare bien les fichiers par ligne par exemple) ou un plug in à ton navigateur (Firefox en a quelques uns par exemple, attention, si tu utilises le protocole SFTP, cela ne fonctionnera pas en direct sur firefox)

3. Non, aucune conservation des sous-dossiers en téléchargeant, c'est justement le but recherché par le flux RSS. Tu peux créer l'arborescence que tu souhaites indépendament de celle déjà créée et le tout sans intervention de ta part. Tu pourras (en Etape 5 😉 ) faire une automatisation des téléchargements des fichiers et les ranger par dossier en fonction du nom (Par ex pour une série : Tu pourras lui dire en fonction du nom et sa saison d'aller dans le dossier Série/Nom_de_la_Série/Saison_XX et dès qu'il trouvera un fichier qui correspond, il le téléchargera automatiquement à cet endroit)

4. Tout dépend ton protocole de téléchargement. D'où l'idée de le faire à la fin. Dans un premier temps, on génére des liens avec tout dedans qui fonctionnent. Si ça marche, on cherchera la meilleure solution pour sécuriser.

Modifié par Vinky
Lien vers le commentaire
Partager sur d’autres sites

il y a 48 minutes, Vinky a dit :

1. C'est possiblement logique, tes fichiers ne semblent pas accessible de Nginx. Tu souhaites utiliser le http/https pour recevoir ou tu souhaites passer par sftp ? Actuellement, qu'utilises-tu comme protocole pour récupérer un fichier ? De ce que j'ai compris tu étais plutôt sur du sftp, il te faut donc mettre dans la variable $site = 'sftp://monlogin:monpasswd@monip:port' pour que ton lien soit "téléchargeable".

Aujourd'hui j'utilise FileZilla pour télécharger de la Seedbox vers le NAS en SFTP. Hors, ici, ce qui m'intéresse, c'est l'automatisme via RSS. Hors, je ne peux utiliser le RSS avec SFTP sauf si je gère lien par lien ce qui ne m'intéresse pas. Je souhaite donc bel et bien utiliser du HTTP ou HTTPS.

il y a 51 minutes, Vinky a dit :

2. Les navigateurs ne gèrent plus les flux RSS (à l'époque c'était le cas de Firefox, mais plus maintenant). Prend n'importe quel agrégateur de flux RSS et cela le fera (Download Station sépare bien les fichiers par ligne par exemple) ou un plug in à ton navigateur (Firefox en a quelques uns par exemple, attention, si tu utilises le protocole SFTP, cela ne fonctionnera pas en direct sur firefox)

OK. En même temps, ce n'était pas essentiel.

il y a 52 minutes, Vinky a dit :

3. Non, aucune conservation des sous-dossiers en téléchargeant, c'est justement le but recherché par le flux RSS. Tu peux créer l'arborescence que tu souhaites indépendament de celle déjà créée et le tout sans intervention de ta part. Tu pourras (en Etape 5 😉 ) faire une automatisation des téléchargements des fichiers et les ranger par dossier en fonction du nom (Par ex pour une série : Tu pourras lui dire en fonction du nom et sa saison d'aller dans le dossier Série/Nom_de_la_Série/Saison_XX et dès qu'il trouvera un fichier qui correspond, il le téléchargera automatiquement à cet endroit)

OK. On verra ça plus tard pas de soucis.

il y a 52 minutes, Vinky a dit :

4. Tout dépend ton protocole de téléchargement. D'où l'idée de le faire à la fin. Dans un premier temps, on génére des liens avec tout dedans qui fonctionnent. Si ça marche, on cherchera la meilleure solution pour sécuriser.

Pas de soucis

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, Alandil a dit :

Aujourd'hui j'utilise FileZilla pour télécharger de la Seedbox vers le NAS en SFTP. Hors, ici, ce qui m'intéresse, c'est l'automatisme via RSS. Hors, je ne peux utiliser le RSS avec SFTP sauf si je gère lien par lien ce qui ne m'intéresse pas. Je souhaite donc bel et bien utiliser du HTTP ou HTTPS.

Aucune incidence. Tu peux générer des liens SFTP avec ton flux RSS accessible par HTTP.

Il faut que tu vois le flux RSS comme une liste de fichier auquel tu indiques quel est son lien de téléchargement (comme un fichier excel qui te dirait colonne 1 nom, colonne 2 lien)

Ton flux RSS doit être mis à jour, donc il doit être accessible depuis l'exterieur, d'où le besoin d'un serveur web et d'un lien http/https.

Ensuite, tu obtiens la liste de fichier avec un lien associé (qui peut donc être du HTTP/HTTPS mais également tous les protocoles vu au-dessus que Download Station gère). C'est dans le fichier PHP que tu associes le protocole à tes fichiers pour que download station puisse les récupérer.

Je te propose donc de rester avec "ce qui marche" à savoir ton SFTP, et si tu le souhaites on pourra toujours passer en http/https après, même si je n'y vois pas l'intérêt.

Lien vers le commentaire
Partager sur d’autres sites

@Vinky

J'ai réussi à faire fonctionner les liens. Mais j'ai un problème dans la création des liens fichier.

Tout de suite, un lien est créé comme suit : sftp://login:mdp@IP_Seedbox:port/Radarr/fichier.mkv par exemple. Hors, ce lien ne fonctionne pas. Le lien qui fonctionne est sftp://login:mdp@IP_Seedbox:port/torrents/Radarr/fichier.mkv

Comment je règle cela ? Modification de la ligne 18 ? remplacement du lien interne de /home/fabien/torrents/ par /home/fabien/ ?

Lien vers le commentaire
Partager sur d’autres sites

Si tu me confirmes quand tu fais "télécharger" sur un fichier de ton flux RSS dans download station et que ça lance bien le téléchargement et que tu vois la progression se faire (pas d'erreur), effectivement étape 2 passée. Félicitation 😉

Etape 3

Si je comprends bien, tu as un sous-dossier Sonarr et un sous-dossier Radarr et tu as des fichiers des 2 dossiers, en vrac, dans ton flux rss actuellement ?

Si c'est le cas, c'est une étape assez simple : 

  • Flux uniquement pour Radarr http://IP_Seedbox/rss.php?dossier=Radarr
  • Flux uniquement pour Sonarr  http://IP_Seedbox/rss.php?dossier=Sonarr

 

Modifié par Vinky
Lien vers le commentaire
Partager sur d’autres sites

il y a 24 minutes, Vinky a dit :

Si c'est le cas, c'est une étape assez simple : 

  • Flux uniquement pour Radarr http://IP_Seedbox/rss.php?dossier=Radarr
  • Flux uniquement pour Sonarr  http://IP_Seedbox/rss.php?dossier=Sonarr

ça je te le confirme. C'est OK. C'est comme ça que j'ai fait mes tests.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.