По просьбе одного из наших клиентов — отеля, мы разработали системный сервис, который берет имена пользователей и пароли из базы данных и создает, а также поддерживает пользователей hotspot в User Manager. Скачать можно по ссылке
В качестве примера: в отеле используется SQL Server с программным обеспечением для управления отелем, где логично хранится список номеров и их гостей. Сервис периодически выполняет SQL-запрос к этой базе, берет номер комнаты как имя пользователя для User Manager и фамилию гостя как пароль. Как только гость заезжает, сервис обновляет пользователя User Manager с соответствующим номером комнаты.
Персоналу отеля не нужно вручную поддерживать пользователей в User Manager или создавать ваучеры для гостей. Сервис может подключаться к любой базе данных с поддержкой JDBC-драйвера, либо использовать CSV-файл в качестве источника имени пользователя и пароля с помощью открытого драйвера CSVJDBC. Подключение к Mikrotik User Manager происходит через API-сервис.
Пример конфигурации выглядит так:
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver # JDBC-драйвер (в данном случае MS SQL Server)
spring.datasource.url=jdbc:sqlserver://server;databaseName=HOTEL # URL подключения к базе данных
spring.datasource.username=sa # имя пользователя базы данных
spring.datasource.password=password # пароль базы данных
data.query=select room as username, surname as password from guests # выполняемый SQL-запрос
update.rate=* 0/5 * * * ? # расписание обновления в формате CRON (здесь — каждые 5 минут)
hotspot.address=192.168.0.1 # IP-адрес устройства Mikrotik
hotspot.user=admin # пользователь API Mikrotik
hotspot.password=password # пароль пользователя API Mikrotik
hotspot.port=8728 # порт API Mikrotik
hotspot.customer=admin # клиент User Manager
hotspot.profile=default # профиль, назначаемый новым пользователям
hotspot.remove=true # опция удаления неиспользуемых пользователей
hotspot.remove.skip= # список профилей пользователей, которые не удалять
SQL-запрос должен возвращать столбец username (имя пользователя) и столбец password (пароль). Опционально он может возвращать и столбец profile с названием профиля User Manager, который будет назначен новому пользователю.
В приведенном примере запрашивается таблица guests, где номер комнаты используется как имя пользователя, фамилия — как пароль. Профиль не возвращается, поэтому берется из параметра “hotspot.profile=…”. Имя пользователя должно быть уникальным в результатах запроса.
При запуске обновления сервис проверяет, нет ли уже пользователя с таким username в User Manager. Если пользователя нет — создает нового. Если есть — сверяет пароли: если они совпадают, пользователь остается без изменений, если отличаются — старый пользователь удаляется, создается новый с тем же username и новым паролем.
Если включена опция hotspot.remove, сервис удаляет всех пользователей в User Manager, которые не появились в результате запросе, за исключением пользователей с профилями, указанными в hotspot.remove.skip.
В итоге, когда гость регистрируется, ему вместе с ключом от номера выдают карточку, где написано: для доступа в интернет имя пользователя — это номер комнаты, а пароль — фамилия гостя. Мы используем систему именно так, но запрос и база данных могут быть любыми, и сервис подойдет для разных сценариев.
Сервис написан на Java, требует установленной Java Runtime версии 1.7 и выше. В комплекте есть обертка для установки в качестве службы Windows. Он также работает на любой ОС с поддержкой Java (Linux, Mac, что угодно), так как представляет собой самодостаточный jar-файл, который запускается командой java -jar HotSpotAuto.jar.
В комплекте прилагается файл README:
Использование: распакуйте в папку. Поместите JDBC-драйвер вашей базы данных в подпапку lib. Отредактируйте application.properties под свои настройки. Для теста в комплекте есть драйвер CSVJDBC, пример данных в папке data и интервал обновления установлен на 2 минуты. Просто настройте параметры hotspot.* под свой Mikrotik.
Логи работы можно найти в файле log\hotspotauto.log, где отображаются созданные/удалённые пользователи и возможные ошибки.
Команды для службы Windows:
Установить службу: HotSpotAuto.exe install
Запустить службу: HotSpotAuto.exe start
Остановить службу: HotSpotAuto.exe stop
Удалить службу: HotSpotAuto.exe uninstall
Для запуска без установки службы: java -jar HotSpotAuto-1.0.jar
В качестве примера: в отеле используется SQL Server с программным обеспечением для управления отелем, где логично хранится список номеров и их гостей. Сервис периодически выполняет SQL-запрос к этой базе, берет номер комнаты как имя пользователя для User Manager и фамилию гостя как пароль. Как только гость заезжает, сервис обновляет пользователя User Manager с соответствующим номером комнаты.
Персоналу отеля не нужно вручную поддерживать пользователей в User Manager или создавать ваучеры для гостей. Сервис может подключаться к любой базе данных с поддержкой JDBC-драйвера, либо использовать CSV-файл в качестве источника имени пользователя и пароля с помощью открытого драйвера CSVJDBC. Подключение к Mikrotik User Manager происходит через API-сервис.
Пример конфигурации выглядит так:
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver # JDBC-драйвер (в данном случае MS SQL Server)
spring.datasource.url=jdbc:sqlserver://server;databaseName=HOTEL # URL подключения к базе данных
spring.datasource.username=sa # имя пользователя базы данных
spring.datasource.password=password # пароль базы данных
data.query=select room as username, surname as password from guests # выполняемый SQL-запрос
update.rate=* 0/5 * * * ? # расписание обновления в формате CRON (здесь — каждые 5 минут)
hotspot.address=192.168.0.1 # IP-адрес устройства Mikrotik
hotspot.user=admin # пользователь API Mikrotik
hotspot.password=password # пароль пользователя API Mikrotik
hotspot.port=8728 # порт API Mikrotik
hotspot.customer=admin # клиент User Manager
hotspot.profile=default # профиль, назначаемый новым пользователям
hotspot.remove=true # опция удаления неиспользуемых пользователей
hotspot.remove.skip= # список профилей пользователей, которые не удалять
SQL-запрос должен возвращать столбец username (имя пользователя) и столбец password (пароль). Опционально он может возвращать и столбец profile с названием профиля User Manager, который будет назначен новому пользователю.
В приведенном примере запрашивается таблица guests, где номер комнаты используется как имя пользователя, фамилия — как пароль. Профиль не возвращается, поэтому берется из параметра “hotspot.profile=…”. Имя пользователя должно быть уникальным в результатах запроса.
При запуске обновления сервис проверяет, нет ли уже пользователя с таким username в User Manager. Если пользователя нет — создает нового. Если есть — сверяет пароли: если они совпадают, пользователь остается без изменений, если отличаются — старый пользователь удаляется, создается новый с тем же username и новым паролем.
Если включена опция hotspot.remove, сервис удаляет всех пользователей в User Manager, которые не появились в результате запросе, за исключением пользователей с профилями, указанными в hotspot.remove.skip.
В итоге, когда гость регистрируется, ему вместе с ключом от номера выдают карточку, где написано: для доступа в интернет имя пользователя — это номер комнаты, а пароль — фамилия гостя. Мы используем систему именно так, но запрос и база данных могут быть любыми, и сервис подойдет для разных сценариев.
Сервис написан на Java, требует установленной Java Runtime версии 1.7 и выше. В комплекте есть обертка для установки в качестве службы Windows. Он также работает на любой ОС с поддержкой Java (Linux, Mac, что угодно), так как представляет собой самодостаточный jar-файл, который запускается командой java -jar HotSpotAuto.jar.
В комплекте прилагается файл README:
Использование: распакуйте в папку. Поместите JDBC-драйвер вашей базы данных в подпапку lib. Отредактируйте application.properties под свои настройки. Для теста в комплекте есть драйвер CSVJDBC, пример данных в папке data и интервал обновления установлен на 2 минуты. Просто настройте параметры hotspot.* под свой Mikrotik.
Логи работы можно найти в файле log\hotspotauto.log, где отображаются созданные/удалённые пользователи и возможные ошибки.
Команды для службы Windows:
Установить службу: HotSpotAuto.exe install
Запустить службу: HotSpotAuto.exe start
Остановить службу: HotSpotAuto.exe stop
Удалить службу: HotSpotAuto.exe uninstall
Для запуска без установки службы: java -jar HotSpotAuto-1.0.jar
