Jump to content
Local
nightfly

Релизы Ubilling

Recommended Posts

Roman Pogosyan,

Могу дать свои скрипты под впн. Сделано кривовато , да и еще надцать лет назад. Да и подключать нужно было всего 7 компов.

В общем если пригодится, то :

1. Сначала делаем общий класс :

Файл inet.sh

#!/bin/sh


echo "#####################QDISC ROOT##############################"
echo "creating root qdisc..."
tc qdisc add dev eth2 root handle 3: cbq avpkt 3500 bandwidth 100Mbit
tc qdisc add dev eth2 ingress
tc qdisc add dev ifb1 root handle 4: htb
tc filter add dev eth2 parent ffff: protocol ip u32 match u32 0 0 flowid 4:1 action mirred egress redirect dev ifb1

 

2. файл /etc/ppp/ip-up (вырезка)

# These variables are for the use of the scripts run by run-parts
PPP_IFACE="$1"
PPP_TTY="$2"
PPP_SPEED="$3"
PPP_LOCAL="$4"
PPP_REMOTE="$5"
PPP_IPPARAM="$6"
export PPP_IFACE PPP_TTY PPP_SPEED PPP_LOCAL PPP_REMOTE PPP_IPPARAM

# as an additional convenience, $PPP_TTYNAME is set to the tty name,
# stripped of /dev/ (if present) for easier matching.
PPP_TTYNAME=`/usr/bin/basename "$2"`
export PPP_TTYNAME

# If /var/log/ppp-ipupdown.log exists use it for logging.
if [ -e /var/log/ppp-ipupdown.log ]; then
exec > /var/log/ppp-ipupdown.log 2>&1
echo $0 $*
echo
fi

# This script can be used to override the .d files supplied by other packages.
if [ -x /etc/ppp/ip-up.local ]; then
exec /etc/ppp/ip-up.local "$*"
fi

run-parts /etc/ppp/ip-up.d \
--arg="$1" --arg="$2" --arg="$3" --arg="$4" --arg="$5" --arg="$6"

# if pon was called with the "quick" argument, stop pppd
if [ -e /var/run/ppp-quick ]; then
rm /var/run/ppp-quick
wait
kill $PPPD_PID
fi
#это было в стандартном файле, но мы видим, что есть $6 - это ип с которого подключается впн, $1 - назва интерфейса, $5 айпи , который он получит с впн

#а поэтому дальше :
case "$6" in
192.24.44.8) # тут ип, с которого будет подключение

/sbin/iptables -t mangle -D FORWARD -d $5 -j MARK --set-mark 0x88
/sbin/iptables -t mangle -D FORWARD -s $5 -j ACCEPT
while [$? -eq 0 ]
do
/sbin/iptables -t mangle -D FORWARD -d $5 -j MARK --set-mark 0x88
/sbin/iptables -t mangle -D FORWARD -s $5 -j ACCEPT
done
/sbin/iptables -t mangle -I FORWARD -d $5 -j MARK --set-mark 0x88
/sbin/iptables -t mangle -I FORWARD -s $5 -j ACCEPT
tc qdisc add dev $1 root handle 5: cbq avpkt 3500 bandwidth 100Mbit
tc class add dev $1 parent 5: classid 5:8 cbq rate 600Kbit allot 1500 prio 5 bounded isolated
tc filter add dev $1 parent 5: protocol ip prio 5 handle 0x88 fw classid 5:8

;;
esac

я делаю 2 шейпера (htb и cbq)

htb - шейпит по метке - так как резать есть смысл траффик , который идет с нет на абона, но не трафик от абона к серваку.

cbq - шейпит обратку (ну не получилось сделать метки на обратный трафик через ifb) по айпишнеку.

 

Мне нужно было включить 6-8 компов , поэтому я сделал через кейс 8 выборок , но по аналогии можно сделать шаблоны.

Share this post


Link to post
Share on other sites

Мои скрипты уникальные тем, что они не шейпят конекртно INPUT - OUTPUT, а шейпят на политике форвардинга через метки.

Не вижу осбых проблем с тем, чтобы шейпить по моей схеме, только если это будет ppp там нужно будет кое-то подправить. Если у кого есть вопросы - это лучше в личке решать, ибо короткими сообщениями на форуме это будет очень долго и мучительно.

Роман Погасян - если так и не разобрались, как организовать шейп - я вам в личку сбросил свою асю, там и разберемся, просто нужно точно узнать как у вас организован проход трафика через сервер.

По поводу ifb не пробовал, пробовал как-то на вланах нарезать скорость, - к сожалению кривое дело вышло, как-то некоректно нарезка идет.

Долго мучался, как под Дебианом, так и под Убунтой, и под Федорой, другие уже даже не стал пробовать оси.

Вообще кривой шейп в линуксе - если у вас проход трафика организован не через реальные сетевухи как например eth0 и eth1 - советую обратить свой взор на БСД.

А, вообще Роман мне было бы интересно попробовать нарезку через ppp. Постучитесь, я думаю к чему-то разумному придем.

Share this post


Link to post
Share on other sites

Небесный , ты тут спец по линуксам как я понял :lol: тут такой вопрос по нарезке

в линкуксах шейпят трафик создавая Ifb и заворачивая на него трафик , что мешает заворачивать трафик со всех интерфейсов на один ifb и и там делать шейп по IP ? получится двусторонний шейп одним правилом , тока я не знаю не получит ли заворот кишок пингвинчег от этого ... вроде в мылнице попробовал шейпило нормально , но 1 пользователь это легко .. а когда будет куча ....

Предоставленная мною схема делает нарезки через метки - метки организуются на политике Форвардинга, и обойтись только одним правило будет очень сложно - ибо tc нарезает только исходящий трафик от интерфейса, входящий на интерфейс к сожалению не режет. (((

Share this post


Link to post
Share on other sites

 

запускали его до старта STG..не шейпит..

........

Надо смотреть ваш случай, как у вас организован проход трафика через сервер. Отправил сообщение в личку с аськой.

Share this post


Link to post
Share on other sites

Спасибо Небесному, во всём разобрались =) можно всё это передать в вики если надо =)

 

 

и это..что означает "Активный: Да" ?%) и как сделать неактивным?

Share this post


Link to post
Share on other sites

"Активность" определяется критерием "Бабло">="Кредит" и просто намекает на тот факт что у пользователя вообще есть шанс пользоваться интернетом. Если очень уж хочется его зарубить - для этого есть и замораживалка, и вырубалка и олвесонлайнилка.

Share this post


Link to post
Share on other sites

олвесонлайнилка.

Чесное слово, пока прочитал, чуть мозг не сломал, а когда прочитал, так чуть со стула не упал. :)

Share this post


Link to post
Share on other sites

На будущее постараюсь выражаться более пизчленораздельно :)

 

post-4093-0-90398700-1351433685_thumb.jpg

Share this post


Link to post
Share on other sites

и снова здрасьте =)

 

здравствуйте

 

 

подскажите, на сколько сложно будет изменить модуль mysql для работы с таблицами ubillinga, что бы подтягивало адреса, телефоны и т.д. в стандартном конфигураторе =)

 

Проще попросить nightfly чтобы он дублировал изменения телефонов и адресов в Stargazer.

Share this post


Link to post
Share on other sites

У себя прикручиваю пополнение через easypay.

В данный момент стал вопрос: откуда брать номер договора (id) абонента?

 

У самого была идея: введенный номер с помощью математических преобразований свести к мин. виду, потом сравнить с полем "id" из таблицы realname.

От туда выбрать логин и его уже при успешной операции пополнять.

Или есть оптимальней способ?

Share this post


Link to post
Share on other sites

2 AoW

Нафиг вообще что-то потом менять в штатном конфигураторе?

Телефоны уносяться в одну строчку вида INSERT INTO `phones` (login, phone) SELECT login, Phone FROM `users`; Как делать из адресов которые в varchar нормальные адреса с разнесением по населенным пунктам/улицам/домам/подъездам/этажам/квартирам бай дефолт понятия не имею. Можно если очень хочется какой-то астральный парсер нарисовать.

 

2 Keen

Номер договора брать можно вестимо из таблички contracts где они храняться в виде login -> contract. Если так случилось что номеров договоров абонентов нету изначально (как у меня, гы) можно не долго думая использовать скажем их айпишки. Для этого следует привести как минимум функцию zb_UserGetContract скажем к виду

 

function zb_UserGetContract($login) {
$login=vf($login);
$query="SELECT `IP` from `users` WHERE `login`='".$login."'";
$contract_arr=simple_query($query);
$raw_ip=$contract_arr['contract'];
$result=ip2int($raw_ip);
return($result);
}

 

чтобы получить на выходе нормальную цифирку.

 

Для внесения денюжек можно использовать функцию zb_CashAdd($login, $cash, $operation, $cashtype, $note) либо если очень уж хочется чего-то низкоуровневого то метод класса ApiBilling->addcash($login,$cash)

Share this post


Link to post
Share on other sites

2 AoW

Нафиг вообще что-то потом менять в штатном конфигураторе?

Телефоны уносяться в одну строчку вида INSERT INTO `phones` (login, phone) SELECT login, Phone FROM `users`; Как делать из адресов которые в varchar нормальные адреса с разнесением по населенным пунктам/улицам/домам/подъездам/этажам/квартирам бай дефолт понятия не имею. Можно если очень хочется какой-то астральный парсер нарисовать.

 

 

Дело не в том, что б менять, а в том, что бы работал фильтр по улице или по дому например.

Также пробовали переносить данные из userreg.address в users.address - Конфигуратор не видит изменений в таблице

Share this post


Link to post
Share on other sites

Естессно, старгейзер читает свои данные из users только на старте, после чего просто себе их помнит. И записывает их только при изменениях конфигураторами.

 

 

Если самоцелью является использование "конфигуратора и чтобы под винду" то можно хором спеть "bizzarre bizzarre допиши свой winbox, API уже готово давно".

Share this post


Link to post
Share on other sites

Хорошо, допустим вопрос с полями можно будет решить ручками с помощью скриптов к базе, и перезагрузками сервера время от времени =)

 

Теперь вопрос относительно экспорта текстовой базы в мускуль. Если воспользоваться стандартным конвертером СТГ. и потом вручную с помощью скриптов раскинуть данные из users по таблицам ubiling -а то ubiling будет коректно с ними работать???

Share this post


Link to post
Share on other sites
Хорошо, допустим вопрос с полями можно будет решить ручками с помощью скриптов к базе, и перезагрузками сервера время от времени =)

Это извращение, честно.

 

 

Теперь вопрос относительно экспорта текстовой базы в мускуль. Если воспользоваться стандартным конвертером СТГ. и потом вручную с помощью скриптов раскинуть данные из users по таблицам ubiling -а то ubiling будет коректно с ними работать???

не вижу причин не работать, кодировка разве что - ubilling сплошь и рядом юникодный, умолчальные таблички старгейзера - черт знает в чем.

 

База большая?

Share this post


Link to post
Share on other sites

Если сильно уж больно хочется пользоваться виндовым конфигуратором, можно сделать двумя способами.

1. Это переписать виндовый конфигуратор для работы с ubilling.

2. Это дублировать запись в ubilling при изменении-добавлении юзера: одну пишем в наше поле, другую пишем в стандартное поле стж.

 

В решении этих задач не вижу особых трудностей, но как всегда есть одно НО.

Если вы уже решились пользоваться ubilling - не советую уходить в строну от схемы сделанной разработчиками ибо будет потом больно при обновлении версии и т.п.

 

Но, блин кривизна все это какая.

Share this post


Link to post
Share on other sites

 

База большая?

 

1600 абонентов, а есть какое-то решение? Можно конечно написать скриптик "небольшой",

Share this post


Link to post
Share on other sites

Можно и сконвертировать раз и навсегда "небольшим скриптиком" :)

Share this post


Link to post
Share on other sites

По просьбам читателей, которым особо вломно ставить Ubilling чтобы покликать по нему в живую а не на красивых музыкальных видео - появились онлайн демки:

 

Собственно административная часть (логин и пароль - admin/demo)

А также кабинет пользователя (показывает первого же попавшегося пользователя)

 

Демка крутиться на FreeBSD установленном на VirtualBox на FreeBSD (люблю рекурсию, кхе-кхе). Чуть попожже добавлю автоматическое разворачивание раз в сутки с нуля.

 

ЗЫ не волнуйтесь, работы над следующим релизом ведуться достаточно активно. Он точно не за горами и даже не за холмиками.

Share this post


Link to post
Share on other sites

Давно грозился мануалом по прикручиванию радиуса. Вот наконец вчера заставили написать.

 

Теперь ведуться работы по возврату рандомных атрибутов. Думаю сделать как всегда, шаблонизируемые пресеты под разные железки.

Share this post


Link to post
Share on other sites

Эммм, да вроде работает. Проверил из гамерик.

Share this post


Link to post
Share on other sites

В скриптах для Linux найдена ошибка - кто пользуется стандартными скриптами - желательно заменить, а именно ошибка в скрипте OnDisconnect

Исправленные скрипты прилагаю в архиве. http://file.qip.ru/file/uPjHhjFp/scriptstar_2.html

 

В скрипте OnDisconnect заменить

#Download
$tc filter del dev $int_iface_down parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark
$tc class del dev $int_iface_down parent 1:1 classid 1:$mark htb rate $speedkb

#Upload
$tc filter del dev $int_iface_up parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark1
$tc class del dev $int_iface_up parent 1:1 classid 1:$mark1 htb rate $speedkb

 

на

 

#Download
$tc filter del dev $IFDOWN parent 1: protocol ip prio 3 handle $mark fw classid 1:$mark
$tc class del dev $IFDOWN parent 1:1 classid 1:$mark htb rate $SPEED$SCOUNT

#Upload
$tc filter del dev $IFUP parent 1: protocol ip prio 3 handle $mark1 fw classid 1:$mark1
$tc class del dev $IFUP parent 1:1 classid 1:$mark1 htb rate $UPSPEED$SCOUNT

 

И сверху возле переменных еще добавить вытягивание скорости для клиента.

SPEED=`/etc/stargazer/GetSpeed $LOGIN`
UPSPEED=`/etc/stargazer/GetUpSpeed $LOGIN`
SCOUNT="Kbit"

 

А, проще всего взять и заменить скрипт. )))

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By maxkorn
      Вопрос может быть уже задавался на форуме, но ответа я так и не нашел
      Ubilling  установлен на убунту
      /var/www/billing/
      скрипт autoubupdate.sh лежит в каталоге /var/www/
      конфиг:
      #dialog DIALOG="/usr/bin/dialog" #fetch software FETCH="/usr/bin/wget" #pwd command PWD="/bin/pwd" # path to your apache data APACHE_DATA_PATH="/var/www/" # ubilling path UBILLING_PATH="./billing/" #kill default admin account after update? DEFADM_KILL="NO" #use DN online detection? DN_ONLINE_LINKING="YES" #update log file LOG_FILE="/var/log/ubillingupdate.log" При запуске выдает ошибку: Wrong current directory
       
      Может кто-нибудь подсказать, хоть в какую сторону копать
       


    • By wowanv
      Доброго вечора. Система Ubilling 1.0.4 rev 7269 Freebsd,  Nas Mikrotik 6.44.6 Radius DHCP. Налаштував все по мануалу. Проблема така після зміни mac клієнта,на старому mac видається іп та швидкість, після видалення користувача з білінгу теж саме! Що не так ????

    • By nightfly
      Не поверите, но оказалось так, что сегодня - отличный день для первого в этом году релиза. А именно Ubilling 1.0.4 rev 7269 yokai
       
      Коротко о изменениях:
      Изменения в структуре БД. см. дамп. alter.ini: новая опция VISOR_IN_PROFILE включающая контролы навигации в Visor. alter.ini: новая опция SMARTUP_ENABLED включающая базовую интеграцию со SmartUP alter.ini: новая необязательная опция ASTERISK_GET_FULL_CDR_CEL_DATA указывающая, что из таблиц астериска CEL и CDR следует доставать абсолютно все записи, не игнорируя записей со статусами «no answer», «hangup», «musiconhold». alter.ini: новая необязательная опция ASTERISK_SC_CHECK_ENABLED указывает, что не нужно просто брать и ставить абоненту кредит, а стоит сначала проверить целесообразность этого действия и доступность для данного лицевого счета. alter.ini: новая необязательная опция ASTERISK_SC_TARIFFSALLOWED имеет точно такое же значение, как и опция SC_TARIFFSALLOWED из userstats.ini alter.ini: новая опция ENVY_ENABLED включающая зависть. alter.ini: новая необязательная опция SMARTUP_NOCACHE отключающая использование кэшированных данных в SmartUP. Модуль «Отчет по АРПУ»: теперь должен чуть меньше разваливаться. Модуль «Редактор crontab»: теперь форматирование примечаний более вменяемое. Модуль «УКВ»: в отчеты добавлен контрол быстрого перехода в отчет по деталям подключения КТВ. Модуль «Visor»: минорные исправления юзабилити. Модуль «Профиль пользователя»: теперь умеет опционально показывать ссылку навигации в профиль связанного пользователя видеонаблюдения. Mikrotik API: кастомный API порт теперь используется не только расширенным конфигуратором микротикоНАСов, но динамическим шейпером для Mikrotik, и самим Старгейзером(при работе с Mikrotik через API, естественно). Модуль Это ловушка!: добавлена нотификация о ошибках связанных с невозможностью прочитать данные из источника. Модуль «Профиль пользователя»: небольшая оптимизация производительности. Модуль Склад: в отчеты для инвентаризации добавлено разделение на ТМЦ которые реально находятся на складе и забронированы. Новый модуль «Исправление необработанных платежей»: теперь доступен при просмотре платежей за конкретную дату. Новый модуль Зависть: позволяет сохранять конфиги ваших сетевых устройств и хранить их сколько нужно в архиве. Модуль «Теги пользователей»: логирование добавления и удаления тегов пользователям приведено к общему виду. Модуль «Живи с этим»: теперь текущие запланированные задачи запланированные на прошлое подсвечены красным, запланированные на сегодня - оранжевым. Модуль TrinityTV: исправлено добавление устройств по коду из административного интерфейса. Модуль «TrinityTV»: исправлено логирование при удалении устройств. Модуль «TrinityTV»: исправлено быстродействие показа списка подписок, при включении опции TRINITYTV_RDEVS. Модуль «TrinityTV»: добавлен отчет по присвоенным пользователям устройствам. Кабинет пользователя: обновлены оповещения модуля «OmegaTV». Кабинет пользователя: исправлены контролы модуля Megogo в Chrome для скина paper. Кабинет пользователя: исправлены контролы модулей TrinityTV и SweetTV для скина paper. RemoteAPI: новый вызов smartup. RemoteAPI: к вызову Asterisk добавлена новая возможность приостановки(заморозки) услуги абонента с проверкой на целесообразность и доступность этого действия для данного лицевого счета. RemoteAPI: установка кредита путем Asterisk вызова теперь так же умеет проверять целесообразность и доступность этого действия для данного лицевого счета. Контролируется опциями alter.ini ASTERISK_SC_CHECK_ENABLED и ASTERISK_SC_TARIFFSALLOWED. Сервер DHCP: Исправлена работа Option 82 для ZTE. Теперь поддерживает GPON (Serial number) в качестве идентификатора ONT. Выбор идентификатора основан на том к какой OLT привязана ONT, в свою очередь проверяем SNMP шаблон для нужного OLT. Если GPON - подставляем Serial Number, если EPON - подставляем MAC ONU. Глобально: в контролах выбора года теперь стало на один больше. Глобально: в контролах выбора даты улучшена подсветка текущей, выбранной и выбираемой дат.  
      Как всегда ссылочки здесь, и никуда не делись:
      Почитать полный чейнджлог: http://wiki.ubilling.net.ua/doku.php?id=changelog2020#rev_7269
      Ознакомиться с рекомендациями к обновлению: http://wiki.ubilling.net.ua/doku.php?id=relnotes#section104
      Потрогать руками демку: http://ubilling.net.ua/?module=fnpages&pid=demo
       

       
    • By esystems
      Доброе время суток
       
      Посдскажите пожалуйста как реализовать, так чтоб когда у пользователя закончились деньги на балансе ubilling. То появлялся сайт с информацыей что у Вас закончились средсва и вам нужно  перейти на сайт или зайти в личный кабинет и произвести оплату?
    • By Небесный
      Есть нужда сделать 3шт. NAS паралельно.
      1 NAS - роутер в мировую сеть.
      2 NAS - внутренние сервисы.
      3 NAS - внутренние сервисы.
      Не хочу внутренние сервисы пускать через первый НАС, дабы не нагружать, решил установить rscriptd на другие серваки, и что-бы они работали паралельно.
      Так вот в чем вопрос: "Может ли старгейзер работать паралельно с тремя rscriptd, если одна и така же сеть указана на всех трех НАС"?
       
      Пока пробую только Биллинг+НАС1+НАС2, третий пока не трогаю, дай разобраться с двумя НАСами.

      stargzer.conf
      LogFile = /var/log/stargazer.log PIDFile = /var/run/stargazer.pid Rules = /etc/stargazer/rules DetailStatWritePeriod = 1/6 StatWritePeriod = 30 DayFee = 1 DayFeeIsLastDay = no DayResetTraff = 1 SpreadFee = yes FreeMbAllowInet = no WriteFreeMbTraffCost = yes FullFee = yes <DirNames>     DirName0 = Internet     DirName1 =     DirName2 =     DirName3 =     DirName4 =     DirName5 =     DirName6 =     DirName7 =     DirName8 =     DirName9 = </DirNames> ExecutersNum = 2 ModulesPath = /usr/lib/stg MonitorDir=/var/stargazer/monitor FeeChargeType = 1 ReconnectOnTariffChange = yes <IncludeFile "conf-enabled.d/store_*.conf"> </IncludeFile> <Modules>     <IncludeFile "conf-enabled.d/mod_*.conf">     </IncludeFile> </Modules>  
      remote_nas.conf
      192.168.0.0/24 xxx.xxx.xxx.150 10.0.0.0/8 xxx.xxx.xxx.150 213.174.11.0/24 xxx.xxx.xxx.150 192.168.0.0/24 xxx.xxx.xxx.100 10.0.0.0/8 xxx.xxx.xxx.100 213.174.11.0/24 xxx.xxx.xxx.100 192.168.0.0/24 xxx.xxx.xxx.2 10.0.0.0/8 xxx.xxx.xxx.2 213.174.11.0/24 xxx.xxx.xxx.2  
       
      mod_remote_script.conf
      <Module remote_script>     SendPeriod = 10     SubnetFile = /etc/stargazer/remote_nas.conf     Password = 123456     UserParams = Tariff     Port = 9999 </Module>  
      На 1 NAS все работает, на 2 NAS не работает.
       
      Конфигурация 2 NAS
       
      LogFileName = /var/log/rscriptd.log ExecutersNum = 2 ConfigDir = /etc/rscriptd Password = 123456 Port = 9999 UserTimeout = 60 ScriptOnConnect = /etc/rscriptd/OnConnect ScriptOnDisconnect = /etc/rscriptd/OnDisconnect ps ax | grep stg
       6039 ?        S      0:00 stg-exec  6040 ?        S      0:00 stg-exec  6042 pts/1    S+     0:00 grep --color=auto stg  
       
      Есть подозрения, что старгейзер одну и ту же сеть не может на разные НАС пинать. Кто что скажет?
       
       
×