Новости Easyhotspot — июль 2017

С момента прошлой публикации «много воды утекло»! И так как новостных сообщений не было давно, могло создаться впечатление, что «бобик сдох» (развитие программы прекращено). На самом деле в программе произошли глобальные и важные изменения, которые просто отняли много времени! Итак, вот список изменений, произошедших в программе:

  • Веб-интерфейс перенесен с фреймворка Codeigniter версии 1.5.4 на версию 3.1.2
  • В веб-интерфейс биллинга Easyhotspot внесен ряд изменений, дополнений и улучшений;
  • Обновлена страница авторизации
  • Обновлен модуль СМС-авторизации
  • Обновления платежных модулей
  • В скрипт-инсталятор внесен ряд изменений
  • Изменения и исправления в прочих скриптах
  • Изменения в документации

Веб-интерфейс Easyhotspot перенесен с фреймворка Codeigniter версии 1.5.4 на версию 3.1.2

Фактически, выпущенный «давным-давно» Codeigniter версии 1.5.4 с каждой новой версией PHP требовал все большего количества «костылей», замен «устаревших» и отмененных функций, подавления каких-то «предупреждений», «извещений» и т.п. «Масло в огонь подливал» еще и сервер баз данных MySQL, который тоже (с версии 5.7.х) начал более строго относится к формируемым запросам в базу. Поэтому, в первую очередь данное обновление является своеобразным «заделом на будущее», т.к. решает проблему работы биллинга под управлением последних версий PHP, MySQL и т.д., которые уже вовсю используются в новых версиях дистрибутивов Linux. Предполагаю, что в дальнейшем «ареал» использования новых версий данного ПО будет только расширяться. Поэтому, фреймворк и был заменен новой версией. Использование новой версии фреймворка повлекло за собой использование и новой системы авторизации в биллинг (входа в саму «черную админку» EasyHotspot). Был выбран скрипт Ion Auth, который в свою очередь, наложил «ограничение снизу» на версию PHP, используемую сервером биллинга. Теперь версия PHP на сервере биллинга должна быть не ниже 5.3.1.

По той же самой причине (корректная работа с PHP версии 7.0) была заменена библиотека, используемая для рисования «круговой диаграммы» на странице статистики ваучеров. Вместо «старой» Google Graph (про которую сам Google написал у себя на странице, что она «более не доступна») теперь используется «новая» Google Charts. По факту — делают они практически одно и то же, рисуют диаграмму тоже практически одинаковую (3D это я просто включил «прикола ради»), НО сам код библиотеки, использованной для взаимодействия с сервисами Google написан в соответствии с новыми «пожеланиями/правилами» PHP, благодаря чему у PHP версии 7.0 он уже не вызывает warning-ов об использовании «устаревших» методов.

На домашней странице Администратора в список информации о системе была добавлена информация и об используемых версиях ПО (чтобы вы сразу могли видеть, новая у вас программа или «не очень» ☺):

В веб-интерфейс биллинга Easyhotspot внесен ряд улучшений, дополнений и исправлений:

  • К уже имевшимся двум вариантам языка интерфейса (русскому и английскому) была добавлена поддержка еще одного — украинского. Кроме того — была убрана «жесткая» (фиксированная) настройка языка интерфейса «черной админки». Выбор языка теперь осуществляется по «отзыву» браузера пользователя (точнее — у ВСЕХ браузеров есть такой параметр в настройках, как «предпочитаемый язык просмотра страниц в интернете»). В итоге, если ваш браузер сообщает, что вы «предпочитаете» использовать русский язык — то Easyhotspot выведет вам интерфейс на русском языке. Если «предпочитаете» использовать украинский язык — получите Easyhotspot на украинском. Во всех остальных случаях — получите английский язык интерфейса. Данный алгоритм мог бы снижать удобство пользования для тех пользователей, чьи языки не попадают в число вышеперечисленных (и кому программа подставляла бы английский «по умолчанию»), но при этом сами пользователи предпочли бы английскому другой (например, русский). Чтобы этого не происходило, в программу были добавлены кнопки принудительного выбора языка. Благодаря им пользователь сможет сам ПРИНУДИТЕЛЬНО указать желаемый язык интерфейса «черной админки» (из числа трех, приведенных выше). Его выбор будет сохранен в cookie, и впоследствии интерфейс Easyhotspot будет выводиться ему на выбранном языке, а не на устанавливаемом автоматически.
  • Добавлена функция поиска по таблице Raddact (сведения обо всех сеансах всех активных пользователей). Функция полезна тем, что позволяет искать информацию о сеансах клиентов и ваучеров, еще не попавшую в архив программы. Напоминаю, что в архив эти данные попадают лишь после выполнения любого из следующих действий: удаления аккаунта клиента (с оплатой по счетам), выписки счета клиенту (с оплатой по счетам) или удаления ваучера. По этому, поиск по архиву раньше ничего не показывал об аккаунтах (как ваучеров, так и клиентов с оплатой по счету), которые все еще активны на момент поиска;
  • Реализован ЕДИНЫЙ (да еще и с локализацией единиц измерения!) набор скоростей, использующийся в программе повсеместно (в том смысле, что он один используется «везде, где нужно»). В первую очередь это удобно тем, что теперь при желании нет нужды настраивать кучу этих наборов скоростей «поштучно» в самых разных местах (файлах) программы, а достаточно откорректировать их в одном месте, и изменения тут же отразятся везде;
  • Изменен макет (внутренняя html-разметка) страницы, используемой при печати «пачки» ваучеров. Благодаря этому прекратились хаотичные смещения некоторых отдельных ваучеров относительно остальных. Теперь все «ровно и красиво — и ряды, и колонны»;
  • Была исправлена ошибка во встроенной в Easyhotspot функции проверки номеров телефонов, благодаря которой проверку успешно проходили неверно введенные номера, если они начинались с 7, но пользователь вводил не 11 а 12 цифр;
  • Не было печали, но тут какой-то «чудак на букву м» начал терзать «черную админку» на демо-сервере на предмет взлома методом «поиска команд мускула» и т.п.. Админка «выжила», лишь только лог ошибок мускула распух. Подумалось, почему бы тогда не ограничить набор вводимого «по самое не могу» (вдобавок к стандартным функциям типа mysql_escape_string и т.п.). В итоге во всех формах поиска было добавлено принудительное «кастрирование» поисковой фразы до шаблона «буквы/цифры/дефисы/подчеркивания». Все остальное тупо множится на ноль. В дополнение к этому, были внесены дополнительные изменения в настройки параметров функции form_validation, также значительно ограничивающие возможности ввода в поисковые формы всякой ереси…
  • В биллинг добавлена функция логирования действий, осуществляемых пользователями (именно персоналом хотспота — кассирами, админами, суперадминами) в программе («черной админке»). Теперь вы легко сможете доказать кассиру, что он, например, удалил ваучер, выручку за который присвоил себе;
  • В меню платежных систем при экспорте данных в CSV-файл добавлена «птичка» — «Удалить после экспорта». Отметка в ней позволяет удалять из базы записи о заказах, попавших в отчет. Ваучеры этих заказов «удаляются» в архив (т.е. данные о них не удаляются абсолютно полностью, а вместо этого переносятся в архив программы);
  • В списке тарифов для обслуживания платежной системой добавлено извещение, если для тарифа не установлены описания (модули могут давать сбои в таких случаях);
  • В меню платежных систем на кнопки удаления тарифов добавлены запросы, требующие от пользователя подтверждения данного действия;
  • В скрипт регулярных действий добавлена процедура, удаляющая из баз платежных систем незавершенные заказы, которые были созданы ранее, чем 31 день назад (т.е., те заказы, у которых клиент кнопку выбора тарифа нажал, а платить не стал, в базе они отображаются со статусом «В обработке»).

Обновлена страница авторизации

  • Полностью изменен макет страницы авторизации! В первую очередь преследовалась цель «минимизации» присутствия на ней элементов меню хотспота. Все это — ради того, чтобы клиенту ничто не мешало видеть вашу «страницу-подложку»! В итоге, на странице («в покое») присутствует одна лишь кнопка «Меню», по нажатию на которую клиенту выводятся формы для ввода логина-пароля, бесплатного «гостевого» входа, список доступных платежных систем и т.д. Вместо того, чтобы пересказывать все нюансы, мне проще будет показать вам саму «живую» страницу авторизации: вот ссылка (открывайте и смотрите)!
  • В связи с использованием в программе функции «унификации mac-адресов», в скрипт страницы авторизации также был добавлен код, приводящий mac-адреса к единому виду aa-bb-00-11-22-ff (то есть, все буквы — строчные, разделитель октетов — дефис);
  • Обновлены как код страницы авторизации, так и код самого биллинга Easyhotspot для того, чтобы функция автоматической авторизации клиентов, с одной стороны, перестала зависеть от cookies, а с другой стороны — работала как для «ваучерных» клиентов, так и для «клиентов с оплатой по счету»;
  • Исправлена ошибка, заключавшаяся в том, что при одновременном использовании функций СМС-авторизации и СМС-подтверждения (бумажных) ваучеров меню СМС-авторизации «перекрывало» окно «СМС-подтверждения»;
  • Скрипт страницы авторизации для Mikrotik был отредактирован с целью возможности корректной работы при использовании хотспотом https-авторизации. Что это дает? HTTPS-авторизация в Mikrotik-ах позволяет корректно перехватывать запросы неавторизованных клиентов и отправлять их на страницу авторизации даже в тех случаях, если они пытаются открывать https-ресурсы в интернете («известная» проблема всех captive-portal-ов). Учтите, что для использования этой функции вам потребуются ssl-сертификаты. Сама переадресация будет работать, даже если сертификаты вы будете использовать «самоподписные», но при каждом запросе браузеры клиентов будут вопить о том, что сертификаты — «левые» («фишинг»). Поэтому, для нормальной работы сертификаты лучше будет купить честные…

Обновлен модуль СМС-авторизации

  • В модуле СМС-авторизации запросы от модуля к программе Easyhotspot переведены с функции file_get_contents на использование curl. Также, добавлено принудительное (неотключаемое) логирование ошибок curl в случае, если модуль не смог «достучаться» до программы Easyhotspot (ошибка 905);
  • У функции отправки служебных СМС из списка агрегаторов удален Protelecom и вместо него добавлен SMSProfi;
  • В список агрегаторов функции «отправки служебных СМС» добавлены два новых — SMS Gatekeeper и Chudotelecom;
  • Для отправки «служебных СМС» добавлена поддержка программ ProfiSMS и Gammu-Smsd (эти программы осуществляют отправку СМС не через «фирмы-агрегаторы», а через GSM/3G телефон/модем, подключенный непосредственно к серверу биллинга);

Обновления платежных модулей

В ряде платежных модулей исправлена ошибка, благодаря которой, в случае включения «привязки списка тарифов к NASID», на странице платежного модуля полностью пропадал список предлагаемых клиенту тарифов.

Слегка «подрихтован» код ряда платежных модулей (Assist, Liqpay, Onpay, Paypal, Robokassa, Wallet-One, Yandex). Изменения касались только внешнего вида на мобильных устройствах, сам функционал не менялся.

Обновлен модуль приема оплат с кредитных карт через платежную систему Liqpay:

  • Теперь модуль использует новую версию API Liqpay — 3.0;
  • Модуль был переписан на php (вместо perl);
  • В модуль включен механизм смены языка интерфейса («из коробки» модуль имеет 2 встроенных языка — русский и английский, в документации описан механизм добавления других);
  • В модуль добавлена возможность отключить ввод телефона клиента;
  • В модуль добавлена возможность «помесячной» оплаты для «постоянных» клиентов («клиентов с оплатой по счету»);
  • В модуль добавлен режим тестирования;
  • В модуль добавлена возможность включения DEBUG режима;

Изменения и исправления в скрипте-инсталяторе:

  • Прислали очередной формат имени интерфейса, «придуманного» Ubuntu, который не проходил проверку шаблона в скрипте-инсталяторе (enp4s0f0). Скрипт исправлен — отредактирован шаблон;
  • В скрипт-инсталятор добавлена процедура, которая настраивает и активирует использование сервером FreeRADIUS «функции унификации mac-адресов» (если такое возможно);
  • Скрипт инсталятор теперь определяет объем ОЗУ сервера и устанавливает максимальный размер памяти, выделяемый скрипту PHP, равным его половине;

Изменения и исправления в прочих скриптах:

  • Исправлена ошибка в скрипте формы обратной связи. Ранее в нем поле ввода текстового сообщения имело «html-имя» ads_text и точно такой-же id. В результате программы (включая и плагины браузеров), блокирующие рекламу (например, Ad-Block), «прятали» это поле. И клиент попросту не мог ввести текстовое сообщение — не куда было! Идентификаторы исправлены на такие, что не вызывают такой реакции у программ типа Ad-Block, и теперь поле для ввода текстового сообщения клиенту видно «без проблем»;
  • Изменен скрипт страницы «формы обратной связи». В него добавлена возможность включения двух дополнительных полей — телефона и адреса e-mail (то есть, включенными могут быть как одно (любое) из двух указанных полей, так и оба сразу, а также — ни одно из указанных полей). Если эти поля включены, ввод информации в них является обязательным для клиента. Очень помогает администраторам в тех случаях, когда клиент присылает сообщение, а куда ему отвечать — написать в нем забывает;
  • У скрипта архивации баз данных изменен формат добавления даты в имя архива. Раньше было ДД-ММ-ГГГГ, теперь стало ГГГГ-ММ-ДД (благодаря чему теперь визуально видна сортировка файлов в «правильном» порядке);
  • Исправлена ошибка скрипта, автоматически авторизующего ваучерных клиентов. Ранее скрипт использовал проверку только срока годности ваучера и в ситуациях, когда номинал ваучера уже истек, а срок годности — еще нет, скрипт «зацикливался», пытаясь постоянно авторизовать этого клиента;

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

В связи с обновлениями в программе были обновлены следующие документы:


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

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

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

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