Предыдущая статья обязательна к прочтению.
Итак, на сегодняшний момент реализовано следующее:
- Выпущен сертификат проверки подлинности SSL
- Реализована передача файлов;
- Начала разработка бота
В ближайшей перспективе – сохранение логов всех бесед в архив и написание простых ботов, помогающих в администрировании.
Выпуск сертификата
Вообще, сертификаты проще всего купить/заказать на свой домен. А если планируется использовать множество сервисов и поддоменов, то можно взять ssl сертификат на поддомены, для фирмы этот ценник вполне подъёмный.
Лично я использовал для тестовых целей, поэтому получил сертификат в LetsEncrypt – набирающем популярность.
Объединил полученные сертификаты в один файл:
# cat privkey1.pem cert1.pem chain1.pem > ejabberd.pem
Прописал его в конфиге ejabberd.yml
Передача файлов
Для передачи первым делом откроем на файрволле необходимый порт – у меня это 5444.
Соответственно, будет два правила – первое разрешает INPUT на этот порт (так как у меня идёт проброс портов в локальную сеть) для шлюза NAT, а второе – после NAT разрешает FORWARD трафик на этот же порт.
А также раскомментировал секцию в конфигурационном файле:
-
port: 5444
module: ejabberd_http
tls: true
certfile: "/opt/ejabberd-18.06/certs/ejabberd.pem"
request_handlers:
"upload": mod_http_upload
protocol_options: 'TLS_OPTIONS'
dhfile: 'DH_FILE'
ciphers: 'TLS_CIPHERS'
И внёс изменения в настройки модуля:
mod_http_upload:
docroot: "/opt/ejabberd/upload"
put_url: "https://@HOST@:5444/upload"
access: local
max_size: 50000000
thumbnail: false
file_mode: "0644"
dir_mode: "0744"
После перезапуска сервиса появилась возможность передавать файлы (изображения) даже с превьюшками, как в WhatsApp, что вполне уже соответствует необходимым требованиям. В настройках модуля mod_http_upload я указал максимальный размер файла для загрузки – 50 мегабайт, а также каталог для сохранения файлов.
Создание бота
Что касается создания бота – есть готовые исходники на PHP (xmpphp), меня вполне устраивают. Сейчас бот проходит испытания. Вообще принцип какой – протокол XMPP достаточно хорошо документирован, чем-то напоминает XML. Скрипт висит на виртуалке, для пользователей он представляет собой ещё один контакт (я назвал его bot – незамысловато довольно). И на каждое принятое сообщение у нас вызывается отдельная функция в зависимости от полученного текста.
То есть можно реализовать некоторое подобие текстового меню, например в ответ на команду ? или /help (или -help) вывести список доступных команд, а в ответ на соответствующую команду выполнять другие действия и возвращать результат отправителю.
То есть плясать нужно всё-таки от требуемых функций, потом уже писать код. Встречал я кстати реализации на Python, но в нём довольно таки не силён, а на PHP мало-мальски что-то могу сделать.
Comments: