Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Технические вопросы по RusHub'у _ [RusHub] Использование posix capabilities

Автор: ShadoWx 1.2.2012, 16:59

С версии 2.3.6 "RusHub" поддерживает возможность использования posix capabilities.
Выражаясь простым языком - можно запускать хаб на 411 порту и не использовать перенаправления при помощи IPTABLES.

Шаг 1.
В этой теме мы с вами скомпилируем хаб, поддерживающий эту возможность.
Нам понадобятся следующие пакеты в системе
:
1. libcap-dev
2. autotools-dev
3. automake
4. libtinyxml-dev

Все эти пакеты необходимо установить при помощи команды:

Код
sudo apt-get install название_пакета

Если у вас нет установленного хаба, то загружаем его из svn:
Код
svn co https://rushub.svn.sourceforge.net/svnroot/rushub/trunk/ /локальный/путь/куда/загружаем/


Далее переходим в папку с хабом, в моем случае это:
/home/shadowx/rushub/rushub/

Шаг 2.
Вводим команды по очереди:
Установка хаба
1.
Код
autoreconf -i

2.
Код
./configure --enable-caps

3.
Код
make

4.
Код
make clean

5. make

На 5 этапе начнется сборка хаба

Шаг 3.
Теперь нам необходимо добавить 2 строки в файл настроек RusHub'а:
Код
<Item Name="sUserName">shadowx</Item>
<Item Name="sGroupName">shadowx</Item>

где shadowx - имя пользователя от кого мы запускаем хаб.

Теперь в /etc/init.d/rushub записываем следующее содержимое:
Код для управления
Код
#!/bin/sh

### BEGIN INIT INFO
# Provides:          rushub
# Required-Start:    $network
# Required-Stop:     $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by rushub.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

NAME="RusHub"
PATH_DAEMON="/home/shadowx/rushub_bin"
DAEMON="$PATH_DAEMON/$NAME"
PATH_DAEMON_CFG="$PATH_DAEMON/RusHub.xml"
PIDF="$PATH_DAEMON/rushub.pid"

ARGS="-c $PATH_DAEMON_CFG"

USER="root"

start() {
    echo -n "Запуск $NAME: "
    start-stop-daemon --start --chuid $USER --make-pidfile "$PIDF" --pidfile "$PIDF" --name $NAME --background --startas $DAEMON -- $ARGS
    echo "готово."
}
stop() {
    echo -n "Остановка $NAME: "
    start-stop-daemon --chuid $USER --stop --pidfile "$PIDF" --name $NAME --retry=TERM/5/KILL/10
    rm "$PIDF"
    echo "готово."
}
restart() {
    stop
    sleep 2
    start
}

if [ ! -x "$DAEMON" ]
then
   echo "отсутствует файл для запуска $DAEMON"
   exit 0
fi

case "$1" in
    start)
        start
;;
    stop)
        stop
;;
    restart)
        restart
;;
    status)
        if [ -f "$PIDF" ];
        then
            PID=$(cat $PIDF)
            if [ `ps auwx|grep $NAME|grep $PID|grep -v -c grep` = 1 ]
            then
                echo "процесс $NAME работает [pid: $PID]."
                exit 0
            fi
            echo "процесс $NAME не запущен."
            exit 3
        fi
        echo "процесс $NAME не запущен."
        exit 3
;;
    *)
        echo "Использование {start|status|stop|restart}"
        exit 1
;;
esac
exit 0

Шаг 4.
Теперь необходимо накатить небольшой патч на lua-плагин, чтобы хаб запустился после установки:
 shared_tinyxml.zip ( 615 байт ) : 14


Как накатывать:
1. перейти в папку с lua-плагином cd rushub/lua_plugin
2. patch -p4 < shared_tinyxml.patch

Шаг 5.

1. Установить порт для хаба в настройках 411
2. sudo service rushub restart

У меня все запустилось успешно.
Спасибо mariner'у за наставления на пусть истинный surrender.gif

Автор: Setuper 1.2.2012, 17:10

На самом деле вместо патча можно это дело в autoconf заделать

Код
#ifdef HAVE_CONFIG_H
  #include <config.h>
#endif // HAVE_CONFIG_H

#if HAVE_TINYXML_H
  #include <tinyxml.h>
#else
  #include "tinyxml/tinyxml.h"
#endif // HAVE_TINYXML_H


в config.h:
Код
#define HAVE_TINYXML_H 1

Автор: ShadoWx 1.2.2012, 17:11

Кому как нравится, Илья surrender.gif

Автор: Setuper 1.2.2012, 17:19

Не ну так более правильно сделать. LuaPlugin.cpp я подправил. Однако не знаю достаточно ли будет указать в config.h: #define HAVE_TINYXML_H 1
Или же нужно будет ещё где-то определить HAVE_CONFIG_H

Хотя луа плагин ну нас же не собирается при помощи autotools :(

Автор: ShadoWx 1.2.2012, 17:19

Цитата(Setuper @ 1.2.2012, 18:17) *
Не ну так более правильно сделать. LuaPlugin.cpp я подправил. Однако не знаю достаточно ли будет указать в config.h: #define HAVE_TINYXML_H 1
Или же нужно будет ещё где-то определить HAVE_CONFIG_H


делал так как описывал, все прекрасно завелось, Коля обещал просмотреть и выявить косяки в моем описании still_dreaming.gif

Илья, вопрос к тебе, а после обновления на новые релизы строчки из конфига не будут удаляться ??

Автор: mariner 1.2.2012, 18:32

Коля посомтрел и поправил. Я думаю autotools и для lua_plugin сделаю

Автор: CrazyKiller 1.2.2012, 21:22

Есть проше http://mydc.ru/index.html?showtopic=4949&view=findpost&p=39923
в 2 клика как говоритса )))

Работает уже давно у меня так, по сей день, не от Рута а от пользователя big_smile.gif

но за такой мануал как у вас, тоже интересно big_smile.gif
Спасибо

Автор: mariner 1.2.2012, 21:39

Алсо, я предпочитаю все-таки ставить когда этот код внутри софтины. Удобнее плюс опять же. он не тянет, а плюсов "к карме" накидывает. Хотелось бы только чтобы сетапер сообщал о том, когда еще файлы добавляет в дерево исходников, а то вот был релиз, в котором autotool-сборка не работала. Сегодня поправил это в svn.

Автор: Setuper 1.2.2012, 22:10

Ок.
Ну а вообще, релизы все находятся в tags, и релизные ветки вообще говоря можно также править на svn при необходимости.

Автор: mariner 1.2.2012, 22:46

да не вопрос. Буду подпиливать по мере необходимости.