Dimasik
Пользователь
Карма: -1
Offline
Сообщений: 64
|
|
« : 07 Декабря 2016, 00:49:12 » |
|
Вопрос к Стасу(переавторизируй уже меня в скайпе), но может кто-то тоже знает: вот к примеру меняем мы напрямую в БД какието параметры юзера - разрешаем ему доступ или услугу подключаем или параметры услуги меняем. а надо ли запускать какие-то процедуры в биллинге(которые на перле) для того чтобы эти изменения начали работать? что-то типа перезапуск ядра или команда перечитать настройки? или изменений в БД достаточно а биллинг сам периодически(какой период?) перечитывает данные и засылает обновления в саттелиты?
|
|
|
Записан
|
|
|
|
Tooreagen
|
|
« Ответ #1 : 07 Декабря 2016, 08:32:59 » |
|
Менял услугу на другую, с той же стоимостью. Проблем не было.
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #2 : 07 Декабря 2016, 09:17:18 » |
|
изменения напрямую в БД делал по услугам perl noserver.pl перечитывает их постоянно и все верно работает
|
|
|
Записан
|
|
|
|
Dimasik
Пользователь
Карма: -1
Offline
Сообщений: 64
|
|
« Ответ #3 : 07 Декабря 2016, 16:43:08 » |
|
т.е. достаточно менять данные в БД и биллинг сам все подхватит?
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #4 : 07 Декабря 2016, 17:31:48 » |
|
т.е. достаточно менять данные в БД и биллинг сам все подхватит?
зависит от того что менять
|
|
|
Записан
|
|
|
|
Dimasik
Пользователь
Карма: -1
Offline
Сообщений: 64
|
|
« Ответ #5 : 07 Декабря 2016, 18:43:07 » |
|
т.е. достаточно менять данные в БД и биллинг сам все подхватит?
зависит от того что менять а где почитать про эти зависимости?
|
|
|
Записан
|
|
|
|
Pa4ka
|
|
« Ответ #6 : 08 Декабря 2016, 08:52:50 » |
|
т.е. достаточно менять данные в БД и биллинг сам все подхватит?
зависит от того что менять а где почитать про эти зависимости? ну что именно вас интересует мож подскажут
|
|
|
Записан
|
|
|
|
Dimasik
Пользователь
Карма: -1
Offline
Сообщений: 64
|
|
« Ответ #7 : 08 Декабря 2016, 12:04:47 » |
|
т.е. достаточно менять данные в БД и биллинг сам все подхватит?
зависит от того что менять а где почитать про эти зависимости? ну что именно вас интересует мож подскажут цепочка событий такая: создание нового юзера - добавление тарифа - добавление оплаты - активация доступа
|
|
|
Записан
|
|
|
|
Tooreagen
|
|
« Ответ #8 : 09 Декабря 2016, 10:01:33 » |
|
т.е. достаточно менять данные в БД и биллинг сам все подхватит?
зависит от того что менять а где почитать про эти зависимости? ну что именно вас интересует мож подскажут цепочка событий такая: создание нового юзера - добавление тарифа - добавление оплаты - активация доступа Почему бы это не сделать стандартным способом? Слишком много таблиц затронет данная процедура. Тут я думаю нужно вам код изучать, что и как происходит во время добавления клиента.
|
|
|
Записан
|
|
|
|
pala
|
|
« Ответ #9 : 09 Декабря 2016, 19:52:59 » |
|
Здравствуйте, делали подобный скрипт для перевода людей с Абилса на Nodeny. Используются запросы к базе слейдущего характера: (Фрагмент скрипта касающийся запросов)
######Создаем пользователя $STHnodeny = $DBnodeny->prepare("insert into users (name, passwd, grp, contract, contract_date, block_if_limit, fio, discount) values ('Логин', AES_ENCRYPT('пароль', 'Слово шифрования по дефолту из мануала - hardpass'), 1, 'Номер договора', unix_timestamp('дата контракта'), 1, 'ФИО абонента', 'Скидка')"); $STHnodeny->execute;
#### Ищем его UID по созданому нами логину $STHnodeny = $DBnodeny->prepare("select id from users where name='Логин'"); $STHnodeny->execute;
#Заполняем доп поля
$STHnodeny = $DBnodeny->prepare("insert into data0 (uid, _adr_house, _adr_room, _adr_telefon, и т. д.) values ('Uid абона', 'Адрес дома', 'Квартира', 'Телефон' 'и т.д.' ) $STHnodeny->execute;
####Cоздаем запись такого вида для нашого ЮЗВЕРЯ - необходимо что-бы считался трафик $STHnodeny = $DBnodeny->prepare("INSERT INTO users_trf SET uid=Uid абона"); $STHnodeny->execute;
Переводим ip нашего деятеля-админа от чеево имени будет все это крутится в формат для записи в mysql my $ipaddr = $ENV{'REMOTE_ADDR'}; my $int_ip = unpack('N', pack('C4', split /\./, $ipaddr));
### Пишем события в историю. В нашем случае пишется просто Transfer from Abills system; $STHnodeny = $DBnodeny->prepare("INSERT INTO pays SET category=Категория по которой будет идти обработка билингом. (Можно посмотреть в разделе платежи нажав кнопку Info. Меняется в зависимости от типа записи), mid=Uid абона, time=UNIX_TIMESTAMP(), creator_id=2, reason=1, comment='Transfer from Abills system', creator_ip=$int_ip"); $STHnodeny->execute;
### Вешаем услугу с названием Transfer 100. В нашем случае 100 мб за 0 грн. (Пока менеджеры не сделают коректировки чтоб народ не отваливался от инета) $STHnodeny = $DBnodeny->prepare("INSERT INTO users_services SET uid=Uid абонента, service_id=7, next_service_id=7, tm_start=UNIX_TIMESTAMP(), tm_end=UNIX_TIMESTAMP(), pay_id='0', tags=',inet,speed,'"); $STHnodeny->execute;
Как то так. Косяков не наблюдалось Все работает корректно. Может вам чем-то и пригодится.
По поводу добавления оплат в Mysql вы можете почитать тут хттп_две точки_два слеша app.nodeny-plus.com.ua/docs/develop/calls.pm.html
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #10 : 14 Декабря 2016, 19:28:47 » |
|
Здравствуйте, делали подобный скрипт для перевода людей с Абилса на Nodeny. Используются запросы к базе слейдущего характера: (Фрагмент скрипта касающийся запросов)
А полный скрипт можно? это на перле?
|
|
|
Записан
|
|
|
|
pala
|
|
« Ответ #11 : 18 Декабря 2016, 20:08:04 » |
|
Здравствуйте, делали подобный скрипт для перевода людей с Абилса на Nodeny. Используются запросы к базе слейдущего характера: (Фрагмент скрипта касающийся запросов)
А полный скрипт можно? это на перле? Да написано все на перле. Впринципе могу сбросить. Логика всей работы и сообственно говоря процеса перевода. Есть полностью рабочий сателит на Абилсе, тип авторизации PPPoE. Так же на этом сателите поднят АПАЧ. Есть Влан 10 по которому авторизируются клиенты. И допустим мы решаем сегодня переводить какой-то определенный район Мы загоняем этот 10 влан на тот район и ставим его нативным на клиентов. При попытке зайти на любой http ресурс их редиректит на АПАЧ того же самого сателита. он видит надпись Типо бла бла Перенастройте ваше оборудование на DHCP и инструкции как это делать и кнопка ОЗНАКОМЛЕН. При нажатии на эту кнопку Его автоматом отрубает из Абилса с тэгом "отключено" и создает аккаунт на NoDeny+ И переносит все данные абона. Также ставит ему тарифный План С абонплатой в 0 грн. Что-бы до момента денежных коректировок у него не пропал интернет. Также Настроено логирование. Видно какой абонент нажал на кнопку И все ли хорошо в двух билингах по поводу этого абонента. И как только в лог-файле появились записи, мы сходу меняем влан с 10 на Влан сателита Nodeny. Абонент переведен)) Если Вам данная реализация пойдет то сброшу в ЛС. Или Вы хотите всю базу скопом перевести ?
|
|
« Последнее редактирование: 18 Декабря 2016, 20:46:15 от pala »
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #12 : 19 Декабря 2016, 09:04:13 » |
|
Если Вам данная реализация пойдет то сброшу в ЛС. Или Вы хотите всю базу скопом перевести ?
В идеале перевести всю базу. В абиллисе 127 таблиц, в nodeny - 37, сопоставить бы всё это...
|
|
|
Записан
|
|
|
|
pala
|
|
« Ответ #13 : 19 Декабря 2016, 11:55:48 » |
|
Мы переносим только аккаунт, всю историю по аккаунту переносить не стали. Все старые платежи и история остаются на абиллсе.
|
|
|
Записан
|
|
|
|
sever
Пользователь
Карма: 1
Offline
Сообщений: 82
|
|
« Ответ #14 : 28 Декабря 2016, 13:46:08 » |
|
Как переносил я абонентов из abills в nodeny+ Т.к. в базе abills uid абонентов пересекались с id в базе нодени, то для новых абонентов я выставлял id+5000 Ибо в abills была привязка id к платежам, так 10 абонент в абиллс имеет id 5010 в nodeny. В abills улицы были назначены по группам, в nodeny мне не нужно было чтобы каждая улица записывалась в отдельную группу, поэтому используется функция select_street - выбор улиц из групп abills и сопоставление их с _adr_street в nodeny. Выборка по балансу также есть, но в nodeny его не заносил, не было необходимости. #!/usr/bin/env bash
# Func connect to mysql abills connect_abills () { mysql -D abills -u root -pPASSWORD -Bse "$1" 2>/dev/null }
# Func connect to mysql nodeny connect_nodeny () { mysql -D nodeny -u root -pPASSWORD -Bse "$1" 2>/dev/null }
# For new NoDeny+ clients id is (id + 5000) new_id () { let add=$1+5000 echo $add }
# Replace date in mysql format replace_date () { connect_nodeny "SELECT UNIX_TIMESTAMP('$1')" 2>/dev/null }
# Date now in mysql format time_now () { connect_nodeny "SELECT UNIX_TIMESTAMP(NOW())" 2>/dev/null }
uid_enabled="/SCRIPTS/tmp/uid.enabled.txt" uid_disabled="/SCRIPTS/tmp/uid.disabled.txt"
# Выбор пользователей с активными услугами connect_abills "SELECT users.uid FROM users LEFT JOIN users_pi ON (users.uid = users_pi.uid) WHERE users.disable=0" > $uid_enabled
# Выбор пользователей, которые уже не получают услуги / отключены физически connect_abills "SELECT users.uid FROM users LEFT JOIN users_pi ON (users.uid = users_pi.uid) WHERE users.disable=1" > $uid_disabled
# Func выбор улиц из групп abills и сопостовление их с data0 _adr_street в nodeny select_street () {
STREET=$1
if [ "$STREET" == "Артековская" ]; then nd_adr_street="284" echo "$nd_adr_street"; elif [ "$STREET" == "Гоголя" ]; then nd_adr_street="286" echo "$nd_adr_street"; elif [ "$STREET" == "Исполкомовская" ]; then nd_adr_street="288" echo "$nd_adr_street"; elif [ "$STREET" == "пр. Гагарина" ]; then nd_adr_street="306" echo "$nd_adr_street"; elif [ "$STREET" == "И т.д. для нужного кол-ва улиц" ]; then nd_adr_street="299" echo "$nd_adr_street"; else nd_adr_street="" echo $nd_adr_street; fi
}
# Для всех uid которые разрешены for nodeny_id in $(cat $uid_enabled) do
# Table users nd_id=$(connect_abills "select uid from users where uid=${nodeny_id}") nd_name=$(connect_abills "select id from users where uid=${nodeny_id}") nd_passwd=`connect_abills "select decode(password,'secret_key') from users where uid=${nodeny_id}"` nd_grp="5" # Отдельная группа и её id 5 nd_contract=$(connect_abills "select contract_id from users_pi where uid=${nodeny_id}") nd_contract_date=$(connect_abills "select contract_date from users_pi where uid=${nodeny_id}") nd_new_contract_date="$(replace_date $nd_contract_date)" nd_state="on" nd_fio="$(connect_abills "select fio from users_pi where uid=${nodeny_id}")" nd_balance="$(connect_abills "select deposit from bills where uid=${nodeny_id}")" nd_time_now=$(time_now)
# Table data0 nd_uid="$(connect_abills "select uid from users_pi where uid=${nodeny_id}")" tmpl_adr_street="$(connect_abills "select address_street from users_pi where uid=${nodeny_id}")" nd_adr_house="$(connect_abills "select address_build from users_pi where uid=${nodeny_id}")" nd_adr_room="$(connect_abills "select address_flat from users_pi where uid=${nodeny_id}")" nd_adr_telefon="$(connect_abills "select phone from users_pi where uid=${nodeny_id}")" nd_provider="3" # Отдельный провайдер с id=3 в доп поле nd_new_street=$(select_street $nd_adr_street)
select_street "$tmpl_adr_street"
# Заполняем таблицы в nodeny. connect_nodeny " INSERT into users SET modify_time=UNIX_TIMESTAMP(), id='$(new_id $nd_id)', name='$nd_name', lstate='0', limit_balance='0', contract='$nd_contract', contract_date='$nd_new_contract_date', fio='$nd_fio', cstate='6', grp='5', block_if_limit='1', state='on', cstate_time='$nd_time_now', comment='', passwd=AES_ENCRYPT('$nd_passwd', 'password key - hardpass');
DELETE FROM data0 WHERE uid='$(new_id $nd_id)'; DELETE FROM users_trf WHERE uid='$(new_id $nd_id)'; DELETE FROM auth_log WHERE uid='$(new_id $nd_id)'; DELETE FROM users_services WHERE uid='$(new_id $nd_id)'; DELETE FROM pays WHERE mid='$(new_id $nd_id)';
INSERT INTO users_trf SET uid='$(new_id $nd_id)',traf4='0'; UPDATE users SET name='$(new_id $nd_id)1' WHERE id='$(new_id $nd_id)' LIMIT 1;"
# Заполняем таблицу data0 под свои нужды connect_nodeny "INSERT into data0 (uid, _adr_street, _adr_house, _adr_room, _adr_telefon, _gorod, _adr_place, Sw_port, _olt_numb, _olt_port , _onu_id, _vlan_custom, _master_id,_provide, _staic_ip,_qinq_vlan) VALUES ( '$(new_id $nd_uid)', '$nd_adr_street', '$nd_adr_house', '$nd_adr_room' , '$nd_adr_telefon', '12', '', '', '25', 'newprov','', '610','master', '$nd_provider','','3003');"
# Устанавливаем коментарий что это Transfer from Abills, можно не делать connect_nodeny "INSERT INTO pays (mid,time,creator,creator_id,reason,comment,category,creator_ip) VALUES ( '$(new_id $nd_uid)', $(time_now), 'admin' ,'11', 'Transfer from Abills', 'Transfer from Abills','495','3239309826')"
done
|
|
|
Записан
|
|
|
|
|