Новости — апрель 2020
С момента прошлой публикации в программе произошли следующие изменения:
- Изменения в веб-интерфейсе Easyhotspot («черной админке»);
- Обновления и изменения страницы авторизации
- Обновления и исправления модулей
- Обновления и исправления скрипта-инсталятора
- Изменения в документации
Изменения в веб-интерфейсе Easyhotspot («черной админке»)
- Была исправлена функция экспорта ваучеров в 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, и единственной «разумной» причиной такого метода была необходимость выполнения им еще и функции принудительного отключения ваучеров, номинал которых установлен в Байтах, и «перебравших» данный лимит (такое могло происходить на старых chillispot-ах, не знавших radius-атрибутов из ряда ChilliSpot-Max-.....-Gigawords). Недостаток этого решения заключался в том, что данный скрипт мог «подраться за ресурсы» со «Скриптом регулярных заданий» самого биллинга (запускающемуся cron-ом одновременно с ним). И в таком случае они на пару «разгоняли» загрузку всего сервера «до недостижимых высот»! Теперь же функция закрытия «зависших» сеансов возложена непосредственно на сам биллинг (включена в число задач, выполняемых «Скриптом регулярных заданий»), а старому perl-скрипту была оставлена всего лишь одна задача — то самое принудительное отключение «перебравших трафик» юзеров;
Изменения и исправления в странице авторизации
- Откорректирована реакция на нажатие кнопки Enter в форме для ввода телефона для СМС-авторизации;
- Устранено появление текста «undefined» в некоторых popup-сообщениях об ошибках;
Обновления и исправления модулей
- Внесен ряд изменений в модуль «ЕДИНАЯ КАССА»: во первых, модулю достался код, «красиво» форматирующий номер телефона, который вводит клиент. Клиент вводит только цифры, а уже сам скрипт преобразует телефон вот в такой «красивый вид»: +38 (066) 583-6592. Также, был добавлен файл текстовых сообщений на украинском языке (модуль теперь поддерживает три языка интерфейса — английский, украинский и русский). Далее — сообщения об ошибках теперь выводятся popup-окнами, а не функцией alert языка javascript (выглядит и симпатичней, и «более единообразно» в разных браузерах). Кроме того, были внесены небольшие «косметические» изменения в CSS и сами скрипты, был переписан скрипт-инсталятор модуля, благодаря чему избавился от возможных ошибок, в случае запуска установки из папки с пробелами в имени, и наконец, была обновлена и сама инструкция к платежному модулю «ЕДИНАЯ КАССА»;
Обновления и исправления скрипта-инсталятора
- В число поддерживаемых скриптом-инсталятором биллинга Easyhotspot включен новый релиз ОС Ubuntu — 20.04 LTS (Focal Fossa). Примечательно, что скрипт-инсталятор был готов устанавливать Easyhotspot на указанный дистрибутив в первый же день его выхода!
Изменения в документации
Обновлена инструкция «Программа управления Wi-Fi хотспотом - Easyhotspot, Руководство по эксплуатации»:
- В инструкцию добавлен раздел, посвященный настройкам «Функции отправки служебных СМС», а именно — «Подробнее о параметрах, используемых разными агрегаторами», описывающий какие данные и куда нужно вписывать для работы с различными агрегаторами;
- В свете того, что была изменена процедура инкассации выручки от продажи ваучеров, переписаны и соответствующие разделы Руководства;
Обновленная инструкция доступна по ссылке:
«Программа управления Wi-Fi хотспотом - Easyhotspot, Руководство по эксплуатации»
Обновлена инструкция «Индивидуализация вашего хотспота»:
- Добавлена информация о том, как выбрать формат печати ваучеров — «большой» PDF (стандартный) / «маленький» PDF / чек для «термопринтера» / XML-файл;
- Добавлена информация о настройке параметра, меняющего местами закладки «Пароль» и «Бесплатно» (что удобно при использовании СМС-авторизации);
Обновленная инструкция доступна по ссылке:
«Индивидуализация вашего хотспота»
Просмотреть все эти изменения в действии можно на сайте демо-версии модифицированной программы Easyhotspot (логин/пароль Кассира: vcool/vcool123, логин/пароль Администратора: admin/admin123)
На всякий случай, напоминаю, что все эти изменения относятся именно к модифицированной версии программы Easyhotspot, которую можно приобрести на странице онлайн-продажи.
Список предыдущих анонсов новостей программы Easyhotspot доступен тут.