Skip to content

Commit

Permalink
Finalisation du module de gestion des torrents + bugfixes + doc dans …
Browse files Browse the repository at this point in the history
…le code + README update
  • Loading branch information
Dric committed Mar 5, 2014
1 parent ac50c48 commit 807b7b6
Show file tree
Hide file tree
Showing 7 changed files with 204 additions and 966 deletions.
22 changes: 16 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,23 @@ On est bien d'accord que la sécurité n'est pas son point fort, on vise ici la

Il fait donc office de serveur de média pour afficher sur un téléviseur/décodeur/smartphone/tablette/Windows media player/VLC, de serveur de fichiers et de serveur de téléchargement bittorrent.

Il n'y a pas d'interface graphique, en revanche il possède une interface web pour effectuer les actions de base.
Il n'y a pas d'interface graphique (sauf install de XBMC), en revanche il possède une interface web pour effectuer les actions de base.
Celle-ci est compatible avec les smartphones et tablettes, pour peu qu'ils soient connectés en Wifi.

![WebUI 1](https://raw.github.com/Dric/salsifis/master/img/screenshot.png "Interface Web v1.2.1")

## Changelog

- **v2.0beta**
- Ajout de XBMC pour un serveur media
- Ajout de XBMC pour un serveur media (nécessite une carte vidéo convenable ou un décodeur HD pour la lecture des films)
- Réécriture de la page des téléchargements
- On peut désormais filtrer les téléchargements pour n'afficher que ceux qu'on veut
- Les répertoires de destination ont été changés pour les vidéos :
- Adultes
- Enfants
- Séries
- Utilisation de [Responsive FileManager](http://www.responsivefilemanager.com) 9.3.4 comme gestionnaire de fichiers
- Il faut lier le répertoire dlna au répertoire web avec : `ln -s /media/salsifis/dlna` dans `/var/www`
- **v1.6** - *02/01/2014*
- Correction de quelques libellés
- Ajout d'une interface de gestion des téléchargements torrents un peu plus conviviale
Expand Down Expand Up @@ -57,9 +63,8 @@ Celle-ci est compatible avec les smartphones et tablettes, pour peu qu'ils soien
- MAJ de la FAQ
- Paramétrage de Transmission depuis la WebUI.
- Ajouter un gestionnaire de téléchargements directs (ftp, liens directs...)
- Ajouter une interface d'exploration des fichiers mieux foutue que jQueryFM et moins lourde que Pydio
- Alertes et notifications (disque presque plein, erreurs, etc.)
- Revoir le code php qui est loin d'être propre
- Revoir le code php qui est loin d'être propre (en cours)

## Composants

Expand All @@ -69,13 +74,16 @@ Celle-ci est compatible avec les smartphones et tablettes, pour peu qu'ils soien
- Transmission (client bittorrent)
- Samba (partage de fichiers)
- MiniDLNA (partage de médias sur le réseau)

### Facultatif

- XBMC (media center)
- Pydio (anciennement Ajaxplorer - explorateur de fichiers via une interface web)

### Interface Web

- [Twitter Bootstrap](http://http://getbootstrap.com) 3
- [[Responsive FileManager](http://www.responsivefilemanager.com) 9.3.4
- [jQuery File Manager](https://github.com/javiermarinros/jquery_fm) 11/07/2013 par [javiermarinos](https://github.com/javiermarinros)

## Prérequis

Expand All @@ -99,6 +107,8 @@ Celle-ci est compatible avec les smartphones et tablettes, pour peu qu'ils soien

### Mise à jour du système

Si l'install a été faite via un MinimalCD de Ubuntu, on peut sauter cette étape étant donné que les paquets installés le sont depuis le web, donc sont forcément les plus récents.

sudo apt-get update
sudo apt-get upgrade

Expand Down Expand Up @@ -530,7 +540,7 @@ Installer xbmc :
sudo apt-get update
sudo apt-get install xbmc

### (Facultatif) Installation de Pydio (interface web de serveur de fichiers)
### (Facultatif) Installation de Pydio (interface web assez lourde de serveur de fichiers)

sudo nano /etc/apt/sources.list

Expand Down
55 changes: 53 additions & 2 deletions classes/torrent.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -315,9 +315,9 @@ public function display(){
<?php if ($this->_status == 3 or $this->_status == 4){ ?>
<button class="btn tooltip-bottom" title="Vous ne pouvez pas déplacer un téléchargement en cours" disabled><span class="glyphicon glyphicon-share-alt"></span></button>
<?php }else{ ?>
<button class="btn tooltip-bottom" title="Déplacer le téléchargement" data-toggle="popover" data-placement="top" data-content='<?php echo show_move_torrent_popover($this->_id, array_search($this->_downloadDir, $this->_downloadDirs)); ?>'><span class="glyphicon glyphicon-share-alt"></span></button>
<button class="btn tooltip-bottom" title="Déplacer le téléchargement" data-toggle="popover" data-placement="top" data-content='<?php $this->_displayPopoverMoveTorrent($this->_id, array_search($this->_downloadDir, $this->_downloadDirs)); ?>'><span class="glyphicon glyphicon-share-alt"></span></button>
<?php } ?>
<button class="btn tooltip-bottom" id="del-popover_<?php echo $this->_id; ?>" title="Supprimer" data-toggle="popover" data-placement="top" data-content='<?php echo show_del_torrent_popover($this->_id); ?>'><span class="glyphicon glyphicon-trash tooltip-bottom"></span></button>
<button class="btn tooltip-bottom" id="del-popover_<?php echo $this->_id; ?>" title="Supprimer" data-toggle="popover" data-placement="top" data-content='<?php $this->_showDelTorrentPopover($this->_id); ?>'><span class="glyphicon glyphicon-trash tooltip-bottom"></span></button>
</div>
</div>
</div>
Expand Down Expand Up @@ -361,6 +361,57 @@ public function display(){
</div>
<?php
}

/**
* Affiche le popover de déplacement de torrent
* @param int $id ID du torrent
* @param string $currentDir Répertoire actuel du torrent
*
* @return void
*/
private function _displayPopoverMoveTorrent($id, $currentDir){
?>
<form id="moveTorrentForm-<?php echo $id ?>" class="form-inline popover-form moveTorrentForm" role="form" method="POST" data-id="<?php echo $id ?>">
<div class="input-group">
<select name="newDir" class="form-control input-sm">
<?php
foreach ($this->_downloadDirs as $label => $downloadDir){
?><option value="<?php echo $downloadDir; ?>"<?php echo ($label == $currentDir) ? ' selected' : ''; ?>><?php echo $label ?></option><?php
}
?>
</select>
<span class="input-group-btn">
<button type="submit" id="moveTorrent-<?php echo $id ?>" class="btn btn-default btn-sm moveTorrent">
<span class="glyphicon glyphicon-share-alt tooltip-bottom" title="Déplacer"></span>
</button>
</span>
</div>
<input type="hidden" id="torrentId" name="torrentId" value="<?php echo $id ?>">
</form>
<?php
}

/**
* Affiche le popover de suppression d'un torrent
* @param int $id ID du torrent à supprimer
*
* @return void
*/
private function _showDelTorrentPopover($id){
?>
<form class="form-inline popover-form delTorrentForm" role="form" method="POST" data-id="<?php echo $id ?>">
<input type="hidden" name="torrentId" value="<?php echo $id; ?>">
<div class="btn-group">
<button type="submit" name="action" value="delTorrent" class="btn btn-danger">Oui</button>
<button class="btn btn-default close-popover" data-close-popover="del-popover_<?php echo $id; ?>">Non</button>
</div>
<div class="checkbox">
<label class="tooltip-bottom" title="Par défaut, les Salsifis suppriment uniquement le téléchargement sans toucher aux fichiers téléchargés.">
<input name="delLocalFiles" type="checkbox"> Supprimer également les fichiers
</label>
</div>
</form>
<?php
}
}
?>
57 changes: 12 additions & 45 deletions classes/torrentsManager.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -144,40 +144,37 @@ private function _displaySpeedAlert(){
* @return bool
*/
public function requests(){
$ajax = (isset($_REQUEST['ajax'])) ? (bool)$_REQUEST['ajax'] : false;
if (isset($_REQUEST['action'])){
switch (htmlspecialchars($_REQUEST['action'])){
case 'refreshTorrents':
header("Content-Type: application/json");
echo $this->_getJSONTorrentsData();
return true;
return $ajax;
case 'torrentImg':
self::_getImg(htmlspecialchars(urldecode($_REQUEST['source'])));
return true;
return $ajax;
case 'filtering':
$this->displayPage(htmlspecialchars($_REQUEST['filteredBy']));
return true;
return $ajax;
case 'moveTorrent':
$id = (int)$_REQUEST['torrent_id'];
$dir = htmlspecialchars($_REQUEST['new_dir']);
$id = (int)$_REQUEST['torrentId'];
$dir = htmlspecialchars($_REQUEST['newDir']);
if ($this->_moveTorrent($id, $dir)){
$this->displayTorrents(array('id' => array('=', $id)));
}else{
echo '<div class="alert alert-danger"><a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a>Erreur : Impossible de déplacer le téléchargement !</div>';
?><div class="alert alert-danger"><a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a>Erreur : Impossible de déplacer le téléchargement !</div><?php
}
return true;
return $ajax;
case 'delTorrent':
$id = (int)$_REQUEST['torrent_id'];
$id = (int)$_REQUEST['torrentId'];
$delLocalFiles = (isset($_REQUEST['delLocalFiles'])) ? true : false;
if ($this->_delTorrent($id, $delLocalFiles)){
echo '<div class="alert alert-success"><a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a>Téléchargement supprimé !';
echo ($delLocalFiles) ? '<br>Les fichiers sur le disque ont également été effacés.' : '';
echo '</div>';
?><div class="alert alert-success"><a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a>Téléchargement supprimé !<?php echo ($delLocalFiles) ? '<br>Les fichiers sur le disque ont également été effacés.' : ''; ?></div><?php
}else{
echo '<div class="alert alert-danger"><a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a>Erreur : Impossible de supprimer le téléchargement !</div>';
?><div class="alert alert-danger"><a class="close" data-dismiss="alert" href="#" aria-hidden="true">&times;</a>Erreur : Impossible de supprimer le téléchargement !</div><?php
}
return true;
case 'showMovePopover':
$this->_displayPopoverDelTorrent();
return $ajax;
}
}
return false;
Expand Down Expand Up @@ -222,36 +219,6 @@ private function _delTorrent($id, $delLocalFiles = false){
return false;
}

/**
* Affiche le popover de déplacement de torrent
* @param int $id ID du torrent
* @param string $currentDir Répertoire actuel du torrent
*
* @return void
*/
private function _displayPopoverMoveTorrent($id, $currentDir){
?>
<form class="form-inline popover-form" role="form" method="POST">
<div class="input-group">
<select name="new_dir" class="form-control input-sm">
<?php
foreach ($this->_downloadDirs as $label => $downloadDir){
?><option value="<?php echo $downloadDir; ?>"<?php echo ($label == $currentDir) ? ' selected' : ''; ?>><?php echo $label ?></option><?php
}
?>
</select>
<span class="input-group-btn">
<input type="hidden" name="torrent_id" value="<?php echo $id ?>">
<input type="hidden" name="filter" value="">
<button class="btn btn-default btn-sm" type="submit" name="action" value="moveTorrent">
<span class="glyphicon glyphicon-share-alt"></span>
</button>
</span>
</div>
</form>
<?php
}

/**
* Déplace un torrent
*
Expand Down
Loading

0 comments on commit 807b7b6

Please sign in to comment.