Обновления и исправления программы Easyhotspot, год 2020-й

Изменения в веб-интерфейсе («черной админке»)

  • Исправлены ошибки в шаблонах проверки данных (логина и mac-адреса) формы редактирования «клиентов с оплатой по счету» (видимо, занесенные на каком-то из этапов модернизации программы);
  • Исправлена ошибка экспорта в экселевский файл результатов работы модуля «коротких номеров» /«смс-авторизации» (было указано неверное имя таблицы, из которой нужно было считывать сведения о заказах);

  • Исправлена ошибка в процедуре создания тарифного пакета с «учетом по мегабайтам» — тариф создавался, но в базу не прописывались соответствующие атрибуты RADIUS-а. Ошибка происходила только в момент создания, если же тариф впоследствии редактировался, все программа уже делала все как положено. То есть, если такой «дефектный» тариф (который был создан с этой ошибкой — отсутствующими атрибутами RADIUS-а) впоследствии открыть для редактирования и сохранить (даже не внося никаких изменений), то информация в базе о нем «исправлялась» — то есть, все необходимые атрибуты RADIUS-а успешно вписывались в базу;
  • Написана новая функция — сбор информации о посещенных клиентами ресурсах (сайтах). Вся информация об новой функции — в PDF-файле по ссылке: «Easyhotspot и NetFlow«.
  • Обновлена версия библиотеки dompdf, используемой для генерации pdf-файлов (ваучеры/счета/акты и т.п.). Теперь программа использует версию 0.8.5. Во первых, обновленная версия dompdf менее «прожорлива» в плане ресурсов с одной стороны, а с другой — и сами PDF-файлы создаются меньшего размера. Благодаря этим двум обстоятельствам возросло число ваучеров, которые можно «сгенерить за раз» и при этом получить не поврежденный PDF-файл (не пустой, все ваучеры видны без искажений, нет наложений друг на друга и т.д., и т.п.). Например, на слабеньком тестовом VPS, имеющем одно-ядерный процессор с частотой 2ГГц и всего 1 Гб ОЗУ без проблем удалось получить PDF на 500 ваучеров! С другой стороны, данная версия библиотеки dompdf требует, чтобы установленная и используемая в системе версия PHP была не ниже 7.1. С учетом этого обстоятельства изменился список приемлемых версий ОС (на которых может быть установлен). Подробнее об этом — см. ниже в разделе с описанием изменений в скрипте-инсталяторе;
  • Был заменен truetype-шрифт, используемый в PDF-документах;
  • Обновлена html-разметка распечатываемых программой как ваучеров, так и талонов с логином/паролем для «клиентов с оплатой по счету» (вместо «табличной» теперь используется верстка div-ами);
  • В шаблонах ваучеров добавлен код, переключающий размер шрифта в зависимости от длинны (общего числа символов) логина. Если логин «длинный» (более 9 символов), размер шрифта уменьшается, чтобы текст умещался в приемлемых границах;
  • Слегка изменен макет PDF-файла для ваучеров, печатаемых в «малом формате» (это когда без картинки и по 45 штук на странице). Изменение минимальное — для удобства разрезания листа на отдельные ваучеры между ними были добавлены вертикальные границы (горизонтальные присутствовали и ранее). Пример страницы с ваучерами вы можете увидеть, кликнув по ссылке: страница с ваучерами «малого формата»;
  • В сводку сведений о системе у Администратора добавлена информация о текущем состоянии сервера Is running» — сервер работает / «Is down» — сервер остановлен). Как это выглядит, вы можете видеть на приведенной ниже картинке:

Информация о текущем состоянии сервера FreeRADIUS
  • Изменен алгоритм создания логина для «гостевого» ваучера — теперь имя создается из mac-адреса клиента, и добавленного к нему hash-а из «слепленных» вместе NASID хотспота и имени «гостевого» тарифа;
  • Добавлен сброс ключевой фразы (поиска) при переходе между различными меню;
  • Добавлен сброс настроек сортировки списка при переходе между различными меню;
  • Добавлен поиск (сообщений) в меню «служебных » и в меню списков СМС базы Gammu-Smsd;
  • Была написана абсолютно новая функция, позволяющая просмотреть атрибуты RADIUS, назначенные выбранному Тарифу, и при желании добавить к ним свои собственные. Для тех «стандартных» атрибутов, которые используются самой программой, в меню добавлены всплывающие подсказки-описания, а «нестандартные» (добавленные Администратором) выделяются цветом (см. скриншот ниже). Также, программа честно предупреждает, что при «стандартном» редактировании Тарифа все вручную добавленные атрибуты будут сброшены.

Меню просмотра и редактирования атрибутов RADIUS
  • Один из клиентов сообщил об «ошибке»: для ваучеров с лимитом в 1 Гб программа показывала, что некий объем трафика клиент уже израсходовал, а в остатке у него по прежнему оставался все тот же 1 Гб. Причина «ошибки» оказалась «старой как мир», и проще всего она сформулирована в старой шутке о том, что «програмистский килограмм равен 1024 граммам». Проблема заключалась в том, что функция, приводящая показания в программе к «человеческому виду» использовала пороги, кратные 1000, а лимиты в биллинге считаются (и выставляются) кратными 1024. Пришлось исправить значения порогов (тех, по которым происходит переключение показаний между кб/Мб/Гб). Но тем не менее, все равно у показаний осталась некая «слепая зона». И попадают в нее — те самые «лишние» 24 единицы, которые отличают програмистское кило- (мега- или гига-) от «обычной» тысячи. То есть, сейчас все настроено так, что, до тех пор, пока клиент не израсходует свыше 24 Мб, остаток все равно показывает равным 1Гб (при лимите в 1 Гб), а как только этот порог будет превышен — остаток начинает отображаться уже в Мегабайтах:

Пример показаний счетчиков трафика биллинга Easyhotspot
  • В коде администрирования модуля показа видео-рекламы отредактированы шаблоны имен служебных папок, которые создаются на сервере для загрузки и хранения в них роликов с рекламой и их постеров;
  • Была проделана «немалая возня» с CSS «черной админки» Easyhotspot. Она включала в себя — унификацию самого кода CSS, изменения в макете, разметке, взаимном расположении элементов меню, переходе с «табличной» верстки на верстку div-ами, выравнивании всего и вся как по вертикали, так и по горизонтали, центрировании элементов, и т.д и т.п. В итоге меню «черной админки» стали выглядеть более аккуратно и единообразно. Примеры парочки таких обновленных меню приведены ниже:

Пример меню ваучеров с обновленным макетом

Пример меню инкассации (выравнивание элементов горизонтального меню)

  • Была исправлена функция экспорта ваучеров в XML — убраны имена тегов, содержавшие кириллицу и пробелы;
  • Изменена функция генерации гостевых ваучеров так, чтобы потом гостевые ваучеры не попадали в распечатку только что сгенерированных вручную «обычных» ваучеров;
  • Убран лишний код «перевода страницы» при генерации страниц с ваучерами (дававший «лишнюю» пустую страницу в конце PDF-файла с ваучерами);
  • В процедуру отправки биллингом СМС был добавлен «счетчик числа неудачных попыток». Отныне, если одно и то же СМС не получается отправить более 5 раз, биллинг прекращает дальнейшие попытки сделать это. После 5 неудачных попыток такое СМС во первых, дополнительно выделяется в списке визуально, а во вторых, процедура отправки начинает его пропускать. Основная цель «нововведения» — блокировка перманентной отправки ошибочных СМС (например, если клиент указал не правильный / не существующий / не мобильный номер телефона);
  • Изменен код, управляющий порядком (сортировкой) списков в следующих меню — «Ваучеры» / «Постоянные клиенты» / «Гостевая статистика» / «Подключенные к хотспотам пользователи». Визуальных изменений — никаких, правка затронула лишь «вопросы внутренней логики» процедуры;
  • Были переписаны некоторые sql-запросы так, чтобы не использовать встроенную функцию where_in т.н. билдера-sql-запросов фреймворка Codeigniter. Связано это с тем, что при передаче в данную функцию «слишком уж больших» объемов (массивов) данных Codeigniter начинает писать в свой лог ошибки (точнее, не именно «Error-ы» (процедуры вроде как продолжают работать), а предупреждения — «Warning-и») о том, что в функцию preg_match() поступило «ну слишком уж большое» регулярное выражение. С целью устранения этих ошибок, пришлось отказаться от использования DB_query_builder для формирования данных запросов и прописать их в программе «в ручном режиме»;
  • Добавлена процедура полной очистки базы данных. Полностью «сбрасываются» (sql-командой truncate) все таблицы базы данных за исключением учетных записей о персонале. Т.е., аккаунты всех Администраторов, Суперадминистраторов и Кассиров остаются в неприкосновенности, а всё остальное — «вычищается под ноль» полностью;
  • «Не прошло и три года!», как используемая биллингом для построения диаграммы библиотека Google Charts (полагаю) «взяла и устарела». По крайней мере, сервер Google стал как-то «вяло» отдавать картинки с построенными им диаграммами. Попытка разобраться с «самой свежей» реализацией от Google, называющейся все также «Charts», и реализованной на JavaScript, не привела к положительному результату (в режиме «победить за пять минут»). Поэтому был проведен поиск какого-нибудь иного решения, которое можно было бы «вклеить» прямо в биллинг, чтобы Easyhotspot сам рисовал эту картинку (боже! а её вообще хоть кто-нибудь смотрит на самом деле, эту диаграмму-то?!). В результате, был найден код, который решает поставленную задачу, используя функции построения изображений, встроенные непосредственно в сам язык PHP. Как это выглядит, вы можете видеть на приведенной ниже картинке:

Новый вид диаграммы в меню «Статистики»
  • В меню ваучеров добавлена индикация выбранного режима отображения списка — «только активированные» / «только не использовавшиеся» / «все ваучеры» (пример такой индикации выбранного режима с помощью красного подчеркивания соответствующей иконки можно увидеть на скриншоте, показанном ниже);
  • Выбранный режим отображения списка ваучеров («только активированные» / «только не использовавшиеся» / «все ваучеры») также теперь учитывается и при выполнении экспорта их в xls-файл (т.е., теперь в отчет попадают ваучеры только в соответствии с выбранным режимом);
  • Добавлено визуальное выделение в списке ваучеров, «перебравших» отведенное им время или трафик (строка слегка подсвечивается красным, как показано на скриншоте ниже):

Выделение в списке ваучеров «перебравших» отведенное им время или трафик

Приведенные ниже изменения продолжают работу по оптимизации работы системы в случае «слишком большого» объема данных в базе программы, анонсированную в предыдущем дайджесте:

  • Были изменены функции поиска по таблице radacct и экспорта результатов поиска из таблицы radacct. При очень больших объемах базы сам поиск хоть и медленно, но все-таки выполнялся. А вот экспорт результатов при сильно большом числе записей, увы, «падал» (речь идет о «падениях» при числе в несколько десятков тысяч строк и более при тестировании на моем домашнем тестовом сервере, и даже в случае менее 10 тыс. строк — во время проверок на одном из «чахлых» тестовых VPS). Поэтому процедура экспорта была изменена — в зависимости от числа строк, которое должно попасть в отчет, программа теперь самостоятельно МЕНЯЕТ ФОРМАТ вывода данных! При малом числе записей, попадающих в отчет («водораздел» установлен равным 5 тысячам строк), программа, как и раньше, выводит отчет в формате XLS. Если же отчет будет включать больше строк, то, во первых, формат вывода «автоматом» переключится на CSV, а во вторых, «наполнение» файла отчета будет выполняться «пакетно» — частями по эти самые 5 тыс. строк. И лишь после того, как отчет будет сформирован полностью (в него будут вписаны все попавшие в отчет строки, сколько бы их там ни было), программа выдаст его Администратору;
  • Аналогичный описанному в предыдущем абзаце подход был задействован и для функции экспорта списка ваучеров из программы — при повышенном их числе вывод осуществляется в формате CSV (вместо XLS), который гораздо менее «прожорлив» в отношении ресурсов сервера;
  • Была «сымитирована» ситуация «очень большого» количества юзеров, подключенных «онлайн» одновременно. В результате код процедуры вывода меню «Подключены к интернету» пришлось переписывать (оптимизировать), чтобы снижать время подготовки отчетов. То же самое — и по поводу меню «Роутеры, к которым подключены клиенты», отображающего работающие роутеры и число подключенных к ним в данный момент пользователей (задержку формирования отчета создавал как раз подсчет «онлайн-юзеров», изменение процедуры снизило ее на порядок);
  • Изменена работа с «зависшими» сеансами. Раньше эту процедуру выполнял отдельный скрипт, написанный на perl, и единственной «разумной» причиной такого метода была необходимость выполнения им еще и функции принудительного отключения ваучеров, номинал которых установлен в Байтах, и «перебравших» данный лимит (такое могло происходить на старых -ах, не знавших radius-атрибутов из ряда ChilliSpot-Max-…..-Gigawords). Недостаток этого решения заключался в том, что данный скрипт мог «подраться за ресурсы» со «Скриптом регулярных заданий» самого биллинга (запускающемуся cron-ом одновременно с ним). И в таком случае они на пару «разгоняли» загрузку всего сервера «до недостижимых высот»! Теперь же функция закрытия «зависших» сеансов возложена непосредственно на сам биллинг (включена в число задач, выполняемых «Скриптом регулярных заданий»), а старому perl-скрипту была оставлена всего лишь одна задача — то самое принудительное отключение «перебравших трафик» юзеров;

Изменения и исправления в странице авторизации

  • Откорректирована реакция на нажатие кнопки Enter в форме для ввода телефона для СМС-авторизации;
  • Устранено появление текста «undefined» в некоторых popup-сообщениях об ошибках;
  • Изменен (а также, добавлен недостающий) код, относящийся к функции пост-активации ваучеров по СМС;

Обновления и исправления модулей

  • Внесен ряд изменений в модуль «ЕДИНАЯ КАССА»: во первых, модулю достался код, «красиво» форматирующий номер телефона, который вводит клиент. Клиент вводит только цифры, а уже сам скрипт преобразует телефон вот в такой «красивый вид»: +38 (066) 583-6592. Также, был добавлен файл текстовых сообщений на украинском языке (модуль теперь поддерживает три языка интерфейса — английский, украинский и русский). Далее — сообщения об ошибках теперь выводятся popup-окнами, а не функцией alert языка javascript (выглядит и симпатичней, и «более единообразно» в разных браузерах). Кроме того, были внесены небольшие «косметические» изменения в CSS и сами скрипты, был переписан скрипт-инсталятор модуля, благодаря чему избавился от возможных ошибок, в случае запуска установки из папки с пробелами в имени, и наконец, была обновлена и сама инструкция к платежному модулю «ЕДИНАЯ КАССА»;

Полностью переписан модуль активации ваучеров по СМС.

  • Во первых, вся процедура теперь «вшита» непосредственно в саму страницу авторизации (в её меню);
  • Благодаря этому была «упрощена жизнь» для клиентов — после успешного ввода кода авторизации они тут же попадают в интернет (им не нужно вводить логин/пароль повторно, страница это сделает сама);
  • Ну и последнее — теперь это не отдельный модуль, а процедура, включенная в базовый функционал биллинга (нет нужды покупать отдельный модуль, функцию достаточно просто включить и настроить);

И теперь — несколько скриншотов процесса активации ваучера по СМС.

1. Клиент ранее ввел данные ваучера, который еще не был активирован, и программа просит его сообщить свой номер телефона:

Просьба ввести номер телефона для отправки кода меню ваучеров с обновленным макетом

2. Клиент ввел свой телефон, программа уже отправила ему СМС и теперь просит его ввести полученный код активации:

Пример меню инкассации (выравнивание элементов горизонтального меню)

А подобное сообщение об ошибке клиент получит, если введет не правильный код активации:

Сообщение о неверно введенном коде активации

Обновления и исправления скрипта-инсталятора

  • В число поддерживаемых скриптом-инсталятором биллинга Easyhotspot включен новый релиз ОС — 20.04 LTS (Focal Fossa). Примечательно, что скрипт-инсталятор был готов устанавливать Easyhotspot на указанный дистрибутив в первый же день его выхода!
  • В связи с обновлением версии библиотеки dompdf и, как следствие, изменившимися требованиями к версиям П/О на сервере, которые повлекли за собой и изменение списка поддерживаемых ОС, был внесен ряд изменений и в скрипт-инсталятор. Во первых, ОС Ubuntu 14.04 LTS и Debian 8.x были исключены из числа поддерживаемых — теперь при попытке запуска инсталятора на этих ОС будет выводиться сообщение об ошибке, и будет прекращаться. С другой стороны, для ОС Ubuntu 16.04 LTS и Debian 9.x в скрипт добавлены команды, подключающие «альтернативные» репозитории с обновленными версиями пакетов PHP (с ppa:ondrej для ОС Ubuntu или же репозиторий с сайта packages.sury.org в случае ОС Debian) и обновляющие их. Причем, установка обновленных версий пакетов PHP осуществляется также и в случае проведения процедуры обновления уже установленного на сервер биллинга Easyhotspot (чтобы обновленная версия программы смогла работать и на предыдущей инсталляции, лишь бы та не была установлена на «не поддерживаемую» версию ОС);
  • В скрипт-инсталятор добавлен код, который при обновлении программы переносит в х FreeRADIUS-а параметр про автоматическую «привязку» ваучера к mac-адресу;
  • Исправлен автозапуск FreeRADIUS при старте системы (переведен на использование команды systemctl);
  • Обновлен файл ipup.sh, использующийся в тех случаях, когда Coova-Chilli устанавливается локально на сервер Easyhotspot (т.е., когда сервер выступает в качестве а локального хотспота). В файл добавлены команды, меняющие режимы работы сетевого адаптера (платы), к которому подключена локальная сеть хотспота. Это позволяет избежать иногда возникающей «проблемы аномально низкой скорости upload-а» (т.е., от клиентов а интернет, описанной в данной теме форума)
  • Начата адаптация Easyhotspot к будущей версии релиза ОС Debian — 11-й, которая называется «bullseye» и которая на данном этапе сама еще находится лишь в стадии тестирования:

Easyhotspot на дистрибутиве Debian 11 (bullseye)

Изменения в документации

Обновлена инструкция «Программа управления хотспотом — Easyhotspot, Руководство по эксплуатации». В инструкцию добавлены разделы о следующих функциях, которые были недавно добавлены в программу:

  • В инструкцию добавлен раздел, посвященный настройкам «Функции отправки служебных СМС», а именно — «Подробнее о параметрах, используемых разными агрегаторами», описывающий какие данные и куда нужно вписывать для работы с различными агрегаторами;
  • В свете того, что была изменена процедура инкассации выручки от продажи ваучеров, переписаны и соответствующие разделы Руководства;
  • Перепроверены (и в случае необходимости исправлены) ссылки как внутренние, так и внешние.
  • В инструкцию добавлен раздел, посвященный настройкам «Функции отправки служебных СМС», а именно — «Подробнее о параметрах, используемых разными агрегаторами», описывающий какие данные и куда нужно вписывать для работы с различными агрегаторами;
  • В свете того, что была изменена процедура инкассации выручки от продажи ваучеров, переписаны и соответствующие разделы Руководства;
  • Просмотр и редактирование атрибутов RADIUS;
  • Полная очистка базы данных программы;

Обновленная инструкция доступна по ссылке:

«Программа управления Wi-Fi хотспотом — Easyhotspot, Руководство по эксплуатации»

Обновлена инструкция «Индивидуализация вашего хотспота». В инструкцию добавлены разделы о следующих функциях, которые были недавно добавлены в программу:

Обновленная инструкция доступна по ссылке:

«Индивидуализация вашего хотспота»

На Youtube выложены новые видеоролики

Процедура обслуживания клиентов по ваучерам
Процедура обслуживания «Клиентов с оплатой по счету»
Активация ваучеров по СМС


Просмотреть все эти изменения в действии можно на сайте демо-версии модифицированной программы Easyhotspot (логин/пароль Кассира: vcool/vcool123, логин/пароль Администратора: admin/admin123)

На всякий случай, напоминаю, что все эти изменения относятся именно к модифицированной версии программы Easyhotspot, которую можно приобрести на странице онлайн-продажи.

Список предыдущих анонсов новостей программы Easyhotspot доступен тут.

Советую также прочесть следующие записи блога:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *