"Ночной анлим" - как делать админскую блокировку с

Технические вопросы по UTM 5.0
Ответить
jekahawk
Сообщения: 38
Зарегистрирован: Сб авг 20, 2005 02:10

"Ночной анлим" - как делать админскую блокировку с

Сообщение jekahawk »

Кто может подсказать, какие запросы к базе нужны, чтобы из скрипта можно было делать админскую блокировку определенным аккаунтам?

Это нужно для т.н. "ночного анлима". Т.е. с 00.00 до 06.00 доступ есть, а в другое время - админская блокировка и, соответственно, vpn-соединение не устанавливается.

Или может это можно штатными средствами решить? Насколько я понимаю, можно только выделить временной диапазон для тарификации, но это не запретит устанавливать vpn-соединения. Во всяком случае у меня так.

Заранее благодарен за любую помощь!

G@rik
Сообщения: 74
Зарегистрирован: Чт май 18, 2006 18:47

Сообщение G@rik »

сначала посмотри в админке какой номер админской блокировки...
accounts.is_blocked=код_блокировки

Код: Выделить всё

mysql -e "use UTM5; SELECT DISTINCT INET_NTOA(ip_groups.ip & 0xFFFFFFFF) from ip_groups, iptraffic_service_links, service_links, accounts  WHERE accounts.id=service_links.account_id and service_links.id=iptraffic_service_links.id and iptraffic_service_links.ip_group_id=ip_groups.ip_group_id and service_links.is_deleted=0 and accounts.is_blocked=КОД_БЛОКИРОВКИ ORDER BY ip_groups.ip asc;"
это shell

G@rik
Сообщения: 74
Зарегистрирован: Чт май 18, 2006 18:47

Сообщение G@rik »

код помоему 1808
вышеприведённый скрипт выводит ip заблоченных юзверов...

jekahawk
Сообщения: 38
Зарегистрирован: Сб авг 20, 2005 02:10

Сообщение jekahawk »

Код блокировки - 256 у меня.

Ваш код работает и выдает список ip, для которых установлена админская блокировка. Но у меня задача не посмотреть на них, а получить возможность в требуемое время включать/выключать админскую блокировку для определенных пользователей.

Изучение debug.log пока ни к чему полезному меня не привело :(

При явной админской блокировке, по нажатию ОК в окне редактирования свойств абонента, в debug.log вот что валится (убрано всё, что не относится к sql):

Код: Выделить всё

UPDATE users SET password='TESTUSER',last_change_date='1166850497',who_change='-1',full_name='',is_juridical='0',
juridical_address='',is_send_invoice ='0',advance_payment ='0',actual_address='',flat_number='',house_id='0',
entrance='',floor='',passport='',
work_telephone='',home_telephone='',mobile_telephone='',web_page='',
icq_number='',tax_number='',kpp_number='',email='',bank_id='0',bank_account='',comments='',personal_manager='',connect_date='-7200' WHERE id='1'

SELECT query&#58; SELECT id FROM blocks_info WHERE what_blocked='2' AND account_id='1' AND block_type='2' AND start_date<='1166850497' AND expire_date>='1166850497' AND is_deleted='0'
SELECT query&#58; SELECT id FROM blocks_info WHERE what_blocked='2' AND account_id='1' AND block_type='2' AND start_date<='2000000000' AND expire_date>='2000000000' AND is_deleted='0'
SELECT query&#58; SELECT id FROM blocks_info WHERE what_blocked='2' AND account_id='1' AND block_type='2' AND start_date<='1166850498' AND expire_date>='1166850498' AND is_deleted='0'
SELECT query&#58; SELECT id FROM blocks_info WHERE what_blocked='2' AND account_id='1' AND block_type='2' AND start_date<='1999999999' AND expire_date>='1999999999' AND is_deleted='0'

UPDATE accounts SET is_blocked='256' WHERE id='1'

SELECT id FROM blocks_info WHERE what_blocked='2' AND account_id='1' AND block_type='2' AND start_date<='1166850497' AND expire_date>='1166850497' AND is_deleted='0'
SELECT id FROM blocks_info WHERE what_blocked='2' AND account_id='1' AND block_type='2' AND start_date<='2000000000' AND expire_date>='2000000000' AND is_deleted='0'
SELECT id FROM blocks_info WHERE what_blocked='2' AND account_id='1' AND block_type='2' AND start_date<='1166850498' AND expire_date>='1166850498' AND is_deleted='0'
SELECT id FROM blocks_info WHERE what_blocked='2' AND account_id='1' AND block_type='2' AND start_date<='1999999999' AND expire_date>='1999999999' AND is_deleted='0'
INSERT INTO blocks_info&#40;user_id,account_id,slink_id,what_blocked,block_type,start_date,expire_date,is_planning,unabon,unprepay,service_id&#41;  VALUES&#40;'0','1','0','2','2','1166850497','2000000000','0','0','0','0'&#41;

UPDATE accounts SET int_status='0' WHERE id='1'
UPDATE accounts SET dealer_account_id='0' WHERE id='1'
UPDATE accounts SET vat_rate='0',sale_tax_rate='0' WHERE id='1'
UPDATE accounts SET credit='0.000000' WHERE id='1'
UPDATE accounts SET discount_period_id='1' WHERE id='1'
UPDATE accounts SET int_status='0' WHERE id='1'
UPDATE accounts SET block_recalc_abon='0',block_recalc_prepaid='0' WHERE id='1'

SELECT rule_on,rule_off,router_id FROM firewall_rules WHERE is_deleted='0' AND &#40;&#40;uid='1' AND uid!='0'&#41; OR is_for_all='1' OR &#40;&#40; group_id='1'&#41; AND group_id!='0'&#41;&#41;
SELECT id,router_type,router_ip,login,password,router_comments FROM routers_info WHERE is_deleted='0'
SELECT rule_on,rule_off,router_id FROM firewall_rules WHERE is_deleted='0' AND &#40;&#40;uid='1' AND uid!='0'&#41; OR is_for_all='1' OR &#40;&#40; group_id='1'&#41; AND group_id!='0'&#41;&#41;
SELECT id,router_type,router_ip,login,password,router_comments FROM routers_info WHERE is_deleted='0'
SELECT id, group_name FROM groups
SELECT login,password,basic_account,is_blocked,create_date,
last_change_date,who_create,who_change,is_juridical,
full_name,juridical_address,actual_address,work_telephone,
home_telephone,mobile_telephone,web_page,icq_number,tax_number,
kpp_number,bank_id,bank_account,comments,discount_period_id,email,
house_id,flat_number,entrance,floor,passport,personal_manager,
connect_date,is_send_invoice,advance_payment FROM users WHERE id='1' AND is_deleted=0
SELECT group_id FROM users_groups_link WHERE user_id='1'
Если использовать эти (подобные) запросы вручную - ситуация не воспроизводится и, конечно, аккаунт не блокируется.

Как быть?..

G@rik
Сообщения: 74
Зарегистрирован: Чт май 18, 2006 18:47

Сообщение G@rik »

ну дык по этому скрипту можно связи между таблицами определить... а дальше
UPDATE accounts SET accounts.is_blocked=256 where УСЛОВИЕ

jekahawk
Сообщения: 38
Зарегистрирован: Сб авг 20, 2005 02:10

Сообщение jekahawk »

G@rik писал(а):ну дык по этому скрипту можно связи между таблицами определить...
Вот если б я еще знал, как это сделать правильно :(

А то, что необходимо выполнить
UPDATE accounts SET accounts.is_blocked=256 where УСЛОВИЕ
это понятно. Но кроме этого ведь еще необходимо что-то сделать, т.к. только этого недостаточно.

G@rik
Сообщения: 74
Зарегистрирован: Чт май 18, 2006 18:47

Сообщение G@rik »

ну нужно знать ip абонента, вычислить его id и сделать ему блокировку...

jekahawk
Сообщения: 38
Зарегистрирован: Сб авг 20, 2005 02:10

Сообщение jekahawk »

Спасибо за терпение... :oops:

хм...

Странно. Я не силен в этом. Но, получается, что необходим именно такой порядок? А если я и так знаю id?

И еще - при осуществлении админской блокировки, делается

Код: Выделить всё

INSERT INTO blocks_info&#40;user_id,account_id,slink_id,what_blocked,block_type,start_date,
expire_date,is_planning,unabon,unprepay,service_id&#41;  VALUES&#40;'0','1','0','2','2','STARTDAY...','EXPIREDATE...','0','0','0','0'&#41; 
и, как я понимаю, это делается не просто так.

weris
Сообщения: 240
Зарегистрирован: Пт окт 27, 2006 14:58
Откуда: Томск
Контактная информация:

Сообщение weris »

если роутер циска - то типа -


time-range preved
periodic daily 12:30 to 13:30
access-list 100 permit ip any any time-range preved
access-list 100 permit tcp any any
access-list 100 permit icmp any any time-range preved

jekahawk
Сообщения: 38
Зарегистрирован: Сб авг 20, 2005 02:10

Сообщение jekahawk »

weris писал(а):если роутер циска - то типа -


time-range preved
periodic daily 12:30 to 13:30
access-list 100 permit ip any any time-range preved
access-list 100 permit tcp any any
access-list 100 permit icmp any any time-range preved
Нееее - роутер под линуксом живет. Т.е. как я понимаю, в базе должна быть инфа для радиуса, который, в случае применения админской блокировки, не будет авторизировать абонента.

Я заблудился в этих запросах и таблицах уже :(

ПАМАГИТЯ!!!

Аватара пользователя
Magnum72
Сообщения: 1947
Зарегистрирован: Чт сен 22, 2005 06:54
Контактная информация:

Сообщение Magnum72 »

jekahawk писал(а):
weris писал(а):если роутер циска - то типа -


time-range preved
periodic daily 12:30 to 13:30
access-list 100 permit ip any any time-range preved
access-list 100 permit tcp any any
access-list 100 permit icmp any any time-range preved
Нееее - роутер под линуксом живет. Т.е. как я понимаю, в базе должна быть инфа для радиуса, который, в случае применения админской блокировки, не будет авторизировать абонента.

Я заблудился в этих запросах и таблицах уже :(

ПАМАГИТЯ!!!
Жди до завтра-послезавтра.

Ответить