Перейти до

drewhka

Маглы
  • Всього повідомлень

    7
  • Приєднався

  • Останній візит

Репутація

0 Обычный

О drewhka

  • Звание
    Пролетал Мимо
  1. drewhka

    Скрипты onConnect/onDisconnect

    Скрипт получения одного из параметров пользователя по его логину (в данном случае - группа) из Firebird . Используется bash, fbsql и awk. tmpfile=`mktemp` outfile=`mktemp` echo "select grp from tb_users where name='$LOGIN';" > $tmpfile fbsql -u sysdba -p masterkey /var/lib/firebird/databases/stargazer.fdb -i $tmpfile -o $outfile group=`awk 'NR==4{gsub(/^[ \t]+|[ \t]+$/,"");printf "%s",$0}' $outfile` rm -f $tmpfile $outfile В частности, кусок кода awk 'NR==4{gsub(/^[ \t]+|[ \t]+$/,"");printf "%s",$0}' $outfile оставляет только 4-ю строку результата запроса fbsql, убирает лишни
  2. Т.е. как я понял, иного метода (если не брать случай правки исходников Stargazer), как управление флагом ВКЛ/ВЫКЛ через OnConnect/OnDisconnect путём записи в тот или иной носитель (файл, таблица mysql, таблицы ipfw или ipset, и т.д.) нет? Просто тогда смысл заморачиваться ещё на один флаг, если ip авторизованного пользователя уже есть в ipset (остаётся только связать login/ip)...
  3. Было бы неплохо =) Или хотя бы написать из каких таблиц и полей брать эту инфу. Ну как бы когда база была на файлах там было понятно - фигачить всё в файлы, включая эту задачу. Идеология так сказать =)
  4. Эмм, ну как-нибудь поизящней чтоли. Ушёл уже от файловой БД юзверей, опять к этому возвращаться ?) Неужели ни у кого не возникало такой задачи - выяснить в скрипте OnChange - авторизован сейчас пользователь или нет?
  5. Stargazer 2.406-rc1, Linux, MySQL, iptables на основе ipset/mark/connmark. Иногда требуется сменить группу (group) пользователю, в ней прописывается канал (аплинк) по которому он работает. Когда он offline - всё норм (т.е. делать в OnChange вообще ничего не надо). Когда online - надо сносить все соединения, убирать из старой группы (ipset -D group1 <ip>) и переносить в другую. Вся проблема как определить авторизован ли он Stargazer'ом в данный момент или нет. Сейчас приходится его насильно выключать, менять группу и врубать обратно, что как бы палевно =)
  6. Вот, например, как получать группу юзвера из базы мускуля (предполагается, что база доступна по адресу 127.0.0.1, имя пользователя в базе stg_user, его пароль stg_passw, сама база называется stg_db: #!/bin/sh LOGIN=$1 group=`mysql --user='stg_user' --password='stg_passw' --skip-column-names --execute="select stggroup from users where login='$LOGIN' limit 1" stg_db | tr -d '\012'` По-аналогии можно вытащить и остальные параметры (смотреть структуру базы в руководстве).
×
×
  • Створити нове...