Ceci & Tati

Създаване на торент файлове през веб интерфейс. / Create torrent files via web interface.

от на мар.31, 2009, категории Линукс, Мрежата, Програмиране

Първо искам да споделя, пробвах с какви ли не perl модули и всякакви други неща, и все не ставаше като хората. Също така не намерих нищо готово написано и завършено в „нета“ по тази тема. Затова реших да си напиша нещо набързо колкото да ми свърши работа и сега реших да го споделя с останалите.

Абсолютен фен съм на Gentoo, затова ще обясня какво съм инсталирал първоначално под него.

emerge -av net-p2p/ctorren

След това прочетох тук: http://en.gentoo-wiki.com/wiki/Wtorrent и инсталирах wtorrent. Но не ми хареса идеята за lighttpd и го направих с apache. За целта компилирах php със следните екстри :)

USE=“mysql sockets apache2 xmlreader xmlrpc xmlwriter simplexml xsl pdo sqlite xpm curl cgi ctype“ emerge -av dev-lang/php

,
редактирах „/etc/apache2/modules.d20_mod_scgi.conf“ по следния начин:

cat 20_mod_scgi.conf

LoadModule scgi_module modules/mod_scgi.so

SCGIMount /RPC2 localhost:5000

Alias /wtorrent /var/www/wtorrent

Deny from all
Allow from 22.14.122.13 22.14.122.14 22.14.121.251 #moite ip adresi za dostap do papkata

и добавих малко права за apache-то:

echo „apache ALL = NOPASSWD: /usr/bin/ctorrent“ >> /etc/sudoers

Ето го и съдържанието на моя скрипт – index.php

<?php

//start edit
$path = „/home/upload“; //izteglenite failove
$ctorrent =  „/usr/bin/ctorrent“; // patia na torent klienta
$announce = „http://zinko.net/announce.php“; //announce na va6iat trakera
$torrents = „/var/www/wtorrent/make_torrent/torrents“; //papkata s nаpravenite torrenti i s permishan 666!
$wtorrent = „/wtorrent“; //patia na instalirania wtorrent
//stop edit

$action = $_GET['action'];

if (!$action) {
echo „<body bgcolor=\“#D0E96E\“>“;
echo „Upravlenie na torrent files<br><table><tr><td>“;
acti(‘Make Torrent’,’pokaji’);
echo    „</td><td>“;
acti(‘View Torrent’,’tview’);
echo    „</td><td>“;
back_wtorrent();
echo    „</td></tr></table>“;
echo „</body>“;
}

if ($action == ‘pokaji’) {
echo „<body bgcolor=\“#D0E96E\“>“;
echo „<FORM method=\“get\“ action=?action >“;
echo    „<INPUT type=\“hidden\“ name=\“action\“ value=\“dobaviane\“>“;
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != „.“ && $file != „..“) {
echo „<input type=\“radio\“ name=\“izbran\“ value=\““.$file.“\“ default> „.$file.“<br>“;
}
}
closedir($handle);
}
echo    „<INPUT type=\“submit\“  value=\“Next\“></FORM>“;
echo „<table><tr><td>“;
acti(‘View Torrent’,’tview’);
echo    „</td><td>“;
back_wtorrent();
echo    „</td></tr></table>“;
echo „</body>“;
}

if (($action == ‘dobaviane’) && ($_GET['izbran'])) {
echo „<body bgcolor=\“#D0E96E\“>“;
$izbran = $path.“/“.$_GET['izbran'];
echo $_GET['izbran'] . „<br><br>“;

if (!is_file($izbran)) {
echo $izbran.“<br><br>“;
echo ‘<pre>’; var_export(rscandir(„$izbran“.’/’)); echo ‘</pre>’;
} else {
echo $izbran.“<br><br>“;
}
echo „<table><tr><td><FORM method=\“get\“>“;

echo „<FORM method=\“get\“>“;
echo    „<INPUT type=\“hidden\“ name=\“action\“ value=\“napravi\“>“;
echo    „<INPUT type=\“hidden\“ name=\“torrent1\“ value=\““.$_GET['izbran'].“\“>“;
echo    „<INPUT type=\“submit\“ value=\“Make torrent\“></FORM>“;
echo    „</td><td>“;
acti(‘Back’,’pokaji’);
echo    „</td></tr><tr><td>“;
acti(‘View Torrent’,’tview’);
echo    „</td><td>“;
back_wtorrent();
echo „</td></tr></table>“;
} else {
if ($action == ‘dobaviane’) {
echo „<body bgcolor=\“#D0E96E\“>“;
echo „Markirai neshto de :(.<br><br>“;
acti(‘Back’,’pokaji’);
echo „<table><tr><td><FORM method=\“get\“>“;
acti(‘View Torrent’,’tview’);
echo    „</td><td>“;
back_wtorrent();
echo „</td></tr></table>“;
}
}

if ($action == ‘napravi’) {
echo „<body bgcolor=\“#D0E96E\“>“;
$torrent_file = „$torrents/$torrent1.torrent“ ;
echo $torrent1.“<br><br>“;
if (file_exists($torrent_file)) {
echo „Faila sashtestvuva!<br><br>“;
echo „<table><tr><td><FORM method=\“get\“>“;
acti(‘Back’,’pokaji’);
echo    „</td><td>“;
acti(‘View Torrent’,’tview’);
echo „</td></tr></table>“;
} else {
echo exec(„cd \“$path\“; $ctorrent -t -l 524288 -u  $announce -s \“$torrent_file\“ \“$torrent1\““);
echo „<table><tr><td><FORM method=\“get\“>“;
acti(‘Make torrent’,’pokaji’);
echo    „</td><td>“;
acti(‘View Torrent’,’tview’);
echo    „</td><td>“;
back_wtorrent();
echo „</td></tr></table>“;
}
echo „</body>“;
}

if ($action == ‘tview’) {
echo „<body bgcolor=\“#D0E96E\“>“;
echo „<FORM method=\“get\“  >“;
echo    „<INPUT type=\“hidden\“ name=\“action\“ value=\“iztrivane\“>“;
if ($handle = opendir(„$torrents“)) {
while (false !== ($file = readdir($handle))) {
if ($file != „.“ && $file != „..“) {
$file1 = str_replace(“ „, „%20″, $file);
echo „<input type=\“radio\“ name=\“izbran\“ value=\““.$file.“\“ default><a href=torrents/“.$file1.“>“.$file.“</a><br>“;
}
}
closedir($handle);
}
echo    „<INPUT type=\“submit\“  value=\“Del\“></FORM>“;
echo „<table><tr><td><FORM method=\“get\“>“;
acti(‘Make Torrent’,’pokaji’);
echo    „</td><td>“;
back_wtorrent();
echo „</td></tr></table>“;
echo „</body>“;
}

if ($action == ‘iztrivane’) {
if ($izbran) {
unlink(„$torrents/$izbran“);
header( ‘Location: ?action=tview’ ) ;
} else {
echo „<body bgcolor=\“#D0E96E\“>“;
echo „<table><tr><td><FORM method=\“get\“>“;
acti(‘Make Torrent’,’pokaji’);
echo    „</td><td>“;
back_wtorrent();
echo „</td></tr></table>“;
echo „</body>“;
}
}

function rscandir($base=“, &$data=array()) {
$array = array_diff(scandir($base), array(‘.’, ‘..’));
foreach($array as $value) :
if (is_dir($base.$value)) :
$data = rscandir($base.$value.’/’, $data);
elseif (is_file($base.$value)) :
$data[] = $base.$value;
endif;
endforeach;
return $data;
}

function back_wtorrent() {
echo „<FORM method=\“get\“  action=\“/“.$wtorrent.“/\“ >“;
echo    „<INPUT type=\“submit\“ value=\“Back to wtorrent\“></FORM>“;
echo „</body>“;
}

function acti($kade,$actions) {
echo „<FORM method=\“get\“>“;
echo    „<INPUT type=\“hidden\“ name=\“action\“ value=\“$actions\“>“;
echo    „<INPUT type=\“submit\“ value=\“$kade\“></FORM>“;
}

?>

За допълнителна информация и проблеми, пишете ми в коментари.


1 Comment for this entry

Вашият коментар

*
За да докажете че не сте бот, въведете този код
Anti-Spam Image

Нещто не намирате ли?

Потърси в блога ми:

Моля Ви не прекалявайте с информацията!