... Нужно выполнить следующие шаги: {toc} h4. Шаг 1. Создаем файл хук: {panel} touch /app/reductor/cfg/userinfo/hooks/events.sh chmod a+x /app/reductor/cfg/userinfo/hooks/events.sh {panel} h4. Шаг 2. Заполняем файл хук: Содержимое должно быть следующее: {code} #!/bin/bash # Данный скрипт является хуком, а не утилитой. # Не смущайтесь, что здесь ничего не вызывается напрямую. # Не смущайтесь, что здесь есть неопределённые переменные. # Вся логика по сравнению списков IP адресов в основном скрипте. # Её не надо трогать. От вас нужно только описать 3.5 функции: # - SSH - способ передачи команды с stdin на оборудование # - ip_block_full_add/del/get. # Не нужно что-то изобретать, всё готово, нужно только описать эту прослойку! SSH="/usr/bin/ssh -T <пользователь на вашем роутере>@<ip вашего роутера> bash" # отсекаем лишнее из вывода ipset __only_ip() { egrep -o "$ip_or_ipmask_regex" | sed -E "s|^$ip_regex$|&/32|g" } # отправить на оборудование команду на блокирование ip адреса ip_block_full_add() { local ip="$1" echo "/sbin/ipset add reductorblock $ip" | $SSH } # отправить на оборудование команду на снятие блокировки ip адреса ip_block_full_del() { local ip="$1" echo "/sbin/ipset del reductorblock $ip" | $SSH } # получить список заблокированных ip адресов ip_block_full_get() { echo "/sbin/ipset save reductorblock" | $SSH | __only_ip } {code} h4. Шаг 3. Завершаем настройку: # Создаем нужный ipset с hash типом net на роутере. Например: {code} ipset create reductorblock hash:net {code} # Если пользователь на вашем маршрутизаторе не root, добавляем в файлике /etc/sudoers После строчек %sudo ALL=(ALL:ALL) ALL {code} <пользователь на вашем роутере> ALL=(ALL:ALL) NOPASSWD:/sbin/ipset save <пользователь на вашем роутере> ALL=(ALL:ALL) NOPASSWD:/sbin/ipset add <пользователь на вашем роутере> ALL=(ALL:ALL) NOPASSWD:/sbin/ipset del {code}
|
И добавляем в сам hook перед "/sbin/ipset" sudo # Указываем правильные IP адрес роутера и логин в переменной $SSH
|
# Генерируем ssh ключи ключи: chroot /app/reductor
|
{code} chroot /app/reductor
|
/usr/bin/ssh-keygen
|
{code}
|
# Включаем и добавляем авторизацию по ключам: chroot /app/reductor
|
{code} chroot /app/reductor
|
/usr/bin/ssh-copy-id <пользователь на вашем роутере>@$<ip_роутера>
|
{code}
|
# Проверяем вручную команду TIMEOUT=0 chroot /app/reductor /usr/local/Reductor/bin/events.sh
|
{code} TIMEOUT=0 chroot /app/reductor /usr/local/Reductor/bin/events.sh {code}
|
# Всю папку .ssh/ необходимо скопировать по пути /app/reductor/cfg/ чтобы ключи не пропали при обновлении: {code}
|
... mkdir -p /app/reductor/cfg/root/.ssh/ cp /app/reductor/root/.ssh/* /app/reductor/cfg/root/.ssh/ {code}
|