Перейти до

Onchange - как проверить авторизован пользователь или нет?


Рекомендованные сообщения

Stargazer 2.406-rc1, Linux, MySQL, iptables на основе ipset/mark/connmark.

Иногда требуется сменить группу (group) пользователю, в ней прописывается канал (аплинк) по которому он работает. Когда он offline - всё норм (т.е. делать в OnChange вообще ничего не надо). Когда online - надо сносить все соединения, убирать из старой группы (ipset -D group1 <ip>) и переносить в другую.

 

Вся проблема как определить авторизован ли он Stargazer'ом в данный момент или нет. Сейчас приходится его насильно выключать, менять группу и врубать обратно, что как бы палевно =)

Ссылка на сообщение
Поделиться на других сайтах

Способ немного извращённый, но рабочий.

 

В OnConnect добавить

touch /var/stargazer/online/$LOGIN

В OnDisconnect

rm -f /var/stargazer/online/$LOGIN

А потом проверять существует файл или нет.

Ссылка на сообщение
Поделиться на других сайтах

Эмм, ну как-нибудь поизящней чтоли. Ушёл уже от файловой БД юзверей, опять к этому возвращаться ?) Неужели ни у кого не возникало такой задачи - выяснить в скрипте OnChange - авторизован сейчас пользователь или нет?

Ссылка на сообщение
Поделиться на других сайтах
Ушёл уже от файловой БД юзверей, опять к этому возвращаться

не вижу связи

 

Эмм, ну как-нибудь поизящней чтоли

да - двумя примитивными кверизами, вам их написать?

 

Неужели ни у кого не возникало такой задачи

нет

Ссылка на сообщение
Поделиться на других сайтах
да - двумя примитивными кверизами, вам их написать?

Было бы неплохо =) Или хотя бы написать из каких таблиц и полей брать эту инфу.

 

не вижу связи

Ну как бы когда база была на файлах там было понятно - фигачить всё в файлы, включая эту задачу. Идеология так сказать =)

Ссылка на сообщение
Поделиться на других сайтах
Было бы неплохо =)

да вы что

 

Или хотя бы написать из каких таблиц и полей брать эту инфу.

Да хотябы так

 

CREATE TABLE `online` (`id` INT NOT NULL AUTO_INCREMENT ,`login` VARCHAR( 50 ) NOT NULL ,PRIMARY KEY ( `id` ));

 

//OnConnect

 

INSERT INTO `online` (`id` ,`login`) VALUES (NULL , 'ourlogin');

 

//OnDisconnect

delete FROM `online` WHERE `login` = "ourlogin";

 

как проверить есть в табличке поле или нету знаете? :)

 

А еще можно и без мускуля - например на табличках ipfw2

//OnConnect

ipfw table 30 add $ip

//OnDisconnect

ipfw table 30 delete $ip

 

а потом уже и list/grep/awk

 

Идеология так сказать =)

не вижу идеологии

Ссылка на сообщение
Поделиться на других сайтах

Т.е. как я понял, иного метода (если не брать случай правки исходников Stargazer), как управление флагом ВКЛ/ВЫКЛ через OnConnect/OnDisconnect путём записи в тот или иной носитель (файл, таблица mysql, таблицы ipfw или ipset, и т.д.) нет? Просто тогда смысл заморачиваться ещё на один флаг, если ip авторизованного пользователя уже есть в ipset (остаётся только связать login/ip)...

Ссылка на сообщение
Поделиться на других сайтах
флагом ВКЛ/ВЫКЛ через OnConnect/OnDisconnect путём записи в тот или иной носитель (файл, таблица mysql, таблицы ipfw или ipset, и т.д.) нет?

можете использовать libastral для автоматического определения флага ВКЛ/ВЫКЛ без хранения его в этом трехмерном пространстве

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...