"Ночной анлим" - как делать админскую блокировку с
"Ночной анлим" - как делать админскую блокировку с
Кто может подсказать, какие запросы к базе нужны, чтобы из скрипта можно было делать админскую блокировку определенным аккаунтам?
Это нужно для т.н. "ночного анлима". Т.е. с 00.00 до 06.00 доступ есть, а в другое время - админская блокировка и, соответственно, vpn-соединение не устанавливается.
Или может это можно штатными средствами решить? Насколько я понимаю, можно только выделить временной диапазон для тарификации, но это не запретит устанавливать vpn-соединения. Во всяком случае у меня так.
Заранее благодарен за любую помощь!
Это нужно для т.н. "ночного анлима". Т.е. с 00.00 до 06.00 доступ есть, а в другое время - админская блокировка и, соответственно, vpn-соединение не устанавливается.
Или может это можно штатными средствами решить? Насколько я понимаю, можно только выделить временной диапазон для тарификации, но это не запретит устанавливать vpn-соединения. Во всяком случае у меня так.
Заранее благодарен за любую помощь!
сначала посмотри в админке какой номер админской блокировки...
accounts.is_blocked=код_блокировки
это shell
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;"
Код блокировки - 256 у меня.
Ваш код работает и выдает список ip, для которых установлена админская блокировка. Но у меня задача не посмотреть на них, а получить возможность в требуемое время включать/выключать админскую блокировку для определенных пользователей.
Изучение debug.log пока ни к чему полезному меня не привело
При явной админской блокировке, по нажатию ОК в окне редактирования свойств абонента, в debug.log вот что валится (убрано всё, что не относится к sql):
Если использовать эти (подобные) запросы вручную - ситуация не воспроизводится и, конечно, аккаунт не блокируется.
Как быть?..
Ваш код работает и выдает список 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: 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: 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: 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: 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(user_id,account_id,slink_id,what_blocked,block_type,start_date,expire_date,is_planning,unabon,unprepay,service_id) VALUES('0','1','0','2','2','1166850497','2000000000','0','0','0','0')
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 ((uid='1' AND uid!='0') OR is_for_all='1' OR (( group_id='1') AND group_id!='0'))
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 ((uid='1' AND uid!='0') OR is_for_all='1' OR (( group_id='1') AND group_id!='0'))
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 писал(а):ну дык по этому скрипту можно связи между таблицами определить...

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

хм...
Странно. Я не силен в этом. Но, получается, что необходим именно такой порядок? А если я и так знаю id?
И еще - при осуществлении админской блокировки, делается
Код: Выделить всё
INSERT INTO blocks_info(user_id,account_id,slink_id,what_blocked,block_type,start_date,
expire_date,is_planning,unabon,unprepay,service_id) VALUES('0','1','0','2','2','STARTDAY...','EXPIREDATE...','0','0','0','0')
Нееее - роутер под линуксом живет. Т.е. как я понимаю, в базе должна быть инфа для радиуса, который, в случае применения админской блокировки, не будет авторизировать абонента.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 писал(а):Нееее - роутер под линуксом живет. Т.е. как я понимаю, в базе должна быть инфа для радиуса, который, в случае применения админской блокировки, не будет авторизировать абонента.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
Я заблудился в этих запросах и таблицах уже
ПАМАГИТЯ!!!