Recently in Разное Category

Запуск uTorrent-server на Linux

На шлюзе конторы, в коей я сейчас работаю, потребовалось поднять торрент-клиент с веб-мордой, для себя и сотрудников. rTorrent из SVN отказался корректно работать. идущий же в родных репозиториях Debian, стар. Супер-стар, я бы сказал. Погуглилось, поспрашивалось, в итоге выбор пал на uTorrent-Server. Поскольку пакета с этим добром для Debian нет, залил руками и написал rc-скрипт для каноничного запуска.
#! /bin/sh
### BEGIN INIT INFO
# Provides:          utserver
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: uTorrent Server init script
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="uTorrent Server"
NAME="utserver"
DAEMON=/usr/bin/utserver
# Опции командной строки
DAEMON_ARGS="-configfile /etc/utserver/utserver.conf -settingspath /var/lib/utserver -logfile /var/log/utserver.log"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

# Подключаем встроенные функции
. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start()
{
        log_daemon_msg "Starting $NAME\n"
        start-stop-daemon --start --quiet --make-pidfile \
                 --pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS > /dev/null &
}


do_stop()
{
        log_daemon_msg "Stoping $NAME\n"
        start-stop-daemon --stop --retry 5 --quiet \
            --pidfile $PIDFILE \
            --name utserver
        rm $PIDFILE
}
case "$1" in
  start)
        do_start
        ;;
  stop)
        do_stop
        ;;
  restart)
        do_stop
        do_start
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
        exit 3
        ;;
esac
exit 0
Cохраним по пути /etc/init.d/utserver и добавим в автозагрузку:
update-rc.d utserver defaults

Расширение для работы с QIWI

Заказчик пожелал прикрутить к некой своей системе прием финансов через платежные терминалы QIWI. Поскольку данная контора весьма противна в плане взаимодействия с гражданами этой страны, убедить их добавить свою кнопку в терминал не получилось по целому ряду причин. Пришлось использовать их сервис "QIWI Кошелек", но не обычный, а который для интернет-магазинов и фрилансеров.
Поскольку разрабатываю я в основном на фреймворке Yii, а расширения для работы с QIWI нет, пришлось писать свое. Что в итоге получилось, можно глянуть тут
P.S.: Собственно за эту поделку я и получил инвайт на Habrahabr.

Перевернутый интернет

Как то на канале #linux проскочила идея "перевернуть интернет". Первоапрельская шутка, так сказать. В принципе получилось это сделать. Срабатывает. не везде, но срабатывает. В любом случае при небольшой доводке кода "перевертыша" получается неплохая резалка графики и флеша на сайтах.

Ну так вот: берем Squid настроенный в режиме transparent и добовляем в конфиг следующие строчки:

redirector_bypass on
redirect_program /etc/squid/redirect.cgi

Сохраняем. создаем этот файлик.

#!/usr/bin/perl
$|=1;
$count = 0;
$pid = $$;
umask 0022;
while (<>) {  chomp $_;
  if ($_ =~ /(.*\.jpg)/i) {
  	$url = $1;
  	system("/usr/bin/wget", "-q", "-O","/var/www/images/$pid-$count.jpg", "$url");
  	system("/usr/bin/mogrify", "-flip","/var/www/$pid-$count.jpg");
  	print "http://192.168.0.1/images/$pid-$count.jpg\n"
  } elsif ($_ =~ /(.*\.gif)/i) {
  	$url = $1;
  	system("/usr/bin/wget", "-q", "-O","/var/www/images/$pid-$count.gif", "$url");
  	system("/usr/bin/mogrify", "-flip","/var/www/images/$pid-$count.gif");
  	print "http://192.168.0.1/images/$pid-$count.gif\n";
  } else {
  	print "$_\n";
  }
  $count++;
}

Соответственно папки по указанным путям в скрипте должны существовать и быть доступными по HTTP.
Так же должен быть установлен wget Apache/lighttpd и ImageMagick.
Cохраняем и просим Squid перечитать конфиг командой squid -k reconfigure.

Вот и все.

P.S. Если гдето накосячить то Squid съест всю оперативу, своп и отвалится.