drewhka 0 Posted 2009-09-28 11:00:53 Share Posted 2009-09-28 11:00:53 Stargazer 2.406-rc1, Linux, MySQL, iptables на основе ipset/mark/connmark. Иногда требуется сменить группу (group) пользователю, в ней прописывается канал (аплинк) по которому он работает. Когда он offline - всё норм (т.е. делать в OnChange вообще ничего не надо). Когда online - надо сносить все соединения, убирать из старой группы (ipset -D group1 <ip>) и переносить в другую. Вся проблема как определить авторизован ли он Stargazer'ом в данный момент или нет. Сейчас приходится его насильно выключать, менять группу и врубать обратно, что как бы палевно =) Link to post Share on other sites
niidil 0 Posted 2009-09-29 06:25:22 Share Posted 2009-09-29 06:25:22 Способ немного извращённый, но рабочий. В OnConnect добавить touch /var/stargazer/online/$LOGIN В OnDisconnect rm -f /var/stargazer/online/$LOGIN А потом проверять существует файл или нет. Link to post Share on other sites
drewhka 0 Posted 2009-09-29 10:17:49 Author Share Posted 2009-09-29 10:17:49 Жёстко =) А через mysql или sgconf? Link to post Share on other sites
nightfly 1,239 Posted 2009-09-29 14:27:03 Share Posted 2009-09-29 14:27:03 А через mysql insert into/select from? Link to post Share on other sites
drewhka 0 Posted 2009-09-29 20:05:13 Author Share Posted 2009-09-29 20:05:13 Эмм, ну как-нибудь поизящней чтоли. Ушёл уже от файловой БД юзверей, опять к этому возвращаться ?) Неужели ни у кого не возникало такой задачи - выяснить в скрипте OnChange - авторизован сейчас пользователь или нет? Link to post Share on other sites
nightfly 1,239 Posted 2009-09-30 09:38:11 Share Posted 2009-09-30 09:38:11 Ушёл уже от файловой БД юзверей, опять к этому возвращаться не вижу связи Эмм, ну как-нибудь поизящней чтоли да - двумя примитивными кверизами, вам их написать? Неужели ни у кого не возникало такой задачи нет Link to post Share on other sites
drewhka 0 Posted 2009-09-30 10:49:44 Author Share Posted 2009-09-30 10:49:44 да - двумя примитивными кверизами, вам их написать? Было бы неплохо =) Или хотя бы написать из каких таблиц и полей брать эту инфу. не вижу связи Ну как бы когда база была на файлах там было понятно - фигачить всё в файлы, включая эту задачу. Идеология так сказать =) Link to post Share on other sites
nightfly 1,239 Posted 2009-09-30 11:47:16 Share Posted 2009-09-30 11:47:16 Было бы неплохо =) да вы что Или хотя бы написать из каких таблиц и полей брать эту инфу. Да хотябы так 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 Идеология так сказать =) не вижу идеологии Link to post Share on other sites
drewhka 0 Posted 2009-09-30 12:40:28 Author Share Posted 2009-09-30 12:40:28 Т.е. как я понял, иного метода (если не брать случай правки исходников Stargazer), как управление флагом ВКЛ/ВЫКЛ через OnConnect/OnDisconnect путём записи в тот или иной носитель (файл, таблица mysql, таблицы ipfw или ipset, и т.д.) нет? Просто тогда смысл заморачиваться ещё на один флаг, если ip авторизованного пользователя уже есть в ipset (остаётся только связать login/ip)... Link to post Share on other sites
nightfly 1,239 Posted 2009-09-30 15:58:07 Share Posted 2009-09-30 15:58:07 флагом ВКЛ/ВЫКЛ через OnConnect/OnDisconnect путём записи в тот или иной носитель (файл, таблица mysql, таблицы ipfw или ipset, и т.д.) нет? можете использовать libastral для автоматического определения флага ВКЛ/ВЫКЛ без хранения его в этом трехмерном пространстве Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now