Програмиране
Създаване на торент файлове през веб интерфейс. / Create torrent files via web interface.
by Илия Няголов on мар..31, 2009, under Линукс, Мрежата, Програмиране
Първо искам да споделя, пробвах с какви ли не 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
(continue reading…)
Perl POST/GET параметри
by Илия Няголов on ное..21, 2007, under Програмиране
Да речем че искате да прочетете променливите „month, day, year“ от долопосочения адрес.
http://blog.sharcom.org/sample/index.cgi?month=August&day=8&year=2005
В PHP става лесно:
<?
$month=$_POST[‘month’];
$day=$_POST[‘day’];
$year=$_POST[‘year’];print „$month“;
print „$day“;
print „year“;
?>
Но в Perl не става толкова лесно, за целта трябва една подпрограмка 🙂 .
#!/usr/bin/perl
print „Content-Type: text/html\015\012\015\012“;
sub readallvariables {
if ($ENV{‘REQUEST_METHOD’} eq „POST“) {
read(STDIN,$in,$ENV{‘CONTENT_LENGTH’});
@in = split(/&/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
$in[$i] =~ s/%(..)/pack(„c“,hex($1))/ge;
($key,$val) = split(/=/,$in[$i],2);
$key=~ s/%(..)/pack(„c“,hex($1))/ge;
$val =~ s/%(..)/pack(„c“,hex($1))/ge;
$_POST{$key}=$val;
}
}if ($record = $ENV{‘QUERY_STRING’}) {
@in=split /&/, $record;
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
$in[$i] =~ s/%(..)/pack(„c“,hex($1))/ge;
($key,$val) = split(/=/,$in[$i],2);
$key=~ s/%(..)/pack(„c“,hex($1))/ge;
$val =~ s/%(..)/pack(„c“,hex($1))/ge;
$_GET{$key}=$val;$_REQUEST{$key}=$val;
}
}if ($in = $ENV{HTTP_COOKIE}) {
@in = split(/;/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
$in[$i] =~ s/%(..)/pack(„c“,hex($1))/ge;
($key,$val) = split(/=/,$in[$i],2);
$key =~ s/%(..)/pack(„c“,hex($1))/ge;
$key =~ s/^ //;
$val =~ s/%(..)/pack(„c“,hex($1))/ge;
$_COOKIE{$key}=$val;
}
}}
readallvariables;
print ‘RESULT:’.$_GET{‘month’}.’:’.$_GET{‘day’}.’:’.$_GET{‘year’}