Перейти до

Релизы Ubilling


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

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 выборок , но по аналогии можно сделать шаблоны.

Ссылка на сообщение
Поделиться на других сайтах
  • Відповіді 1,2k
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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

Преувеличиваем? Ничего особенного и нового я не сделал

Ни один единорог не пострадал? =)

Posted Images

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

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

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

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

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

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

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

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

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

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

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

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

 

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

........

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

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

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

 

 

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

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

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

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

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

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

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

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

 

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

 

 

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

 

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

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

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

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

 

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

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

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

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

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)

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

2 AoW

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

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

 

 

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

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

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

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

 

 

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

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

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

 

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

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

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

 

 

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

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

 

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

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

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

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

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

 

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

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

 

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

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

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

 

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

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

 

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

 

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

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

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

 

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

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

В скриптах для 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"

 

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

Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.
  • Зараз на сторінці   0 користувачів

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

  • Схожий контент

    • Від ppv
      Проглянув FAQ і Ubilling Wiki. Зацікавило питання чи є в Ubilling якась реалізація reCAPTCHA, чи потрібно додавати руцями, (для прикладу для форми подачі заявок чи для кабінету користувача)?
       
    • Від sanyadnepr
      Приветствую всех.
      Подскажите пожалуйста где копнуть и нет ли проблемы со стороны протокола взаимодействия сити24 или возможно не учтена необходимая проверка в модуле сити24 в Ubilling, пока писал понял что похоже в проверке payID, но это не точно.  
      Недавно обнаружилось с сити24 начали прилетать дубликаты платежей, в целом платежей мало, два одинаковых запроса Pay с одинаковым transactionID и payID в одну секунду одному платежному ID при этом биллинг "думает" примерно чуть больше минуты и отвечает одним ответом <result>0</result>, сити24 утверждает что ответ они не получили и по протоколу дальше повторяет запросы дублем, биллинг ответ и так по кругу, сити24 спрашивает каким образом с одинаковым payID от сити24 билл продолжает обрабатывать запросы и пополнять абоненту счет раз в 5 минут примерно, на одну и туже сумму, ведь этот payID уже был обработан предполагают сити24 согласно протоколу.
      Конечно есть вопрос к сити24 зачем они дублем присылают два запроса, но они отвечают что эта ситуация учтена в протоколе и проблема на стороне биллинга, потому что он пополняет счет по уже обработанному одинаковому payID.
      При этом transactionID в дублях одинаковый, но с каждым новым дублем разный.
      Если зафаерволить запросы от сити24, но оставить возможность отвечать то после блокировки билл отправляет 2-3 минуты 6 ответов <account>0001</account>  <result>0</result>.
      После снятия блокировки, дубли и платежи нескольких проблемных абонентов прилетают так же по кругу, при этом и с некоторыми новыми пополнениями происходит аналогичная ситуация.
      В openpayz в платежах transactionID и не видно payID.
    • Від nightfly
      Ubilling 1.4.3 rev 9058 The Bladewood Grove
       
      Зміни в структурі БД. alter.ini: нові опції OPHANIMFLOW_ENABLED та OPHANIMFLOW_URLS котрі вмикають та керують інтеграцією з OphanimFlow. alter:ini: нова опція PHOTOSTORAGE_POSTPROCESSING, що вмикає післяобробку зображень при завантаженні в Сховище зображень. alter:ini: нова опція PHOTOSTORAGE_WATERMARK, що вмикає розміщення вотермарки на всіх зображеннях, що завантажуються. alter:ini: нова опція PHOTOSTORAGE_RECOMPRESS, що вмикає зміну компрессії завантажених зображень. alter:ini: нова опція PHOTOSTORAGE_AUTORESIZE, що вмикає автоматичне та лагідне масштабування зображень конячих розмірів. alter:ini: нова опція PHOTOSTORAGE_DRAWIMGINFO, що вмикає вдруковування в зображення відлагоджувальної інформації. alter.ini: нова опція ONDEMAND_CHARTS, що вмикає відкладене завантаження графіків завантаження користувацької смуги. userstats.ini: нова опція OPHANIM_ENABLED, що вмикає інтеграцію OphanimFlow в кабінеті користувача. Модуль Заздрість: тепер авторизаційні дані пристроїв, не відображаються в списку пристроїв. Модуль “Заздрість”: при створенні та редагуванні пристроїв, для полів “пароль” та “enable пароль” тепер використовуються інпути паролів. Модуль “Заздрість”: заздрісним пристроям додано нове поле “Порт”. Тепер в скриптах можна використовувати, відповідний макрос {PORT}. Модуль “Статистика трафіку користувача”: проведено радикальний рефакторинг. Модуль “Статистика трафіку користувача”: додано опційну можливість, відображення трафіку отриманого з OphanimFlow. Модуль “Статистика трафіку користувача”: виправлено проблему невірного відображення залишку коштів на кінець місяця, при використанні Ішимури. Модуль “Статистика трафіку користувача”: додано можливість відображення графіків за останню годину з OphanimFlow. Модуль “Користувачі”: додано опційну можливість, відображення трафіку отриманого з OphanimFlow. Модуль “Сховище зображень”: тепер додатково перевіряє завантажувані зображення на тему їх валідності. Модуль “Фінансові операції”: виправлено відображення суми платежів користувача. Remote API: новий виклик ophanimtraff, який просто бере і синхронізує локальну БД з віддаленими джерелами OphanimFlow. Remote API: виклик userbynum тепер також опційно містить поле з “Платіжним ID” користувача. Глобально: у всіх полях вводу паролів, окрім форми входу, тепер відображається елемент керування “показати/приховати” пароль. Кабінет користувача: в модулі “Трафік” додано опційну можливість, відображення трафіку отриманого з OphanimFlow. Кабінет користувача: в модулі “Трафік” виправлено проблему невірного відображення залишку коштів на кінець місяця, при використанні Ішимури. Кабінет користувача: в модулі “Відеоспостереження” для NVR WolfRecorder замінено розділювач попередньо заповнених даних авторизації. OpenPayz: додано frontend portmonemulti, для отримання платежів від різних контрагентів. Інформацію по контрагентам бере з біллінгу, також використовую розширену інформацію контрагента. Платіжна система в контрагенті мусить бути створена, як PORTMONE 1984tech: додано функціонал генерації RPZ для isc-bind, спасибі @misterromanbush  
      Повний чейнджлог
      Оновлена демка
       

    • Від mac
      Здається, після оновлення PHP 7.4 до PHP 8.2 feesharvester припинив працювати:
       
      /usr/local/bin/curl "http://127.0.0.1/billing/?module=remoteapi&key={SERIAL}&action=feesharvester" <br /> <b>Fatal error</b>: Uncaught TypeError: Unsupported operand types: string - string in {UBPATH}/billing/api/libs/api.fundsflow.php:570 Stack trace: #0 {UBPATH}/billing/modules/remoteapi/feesharvester.php(22): FundsFlow-&gt;harvestFees('2024-01') ...  
      Невеличке розслідування врешті з'ясувало, що це через наявність пробілу у деяких логінах абонентів. Як так сталося? Тому що інколи був неуважно додан трейлінг пробіл до номеру будинка і цей пробіл потрапив до логіну абоненту. Логін абоненту неможливо змінити ніяким чином штатними засобами. Я не розглядаю створення нового абонента для усунення помілки.

      Був обран такий шлях вирішення проблеми. Заміну функції php explode() знайшов у мережі. Мабуть це станеться в нагоді:

       
      diff api.fundsflow.php.bak api.fundsflow.php.new 559c559 < $eachfee = explode(' ', $eachline); --- > $eachfee = preg_split("~(?<!\\\\)(?:\\\\{2})*'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'(*SKIP)(*F)|\s+~s" , $eachline);  
    • Від Zend
      Продам сабж.
      2 контроллера CA07336-C001, в каждом по одном интерфейсном модуле CA07336-C009 (2 x 1Gbps iSCSI)
      HDD: 24 x 900GB SAS 10K
      Исправен.
      С ним могу продать шкафчик того же вендора.
       
      Стоимость - $4000, торг
       


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