Биллинговая система Nodeny
21 Мая 2024, 18:21:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
  Начало Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 [3] 4 5 6
31  Главная категория / Nodeny Plus / Re: Nodeny plus + Debain + Accel-ppp : 28 Февраля 2017, 01:31:46
Ребят а кто accel использует на одном сервере для pppoe и ipoe одновременно? Подскажите как freeradius правильно настроить под разные процедуры?

Одни и теже процедуры работают для авторизации и ррррое и дшсп на тестовом стенде.
Только логин клиента это например интерфейс с которого пришёл запрос, пароль он же при схеме влан на клиента.
К примеру  eth.230  логин.
В аццеле
username=ifname
password=username

Я думаю как бы организовать чтобы клиент и в билинг заходил в статистику с нормальными логин/пароль.
А авторизация проходила под другой связкой логин/пароль (eth.230/eth.230)
32  Главная категория / Nodeny Plus / Re: Nodeny plus + Debain + Accel-ppp : 08 Февраля 2017, 16:35:34
С каким периодом идет radius-accounting? Помониторь учетку абона, покликай по авторизованному айпишнику и улови примерно максимальное значение параметра "Обновление авт" в секундах. Если там будет больше двух минут - скорее всего период аккаунтинга настроен неверно, ip освобождается и при последующем аккаунтинге выдается новый

Раз в 60/сек

в процедуре radreply
SELECT NULL,login,'Acct-Interim-Interval','60','=';

как вариант пофиксить - ребут билинга и наса одновременно.
Но понять бы, почему он так себя ведёт.
33  Главная категория / Nodeny Plus / Re: Nodeny plus + Debain + Accel-ppp : 08 Февраля 2017, 16:08:30

Выявился глюк взаимодейтсвия nodeny - accel-ppp в режиме рррое
Абонент прошедший авторизацию получил из динамического пула адрес
Так вот адрес, выделенный абоненту в билинге, не соответствует адресу, выданным accel

к примеру  в билинге вижу, login_A динамически выделен адрес 1.х.х.27,   mac fc:f5:28:48:b5:61

# accel-cmd show sessions | grep "1.x.x.27"
 ppp465 | login_D   | 14:d6:4d:2d:c5:6b | 1.x.x.27  |            | pppoe |      | active | 1.19:25:05

# accel-cmd show sessions | grep "fc:f5:28:48:b5:61"
 ppp441 | login_A   | fc:f5:28:48:b5:61 | 1.x.x.4   |            | pppoe |      | active | 2.03:17:25
34  Главная категория / Nodeny Plus / Re: Field 'name' doesn't have a default value : 26 Января 2017, 15:48:53
после пересохранения доп полей, на двух из них вылезла ошибка SQL Error. В дебаге:

Specified key was too long; max key length is 767 bytes

{
  'param' => [],
  'sql' => 'ALTER TABLE `data0` CHANGE `_komentariy2` `_komentariy2` VARCHAR(1024) NOT NULL DEFAULT \'\''
};
 
 ALTER TABLE `data0` CHANGE `_komentariy2` `_komentariy2` VARCHAR(1024) NOT NULL DEFAULT ''

Для начала
show create table data0;
35  Главная категория / Nodeny Plus / Re: radius sql ошибка : 26 Января 2017, 15:39:58
Код:
[quote author=Efendy link=topic=2308.msg30719#msg30719 date=1485416444]
Я уже писал, что проблема в функции get_ip - mysql не оптимизированно выполняет sql, надо помочь ему:


Спасибо, fixed.
36  Главная категория / Nodeny Plus / Re: radius sql ошибка : 26 Января 2017, 09:08:03
Периодически в логе радиуса вижу

Код:
Thu Jan 26 09:02:04 2017 : Error: rlm_sql_mysql: MySQL error 'Deadlock found when trying to get lock; try restarting transaction'
Thu Jan 26 09:02:04 2017 : Error: [sql] Couldn't update SQL accounting ALIVE record - Deadlock found when trying to get lock; try restarting transaction
Thu Jan 26 09:02:04 2017 : Error: rlm_sql_mysql: Cannot store result
Thu Jan 26 09:02:04 2017 : Error: rlm_sql_mysql: MySQL error 'Deadlock found when trying to get lock; try restarting transaction'
Thu Jan 26 09:02:04 2017 : Error: [sql] Couldn't update SQL accounting ALIVE record - Deadlock found when trying to get lock; try restarting transaction
Thu Jan 26 09:02:04 2017 : Error: rlm_sql_mysql: Cannot store result
Thu Jan 26 09:02:04 2017 : Error: rlm_sql_mysql: MySQL error 'Deadlock found when trying to get lock; try restarting transaction'
37  Главная категория / Модули NodenyPlus / Re: Модуль состояние NAS : 11 Января 2017, 16:53:26
 Улыбающийся
38  Главная категория / Модули NodenyPlus / Re: Модуль состояние NAS : 06 Января 2017, 09:32:26
Zabbix
+1 c уведомлением непосредственно в телеграм, если лень смотреть )
39  Главная категория / Модули NodenyPlus / Re: Платежная система Fondy : 04 Января 2017, 18:30:21
В rev 436 я так понял настройки в файле прописывать, а не админке? Тк после обновления пишет "fondy plugin is not configured"

Возможно слетели настройки модуля fondy
посмотри настройки id и ключ в настройке модуля.
40  Главная категория / Разработка / Re: Заказ на модуль ПриватБанк : 04 Января 2017, 09:31:06
Ситуация на этот год изменилась?
Или всё так же.. через жо с их апи??
41  Главная категория / Nodeny Plus / Re: После установки Nodeny+ есть пару вопросов. : 02 Января 2017, 14:13:26
При добавлении динамического пула пишет
"Ошибка. Проверьте правильность ввода ip, также, что конечный номер > начального"

Начальный ip 10.20.0.2
Конечный ip либо количество 10.20.0.50

C другими адресами также..

update
Решилось пересозданием функции change_ippool в mysql
42  Главная категория / Nodeny Plus / Re: Вопрос по разработке доп.плюшек.... : 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
43  Главная категория / Nodeny Plus / Re: Mikrotok ipoe + dhcp + radius : 28 Декабря 2016, 13:05:47
И как у Вас в таком случае в учетке абонента указан не мак, а vlan его?
Мне вообще привязка по маку не нужна.
У меня есть сущность которая отделяет уникального абонента от других - Vlan свой на каждого абонента.
44  Главная категория / Модули NodenyPlus / Re: Платежная система Fondy : 28 Декабря 2016, 12:02:26
Давай сначала заключишь, а потом сделаем. А то будет как с приложением для андроида - желающих было достаточно, но как сделал - все попрятались
По андроиду - следующий этап, ещё будут обращения.. Пока не дошёл.
И для платёжных терминалов я так понимаю мне тоже нужно это будет.
Хорошо, уладим сначало с fondy.ua если резон есть, значит сделаем.
45  Главная категория / Модули NodenyPlus / Re: Платежная система Fondy : 28 Декабря 2016, 11:52:12
Мне надо модифицировать модуль. Ты это теоретически спрашиваешь или уже заключил договор по всем трем мерчам?

По мерчам ещё не заключил. Поставил для теста пока. Но будем использовать.
В системе используется 3 разные счёта. Счета клиентов должны отличаться по полю "Провайдер"
Сейчас клиент оплачивает в банке, обязательно указывая номер договора (треть абонентов забывает это сделать) бухглатерия разносит всё это дело руками.. и не дай бог если клиент заплатит не на тот счёт или не укажет номер договора...
Поле Провайдер хранится в таблице data0  - `_provider` varchar(255) NOT NULL DEFAULT ''
Страниц: 1 2 [3] 4 5 6
Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!