Перейти к содержимому

DeepNet

ASP24.com.ua - Вся линейка моделей Ubiquiti для создания идеальной сети. Звоните! 050-225-7770
Фото

Скрипты onConnect/onDisconnect


  • Чтобы отвечать, сперва войдите на форум
92 ответов в теме

#21 BECHA

BECHA

    Пролетал Мимо

  • Маглы
  • Фишка
  • 21 Сообщений:

Опубликовано 01 Март 2008 - 10:20

Выношу на суд общественности мои скрипты STG. Система Debian 4.0, STG 2.404.9.7. Требовалось обеспечить доступ в локальную сеть провадера и подсчет интерента, получаемого сервером с одного из компьютеров сети првайдера.

Стартовый скрипт фаера:
#!/bin/bash
echo "IpTables Rules Loading"
# diclamer
int_if="eth0"
int_adr="192.168.0.1"
int_net="192.168.0.0/23"
#
ext_if="eth1"
ext_adr="192.168.111.222"
ext_net="192.168.111.0/24"
#
#$wan_if="ppp+"
#
lo_if="lo0"
lo_adr="127.0.0.1"
#
cmd="/sbin/iptables -v"
#
# Clear old
$cmd -F
$cmd -t nat -F
$cmd -t mangle -F
$cmd -X
#
$cmd -A INPUT -i lo0 -j ACCEPT
#
# Setup polices
$cmd -P INPUT DROP
$cmd -P OUTPUT DROP
$cmd -P FORWARD DROP
#
# Create additional chais
$cmd -N bad_tcp_p
$cmd -N allowed
$cmd -N tcp_p
$cmd -N udp_p
$cmd -N icmp_p
#
###################
# bad_tcp_p chain #
###################
$cmd -A bad_tcp_p -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT --reject-with tcp-reset
#
$cmd -A bad_tcp_p -p tcp ! --syn -m state --state NEW -j LOG \
--log-prefix "New not syn:"
#
#################
# allowes chain #
#################
$cmd -A allowed -p TCP --syn -j ACCEPT
$cmd -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$cmd -A allowed -p TCP -j DROP
#
#############
# TCP rules #
#############
$cmd -A tcp_p -p TCP -i $int_if -s $int_net --dport 22 -j allowed
$cmd -A tcp_p -p TCP -i $ext_if -s $ext_net --dport 22 -j allowed
$cmd -A tcp_p -p TCP -i $int_if -s $int_net --dport 5555 -j allowed
$cmd -A tcp_p -p TCP -i $ext_if -s 192.168.111.1 --dport 5555 -j allowed
#
#############
# UDP rules #
#############
$cmd -A udp_p -p UDP -i $int_if -s $int_net --dport 5555 -j ACCEPT
$cmd -A udp_p -p UDP -i $ext_if -s $ext_net --dport 5555 -j ACCEPT
#
##############
# ICMP rules #
##############
$cmd -A icmp_p -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$cmd -A icmp_p -p ICMP -s 0/0 --icmp-type 0 -j ACCEPT
#
###############
# INPUT chain #
###############
$cmd -A INPUT -p tcp -j bad_tcp_p
$cmd -A INPUT -p tcp -d $ext_adr -m state --state ESTABLISHED,RELATED -j ACCEPT
$cmd -A INPUT -p udp -d $ext_adr -m state --state ESTABLISHED,RELATED -j ACCEPT
$cmd -A INPUT -p TCP -j tcp_p
$cmd -A INPUT -p UDP -j udp_p
$cmd -A INPUT -p ICMP -i $int_if -j icmp_p
$cmd -A INPUT -p ICMP -i $ext_if -j icmp_p
$cmd -A INPUT -d 224.0.0.0/8 -j DROP
$cmd -A INPUT -p GRE -j ACCEPT
#
#################
# FORWARD chain #
#################
$cmd -A FORWARD -p tcp -j bad_tcp_p
$cmd -A FORWARD -i $int_if -s $int_net -o $ext_if -j ACCEPT
$cmd -A FORWARD -m state -i eth+ -o eth+ --state ESTABLISHED,RELATED -j ACCEPT
#
################
# OUTPUT chain #
################
$cmd -A OUTPUT -p TCP -j bad_tcp_p
$cmd -A OUTPUT -p ALL -s $lo_adr -j ACCEPT
$cmd -A OUTPUT -p ALL -s $int_adr -j ACCEPT
$cmd -A OUTPUT -p ALL -s $ext_adr -j ACCEPT
#
# Modify TTL (speecially for greedy providers)
$cmd -t mangle -A POSTROUTING -o $ext_if -j TTL --ttl-set 128
#
# Masquerade.
#$cmd -t nat -A POSTROUTING -o $ext_if -j MASQUERADE
#
# SNAT
$cmd -t nat -A POSTROUTING -p ALL -s $int_net -o $ext_if -j SNAT --to-source $ext_adr
#
echo 1 >  /proc/sys/net/ipv4/ip_forward
#

скрипт /etc/ppp/ip-up вызываемый при поднятии интерфейса ppp0 привожу только то, что я в него дописал.

cmd="/sbin/iptables -v"
#
$cmd -A INPUT -p ALL -d $PPP_LOCAL -m state --state ESTABLISHED,RELATED -j ACCEPT
$cmd -A INPUT -p ICMP -i $PPP_IFACE -j icmp_p
$cmd -A OUTPUT -p ALL -o $PPP_IFACE -s $PPP_LOCAL -j ACCEPT
$cmd -t mangle -A POSTROUTING -o $PPP_IFACE -j TTL --ttl-set 128
$cmd -t nat -A POSTROUTING -p ALL -o $PPP_IFACE -j SNAT --to-source $PPP_LOCAL

аналогично ip-down
cmd="/sbin/iptables -v"
#
$cmd -D INPUT -p ALL -d $PPP_LOCAL -m state --state ESTABLISHED,RELATED -j ACCEPT
$cmd -D INPUT -p ICMP -i $PPP_IFACE -j icmp_p
$cmd -D OUTPUT -p ALL -o $PPP_IFACE -s $PPP_LOCAL -j ACCEPT
$cmd -t mangle -D POSTROUTING -o $PPP_IFACE -j TTL --ttl-set 128
$cmd -t nat -D POSTROUTING -p ALL -o $PPP_IFACE -j SNAT --to-source $PPP_LOCAL

OnConnect
cmd="/sbin/iptables -v"
$cmd -A FORWARD -i eth0 -s $2 -j ACCEPT
$cmd -A FORWARD -s $2 -m state --state ESTABLISHED,RELATED -j ACCEPT
$cmd -A FORWARD -d $2 -m state --state ESTABLISHED,RELATED -j ACCEPT


OnDisconnect
cmd="/sbin/iptables -v"
$cmd -D FORWARD -i eth0 -s $2 -j ACCEPT
while [ $? -eq 0 ]
        do
        $cmd -D FORWARD -i eth0 -s $2 -j ACCEPT
        done
###
$cmd -D FORWARD -s $2 -m state --state ESTABLISHED,RELATED -j ACCEPT
while [ $? -eq 0 ]
        do
        $cmd -D FORWARD -s $2 -m state --state ESTABLISHED,RELATED -j ACCEPT
        done
###
$cmd -D FORWARD -d $2 -m state --state ESTABLISHED,RELATED -j ACCEPT
while [ $? -eq 0 ]
        do
        $cmd -D FORWARD -d $2 -m state --state ESTABLISHED,RELATED -j ACCEPT
        done
#

буду рад любой конструктивной критике :00:
  • 0

DEPS

#22 vovksextra

vovksextra

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 220 Сообщений:

Опубликовано 22 Март 2008 - 15:17

Нужна помощь!

Перешли на базу Фиребёрд и возникла проблема с "резкой" скорости абонентам

в поле note у нас стоял параметр, который и определял саму скорость

в скрипте onConnect - там все было понятно, а теперь стал вопрос как вытянуть это поле из базы и передать скрипту в виде параметра

нашли в модуле user.cpp код


 strprintf(&scriptOnConnectParams,
                "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"",
                scriptOnConnect.c_str(),
                login.c_str(),
                inet_ntostr(currIP),
                (double)cash,
                id,
                dirsStr);
 

заменили на


 strprintf(&scriptOnConnectParams,
                "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\" \"%s"",
                scriptOnConnect.c_str(),
                login.c_str(),
                inet_ntostr(currIP),
                (double)cash,
                id,
                dirsStr,
                note);
 

Все как-бы хорошо - теперь в скрипте имеем $6 который и есть наша скорость.

но есть одно но - после изменения кода, при подключении юзера валится старгейзер.

Мы так поняли что коду не нравится переменная note.

MADF- подскажи куда рыть далее


Вообщем нужно каким то макаром передать параметр note скрипту
  • 0
Люди без мечты,все-равно что птицы без крыльев - гадят и не летают

#23 madf

madf

    Дьявол

  • Сitizens
  • ФишкаФишкаФишкаФишкаФишкаФишкаФишкаФишка
  • 4 075 Сообщений:
  • Пол:Мужчина
  • Город:Дніпро

Опубликовано 22 Март 2008 - 16:00

А как вы такой ужас скомпилировали вобще? Оно даже компилироваться не должно было!
Нужно не note (который class std::string), а note.c_str() (она вернет указатель на константный буфер, который схавает strprintf)
  • 0

NG Optics

#24 vovksextra

vovksextra

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 220 Сообщений:

Опубликовано 22 Март 2008 - 16:23

Нужно не note (который class std::string), а note.c_str() (она вернет указатель на константный буфер, который схавает strprintf)

как раз note.c_str() и не катило - ошибка при компиляции была !
user.cpp: In member function `void USER::Connect(bool)':
user.cpp:611: error: &#39;class USER_PROPERTY<std::string>&#39; has no member named &#39;c_str&#39;
gmake: *** [user.o] Ошибка 1


а вот просто note - компилилось без ошибок )))

в том то и дело
  • 0
Люди без мечты,все-равно что птицы без крыльев - гадят и не летают

#25 Genius

Genius

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 136 Сообщений:

Опубликовано 22 Март 2008 - 16:48

Вот по такой конструкции должно работать

((string)note).c_str()
  • 0
Глубина, Глубина, отпусти меня, Глубина....

#26 vovksextra

vovksextra

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 220 Сообщений:

Опубликовано 22 Март 2008 - 17:00

Вот по такой конструкции должно работать

((string)note).c_str()

user.cpp: In member function `void USER::Connect(bool)&#39;:
user.cpp:611: error: &#39;class USER_PROPERTY<std::string>&#39; has no member named &#39;c_str&#39;
gmake: *** [user.o] Ошибка 1

никуя ))

Товарищи Сишники - предлагайте решение. А то я смотрю в коду и ничего не вижу))
  • 0
Люди без мечты,все-равно что птицы без крыльев - гадят и не летают

#27 madf

madf

    Дьявол

  • Сitizens
  • ФишкаФишкаФишкаФишкаФишкаФишкаФишкаФишка
  • 4 075 Сообщений:
  • Пол:Мужчина
  • Город:Дніпро

Опубликовано 22 Март 2008 - 17:42

Затупил. Это ж шаблон.
Надо так: note.ConstData().c_str()
  • 0

#28 madf

madf

    Дьявол

  • Сitizens
  • ФишкаФишкаФишкаФишкаФишкаФишкаФишкаФишка
  • 4 075 Сообщений:
  • Пол:Мужчина
  • Город:Дніпро

Опубликовано 22 Март 2008 - 17:42

Вот по такой конструкции должно работать

((string)note).c_str()

Уж лучше тогда static_cast ;)
  • 0

#29 vovksextra

vovksextra

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 220 Сообщений:

Опубликовано 22 Март 2008 - 18:27

Затупил. Это ж шаблон.
Надо так: note.ConstData().c_str()

спасибо друг, все заработало . Будешь в наших краях - с нас пиво ))
  • 0
Люди без мечты,все-равно что птицы без крыльев - гадят и не летают

#30 madf

madf

    Дьявол

  • Сitizens
  • ФишкаФишкаФишкаФишкаФишкаФишкаФишкаФишка
  • 4 075 Сообщений:
  • Пол:Мужчина
  • Город:Дніпро

Опубликовано 22 Март 2008 - 18:44

Затупил. Это ж шаблон.
Надо так: note.ConstData().c_str()

спасибо друг, все заработало . Будешь в наших краях - с нас пиво ))

А где находятся ваши края? ;)
  • 0

#31 Wapr-Old

Wapr-Old

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 168 Сообщений:

Опубликовано 21 Апрель 2008 - 22:38

Решил таки выложить обновлённую версию скрипта, но посмотрев на объём :-0 , решил ограничиться заголовком и ссылкой.
#!/bin/sh
#Этот скрипт вызывается в момент, когда пользователь
#успешно прошел авторизацию в биллинге. Задача скрипта - перестроить
#файрволлы так, чтобы пользователь получил доступ в интернет

# ©2003-2008 Wapr Old. Ver 3.3 (04.2008)

#0. Умолчания: До запуска биллинга должна быть создана цепочка BILL
# с последним правилом -j DROP и в неё должны отправляться все пакеты
# для которых необходимо управление доступом. (как минимум из FORWARD)
# и запрос на прокси.
# например так:
# iptables -A FORWARD -i $WAN -o $LAN -j BILL
# iptables -A FORWARD -i $LAN -o $WAN -j BILL
# iptables -A INPUT -p tcp --dport 3128 -i $LAN -j BILL
# где WAN/LAN - имена сетевых интерфейсов [ethX|pppX]

#1. Скрипт проверяет наличие персональной юзерской цепочки по шаблону
# BILL_${LOGIN} и если её нет, создает её. [BILL_Vasya]

#2. В неё при создании добавляются в нужном порядке разрешающие
# и запрещающие правила для всех необходимых адресов и критериев
# ограничения скорости с возвратом пакетов через -j ACCEPT
# Стоит учесть, что сюда попали пакеты ТОЛЬКО данного юзера, поэтому
# IP юзера можно уже не учитывать

#3. В цепочку BILL добавляется вызов юзерской цепочки для всех
# входящих и исходящих пакетов данного юзера
# iptables -I BILL -s $IP -j BILL_${LOGIN}
# iptables -I BILL -d $IP -j BILL_${LOGIN}

#4. Для отключения юзера надо удалить только 2 правила в цепочке BILL,
# а его цепочка остается на будущее. (to do)

#5. Допускается форвард до 15 портов по TCP и UDP отдельно. Список берется
# либо из поля Userdata0, либо из файла в каталоге &#34;/home/$LOGIN/portforward.txt&#34;
# формат записи: tcp=port1,port2... udp=port1,port2...
# эквиваленные разделители: &#34;=&#34;==&#34;:&#34; &#34;,&#34;==&#34;;&#34; \n==\s==\t
# Последняя строка файла не должна содержать правил и может быть пустой или
# с комментарием, но она должна быть.
# Пример создаваемого правила:
# iptables -t nat -A PREROUTING_$LOGIN -i ppp+ -p tcp -m multiport \
#        --dport 1234,5678,18273 -j DNAT --to-destination $IP
# В случае попытки захвата занятого порта юзеру выдаётся предупреждение, а порт
# исключается из запроса.

#6. Если имя в биллинге не совпадает с именем на сервере, для поиска юзерского
# файла допускается подмена из поля Userdata0: username=имя_на_сервере

#7. Можно заблокировать порты назначения каждому юзеру записями в Userdata0
# rejecttcp=port1,port2... и rejectudp=port1,port2...
# Блокирующие записи вносятся в персональную юзерскую цепочку и не мешают остальным
# юзерам. Также нет ограничений на количество портов.
# пример блокирующего правила:
# iptables -A BILL_$LOGIN -p TCP --dport 25 -j REJECT

#8. При анализе имени тарифа выделяются фрагменты &#34;anlim-&#34; и &#34;abon-&#34; для создания
# особых правил для данных типов тарифов.
# Также выделяется последние цифры от знака &#34;-&#34; до конца для получения тарифной скорости
# в Kbit/sec по маске AnyTarifName-X, где X произвольное число.
# Если числа нет или оно равно нулю - скорость не ограничена.
# Т.е. название тарифа строится по формату: AnyTariffName[abon-][anlim-][-speed]

дальше код. его много. 1 пуд. чтоб не засорять тут, скачать можно там.
  • 0

#32 igal

igal

    Пролетал Мимо

  • Маглы
  • Фишка
  • 43 Сообщений:

Опубликовано 29 Апрель 2008 - 16:56

Немного обновленая версия скриптов, с ограничением скорости для каждого юзверя...
Смотрим:

# OnConnect

LOGIN=$1
IP=$2
CASH=$3
ID=$4
SPEED=`cat /var/stargazer/users/$LOGIN/conf | grep &#39;Note=&#39; | cut -d &#34;=&#34; -f2`
fwcmd=&#34;/sbin/ipfw -q&#34;
cur_date=`date \+\%Y.\%m.\%d`
cur_time=`date \+\%H:\%M:\%S`

# DELETE RULEZ
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10001`
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10002`
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10003`
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10004`
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10005`

# ADD RULEZ
${fwcmd} pipe `expr $ID + 101` config bw $SPEED
${fwcmd} add `expr $ID &#39;*&#39; 10 + 10001` allow icmp from $IP to any icmptype 0,3,4,11,12
${fwcmd} add `expr $ID &#39;*&#39; 10 + 10002` pipe `expr $ID + 101` ip from $IP to any via xl0
${fwcmd} add `expr $ID &#39;*&#39; 10 + 10003` pipe `expr $ID + 101` ip from any to $IP via xl0
${fwcmd} add `expr $ID &#39;*&#39; 10 + 10004` allow ip from $IP to any
${fwcmd} add `expr $ID &#39;*&#39; 10 + 10005` allow ip from any to $IP

# ADD TO LOG
echo &#34;<=;$cur_date;$cur_time;$ID;$LOGIN;$IP;$CASH&#34; >> /var/stargazer/users/$LOGIN/connect.log
echo &#34;<=;$cur_date;$cur_time;$ID;$LOGIN;$IP;$CASH&#34; >> /home/stat/logs/allconnect.log

# OnDisconnect
LOGIN=$1
IP=$2
CASH=$3
ID=$4

fwcmd=&#34;/sbin/ipfw -q&#34;

# TIME FORMAT
cur_date=`date \+\%Y.\%m.\%d`
cur_time=`date \+\%H:\%M:\%S`

# DELETE RULEZ FRO IPFW
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10001`
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10002`
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10003`
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10004`
${fwcmd} delete `expr $ID &#39;*&#39; 10 + 10005`

echo &#34;=>;$cur_date;$cur_time;$ID;$LOGIN;$IP;$CASH&#34; >> /var/stargazer/users/$LOGIN/connect.log
echo &#34;=>;$cur_date;$cur_time;$ID;$LOGIN;$IP;$CASH&#34; >> /home/stat/logs/allconnect.log
с фаерволом думаю несложно... выглядит это (ipfw show) бриблизительно так:
...
10011     163      14456 allow icmp from 172.12.114.6 to any icmptypes 0,3,4,11,12
10012    1659     181967 pipe 102 ip from 172.12.114.6 to any via xl0
10013    1780     815891 pipe 102 ip from any to 172.12.114.6 via xl0
10014    1659     181967 allow ip from 172.12.114.6 to any
10015    2470    1342574 allow ip from any to 172.12.114.6
10031    7435     683948 allow icmp from 172.12.114.42 to any icmptypes 0,3,4,11,12
10032   11183    1327402 pipe 104 ip from 172.12.114.42 to any via xl0
10033   19096    7432025 pipe 104 ip from any to 172.12.114.42 via xl0
10034   11183    1327402 allow ip from 172.12.114.42 to any
10035   30668   14159607 allow ip from any to 172.12.114.42
10191    1875     172320 allow icmp from 172.12.115.3 to any icmptypes 0,3,4,11,12
10192    6834     886513 pipe 105 ip from 172.12.115.3 to any via xl0
10193    9150    6539362 pipe 105 ip from any to 172.12.115.3 via xl0
10194    6834     886513 allow ip from 172.12.115.3 to any
10195   16292   12879816 allow ip from any to 172.12.115.3
...


FreeBSD 6.3
#!/bin/sh
fwcmd=&#34;/sbin/ipfw&#34;
${fwcmd} -f flush

####################################
oif=&#34;bge0&#34;
onet=&#34;10.100.201.1&#34;
omask=&#34;255.255.255.0&#34;
oip=&#34;10.100.201.60&#34;        ip ИНТЕРНЕТ

iif=&#34;fxp0&#34;
inet=&#34;192.168.15.0&#34;
imask=&#34;255.255.255.0&#34;
iip=&#34;192.168.15.1&#34;            сетка для клиентов
####################################
не как не получяется настроить rc.firewall чтоб работал OnConnect и OnDisconnect

ipfw show правила есть, тоесть OnConnect добавляет свои правила.
не знаю как сделать чтобы клиент например, с ip 192.168.15.3, нажал конект есть инет, нажал дисконект -нет инета
10011    0       0 allow icmp from 192.168.15.3 to any icmptypes 0,3,4,11,12
10012    0       0 pipe 102 ip from 192.168.15.3 to any via fxp0
10013    0       0 pipe 102 ip from any to 192.168.15.3 via fxp0
10014    0       0 allow ip from 192.168.15.3 to any
10015    0       0 allow ip from any to 192.168.15.3

  • 0

#33 cristal

cristal

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 159 Сообщений:

Опубликовано 08 Июнь 2008 - 20:47

Скрипт OnUserAdd в связке с dhcpd
При добавлении юзера удаляет } в конце dhcpd.conf, дописывает сторочку с привязкой ip и mac, ставит } на место.
прописывает ip в статическую таблицу arp и вносит изменения в файл /etc/ethers для организации статической таблицы arp при старте системы.
Ну и ребутит dhcpd.
МАС адрес должен добавляться в конфигураторе в поле "Userdata0"

#!/bin/bash

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

# Login
login=$1

ip=`cat /var/stargazer/users/$login/conf | grep &#39;IP=&#39; | cut -d &#34;=&#34; -f2`
mac=`cat /var/stargazer/users/$login/conf | grep &#39;Userdata0=&#39; | cut -d &#34;=&#34; -f2`
num=`cat /etc/dhcpd.conf | wc -l`
hst=`echo $ip | cut -d&#34;.&#34; -f4` # в больших сетях можно заюзать hst=$login
#let &#34;num=num+1&#34;
sed $num&#34;d&#34; /etc/dhcpd.conf > /var/tmp/dhcpd.temp
echo &#34;            host host-$hst {hardware ethernet $mac; fixed-address $ip;}
}&#34; >> /var/tmp/dhcpd.temp
rm /etc/dhcpd.conf
mv /var/tmp/dhcpd.temp /etc/dhcpd.conf

echo &#34;$ip       $mac&#34; >> /etc/ethers

arp -s $ip $mac

service dhcpd reload

Наткнулся на грабли, на которые наверняка уже кто то наступил, если кто просветит - буду очень благодарен, итак:
Скрипт вполне рабочий, но если он выполняется при добавлении юзера (как ему и положено), то вместо ИП адреса в конфигурационные файлы вписывается "*". Если же повторно выполнить данный скрипт, предварительно указав переменной LOGIN имя только что созданного пользователя, то скрипт отработает все правильно, как ему и полагается. Создается впечатление что скрипт выполняется тогда, когда файл пользователя conf уже создан, но в нем нет никакой информации.

ОС
Linux 2.6.23.15-80.0.120asp #1 SMP Thu Feb 28 20:15:16 EET 2008 i686 i686 i386 GNU/Linux

STARGAZER 2.4.04
  • 0

#34 madf

madf

    Дьявол

  • Сitizens
  • ФишкаФишкаФишкаФишкаФишкаФишкаФишкаФишка
  • 4 075 Сообщений:
  • Пол:Мужчина
  • Город:Дніпро

Опубликовано 08 Июнь 2008 - 21:00

При добавлении пользователя у него кроме логина ничего нет. После добавления идет серия OnChange, в которой юзеру присваиваются параметры.
  • 0

#35 cristal

cristal

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 159 Сообщений:

Опубликовано 08 Июнь 2008 - 22:02

При добавлении пользователя у него кроме логина ничего нет. После добавления идет серия OnChange, в которой юзеру присваиваются параметры.

при изменении каких параметров выполняется скрипт ОНЧЕНДЖ ?
Если выполняется каждый раз, даже при внесении средств на счет - то тогда нужно делать проверки на наличие записей в конфигурационных файлах служб что бы не засорять дублями последние.
Я не очень силен в БАШе, может поделитесь скриптом, который добавлял бы данные нового пользователя в конфигурационный файл или изменял данные уже существующего. Если готового примера нет, может кто покажет на примере файлика /etc/ethers

Хотелось бы что нибудь подобное

проверяем есть ли есть ли АП 10.0.0.1 в файле /etc/ethers
если нет - то добавляем запись типа 10.0.0.1 00:00:00:00:00:01
если есть - то удаляем существующую запись и записываем на место старой что нибудь типа 10.0.0.1 00:00:00:00:00:01
  • 0

#36 Колян

Колян

    Вампир

  • Сitizens
  • ФишкаФишкаФишкаФишкаФишкаФишка
  • 1 556 Сообщений:

Опубликовано 09 Июнь 2008 - 07:49

При добавлении пользователя у него кроме логина ничего нет. После добавления идет серия OnChange, в которой юзеру присваиваются параметры.

при изменении каких параметров выполняется скрипт ОНЧЕНДЖ ?
Если выполняется каждый раз, даже при внесении средств на счет - то тогда нужно делать проверки на наличие записей в конфигурационных файлах служб что бы не засорять дублями последние.
Я не очень силен в БАШе, может поделитесь скриптом, который добавлял бы данные нового пользователя в конфигурационный файл или изменял данные уже существующего. Если готового примера нет, может кто покажет на примере файлика /etc/ethers

Хотелось бы что нибудь подобное

проверяем есть ли есть ли АП 10.0.0.1 в файле /etc/ethers
если нет - то добавляем запись типа 10.0.0.1 00:00:00:00:00:01
если есть - то удаляем существующую запись и записываем на место старой что нибудь типа 10.0.0.1 00:00:00:00:00:01

берем с помощью консольного конфигуратора ВСЕ значения, и перезаписываем файл заново полностью.
  • 0
Админ без пива, что сервак без проца!

#37 borin

borin

    Первая Кровь

  • Маглы
  • ФишкаФишка
  • 51 Сообщений:

Опубликовано 10 Июнь 2008 - 04:37

Подскажите что делает цикл while [ $? -eq 0 ], вначале же и так правило стоит на удаление?
iptables -D FORWARD -i $eth_local -s $ip -j DROP
while [ $? -eq 0 ]
do
   iptables -D FORWARD -i $eth_local -s $ip -j DROP
done

  • 0
Stargazer форева. Alferof респект (stg-web by Alferov)

#38 madf

madf

    Дьявол

  • Сitizens
  • ФишкаФишкаФишкаФишкаФишкаФишкаФишкаФишка
  • 4 075 Сообщений:
  • Пол:Мужчина
  • Город:Дніпро

Опубликовано 10 Июнь 2008 - 08:02

Цикл чисчтит файрвол в случае, если, случайно, там оказалось несколько таких правил. Гарантия того, что пользователь будет отключен.
  • 0

#39 borin

borin

    Первая Кровь

  • Маглы
  • ФишкаФишка
  • 51 Сообщений:

Опубликовано 10 Июнь 2008 - 08:43

спс
  • 0
Stargazer форева. Alferof респект (stg-web by Alferov)

#40 cristal

cristal

    Точу Зубы

  • Сitizens
  • ФишкаФишкаФишка
  • 159 Сообщений:

Опубликовано 10 Июнь 2008 - 09:08

берем с помощью консольного конфигуратора ВСЕ значения, и перезаписываем файл заново полностью.

Не совсем понял Ваш ответ, разъясните пожалуйста.
  • 0




1 пользователей читают эту тему

0 members, 1 guests, 0 anonymous users

Local.blog МЕТА - Украина