Перейти до

Помилка feesharvester


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

Здається, після оновлення 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);

 

Ссылка на сообщение
Поделиться на других сайтах
26 минут назад, 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);

 

 

Логіни з пробілами це сильно ?

Я утримаюсь від коментарів.

  • Haha 1
Ссылка на сообщение
Поделиться на других сайтах
  • 8 months later...
Опубліковано: (відредаговано)

На жаль, наявність пробілу у деяких логінах абонентів заважає все сильніше. Після останнього оновлення UB до 1.4.7 припинив відображатися профіль абонента.

Замість - помилка : "Підозріла помилка - взагалі дивно, що ви її бачите: EMPTY_DATABASE_USERDATA"

В url передається module=userprofile&username=bad%20login

Мабуть (шановним розробникам видніше) через зміни у коді на кшталт

Цитата

Генерація логінів: нова опція генерації PRFXCONTRACT, що генерує логіни вигляду “Префікс+Наступна вільна угода”.

 

Тож міркую над шляхом вирішення проблеми. Планую:

  1. зупинити залежні сервіси,
  2. зробити sql дамп,
  3. в ньому за допомогою sed змінити всі входження логіну з пробілом на логін з підкресленням (тобто в логіні замість пробілу буде підкреслення _ ),
  4. а потім повернути виправленний sql дамп на місце.

Здається, це не порушить цілісність бази даних.

 

Як вважаєте? У ВМ вже затестив, все Ок, але сумніваюсь щодо можливих проблем у майбутньому

 

P.S. Ні, не Ок, є деякі глюки. Буду розбиратися далі.

P.P.S. Треба було кеш очистити.

Відредаговано mac
Ссылка на сообщение
Поделиться на других сайтах
11 часов назад, mac сказав:

Після останнього оновлення UB до 1.4.7 припинив відображатися профіль абонента.

Насправді воно так задумувалось, ще десь з перших релізів. Тільки було зламано тотально, просто по-різному в різних місцях :)

Надалі, всі логіни повинні та будуть мати наступний вигляд. Тобто a-z0-9A-Z_. Крапку з мене вибили правдами та неправдами. Вона теж під питанням та скоріш за все, тимчасово.

 

11 часов назад, mac сказав:

Як вважаєте? У ВМ вже затестив, все Ок, але сумніваюсь щодо можливих проблем у майбутньому

Вольове рішення, яке є єдиним адекватним і яке я всіляко підтримую :)

 

11 часов назад, mac сказав:

Здається, це не порушить цілісність бази даних.

Якщо все зробити акуратно - все має працювати.

 

Питання тільки в тому, скільки тих абонентів є і чи не дешевше їх руками перереєструвати на ходу.
 

  • Like 1
Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, nightfly сказав:

Насправді воно так задумувалось, ще десь з перших релізів. Тільки було зламано тотально, просто по-різному в різних місцях :)

Надалі, всі логіни повинні та будуть мати наступний вигляд. Тобто a-z0-9A-Z_. Крапку з мене вибили правдами та неправдами. Вона теж під питанням та скоріш за все, тимчасово.

 

Вольове рішення, яке є єдиним адекватним і яке я всіляко підтримую :)

 

Якщо все зробити акуратно - все має працювати.

 

Питання тільки в тому, скільки тих абонентів є і чи не дешевше їх руками перереєструвати на ходу.
 

nightfly, дуже вдячний вам !!!
Все зробив, політ нормальний. Команда sed для зміни в дампі, залишу тут для довідки ?

sed -i.bak 's/my[[:blank:]]login/my_login/g' mybase.sql

 

Є ще один цікавий момент, зроблю окремий топік, щоб без плутанини

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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

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

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

    • Від nightfly
      Ubilling 1.5.9 rev 9525 The Perfect Lock
       
      Зміни в структурі БД. alter.ini: нова опція GENERATORS_ENABLED, що вмикає модуль моніторингу генераторів. alter.ini: нова опція TB_GENERATORS_NOTIFY, що вмикає нотифікацію про запущені генератори в області сповіщень. alter.ini: нова опція PON_ONU_UNI_STATUS_COMPACT, що вмикає компактне відображення стану мідних портів на ONU. alter.ini: нова опція PONBOXES_MINIMAP, що дозволяє вмикати та вимикати міні-мапу, при редагування ПОН коробки. Новий модуль Єдинорожий телепорт: дозволяє просто та зручно переносити ваш робочий білінг на новий сервер. Модуль “Реєстрація користувачів”: виправлено проблеми сумісності з PHP 8.5. Модуль “Останні події”: викинуто дубову статку на мороз. Askozia PBX: інтеграція була давно непідтримуваною, викинуто на мороз, разом зі всіма опціями. Модуль Mapon: тепер використовує OmaeURL для взаємодії з API. Модуль “Мапа ONU”: в черговий раз покращення навігації між мапою та іншими модулями системи. Новий модуль Генератори: дозволяє моніторити стан генераторів, базово облікувати мотогодини, пальне та планувати ТО. Модуль ПОНізатор: тепер причини останньої дереєстрації ONU можуть визначатись також по серійнику ONU а не тільки за MAC. Модуль “ПОН Коробки”: покращено продуктивність відмальовки зв'язків коробок на мапах. Глобально: проведено чергову спробу зробити логування подій, що відбуваються навколо користувачів, якимось трішки більш притомним. RemoteAPI: новий виклик generators, що запускає скрипти обробки станів генераторів з автоматичним запуском. RemoteAPI: новий виклик gencontrol, для примусового запуску/зупинки генераторів за допомогою зовнішнього ПЗ. Бібліотека UbillingCache: виправлено проблеми сумісності з PHP 8.5. Бібліотека OmaeURL: виправлено проблеми сумісності з PHP 8.5. Бібліотека UbillingTelegram: вся робота з CURL перенесена до одного методу, покращено сумісність з PHP 8.5. Кабінет користувача: виправлено проблеми сумісності з PHP 8.5. UBinstaller: тепер при встановленні попередньо розгортає та конфігурує SphinxSearch. UBinstaller: Зібрано бінарні пакунки для FreeBSD 14.3 amd64 + PHP 8.5. UBinstaller: Зібрано бінарні пакунки для FreeBSD 15.0 amd64 + PHP 8.5.  
      Повний чейнджлог
      Оновлена демка
       
       

    • Від maxkorn
      Доброго дня!
      На Mikrotik NAS, створив нову підмережу для клієнтів, все наче порядок, тільки помітив, що не створюються шейпери в Queues для клієнтів цієї підмережі.
      В логах Stargazer наступне:
      2025-12-29 09:05:57 - [Ubilling] - OnConnect started for user `xxasdb5rzm`:
      2025-12-29 09:05:57 - [Executer] - Success: Firewall entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Error: Queue entry can't be updated, missing
      2025-12-29 09:05:57 - [Executer] - Success: Queue_tree entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Success: DHCP entry was updated/created
      2025-12-29 09:05:57 - [Executer] - Success: ARP entry was updated/created
      2025-12-29 09:05:57 - [Ubilling] - QC: 6, elapsed time: 0.064 sec.
       
      При чому, на тому ж мікротіку є ще кілька підмереж, в яких все проходить нормально:
       
      2025-12-29 08:30:17 - [Ubilling] - OnConnect started for user `22zxp7u58x`:
      2025-12-29 08:30:17 - [Executer] - Success: Firewall entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: Queue entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: Queue_tree entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: DHCP entry was updated/created
      2025-12-29 08:30:17 - [Executer] - Success: ARP entry was updated/created
      2025-12-29 08:30:17 - [Ubilling] - QC: 6, elapsed time: 0.602 sec.
       
      Налаштування аналогічні, в чому може бути причина?
    • Від ProstoName
      Змінювали мережеву карту. Здається все поправив. Працює. Але є невелика проблема - після внесення коштів (коли абонент був відключений), інет в нього не з'являється. Тільки після заміни тарифу на інший (і потім вернувши тариф) в абонента з'являється інет. 
    • Від ppv
      Собака-посилака перестала відправляти повідомлення. Підкажіть де шукати.
      Можливо таке після пропадання світла, сервер ребутнувся, але я не впевнений. Візуально все працює, крон працює, а повідомлення висять в черзі, смс така ж картина.

    • Від camchatix
      Привіт!
       
      Є багато запитів, щоб інтернет не виключався у північ, а скажімо в день (сигналізації, камери під охороною і тд)
      При щоденній абонплаті - як знімати гроші не у 12:00 у північ, а наприклад у 11 годин дня ?
×
×
  • Створити нове...