Prosody никогда не вызывает http_file_share
Я попытался настроить свой xmpp-сервер prosody (точнее: я мигрировал с другой машины с какой-то очень устаревшей версией)
Большинство вещей работает нормально. Кроме mod_http_file_share .
Если я открою его в браузере, все будет выглядеть нормально .
Просматривая конфигурацию, я удалил практически все, что могло создать проблемы.
Но он просто не подключается - большинство клиентов даже не обнаруживают тайм-аут или что-то подобное (он просто ждет «передачи», пока соединение с сервером не будет закрыто).
Я пытался просмотреть XML-консоль в gajim, чтобы найти источник проблемы, но все, с чем я когда-либо сталкивался, это какой-то вызов для получения идентификатора «слота» для этой загрузки. На это никогда не будет ответа, поэтому фактическая загрузка даже не начнется.
Не удалось найти никакой документации, кроме просодической страницы для этого модуля, поэтому я почти уверен, что не нужно ничего активировать/включать, кроме
VirtualHost "g33ky.de"
disco_items = {
{ "chat.g33ky.de", "file sharing service" },
}
Component "chat.g33ky.de" "http_file_share"
http_file_share_size_limit = 31 * 24 * 60 * 60
http_file_share_daily_quota = 100*1024*1024
ну, это и добавление некоторых сертификатов (я получил их от certbot/letsencrypt через NGinx, но он отвечает только на порты 80/443 и пересылает https-трафик на 5281)
2 ответа
окей, на самом деле проблем было с полдюжины одновременно
основными из них были:
- Я переходил с какой-то очень старой просодической версии, с немного другим макетом базы данных.
- db — это какой-то sqlite-файл, который я скопировал со своего старого сервера.
- prosody не могла записать некоторые вещи в этот файл sqlite, потому что, хотя сам файл был доступен для записи, папка, в которой он был помещен, не была
- одна из тех вещей, которые выдавали ошибки записи, была необходимостью начать передачу файлов
Мне следовало более внимательно прочитать журналы — там действительно были ошибки записи.
Спасибо MattJ и Менелю (из просодического материала) за то, что помогли мне это понять.
Вероятно, проблема в том, что ваши клиенты не могут обнаружить службу загрузки, поскольку она находится в другом домене. Prosody будет автоматически рекламировать клиентам услуги на прямых поддоменах (например,upload.chat.g33ky.de
будет автоматически рекламироваться наchat.g33ky.de
), чтобы клиенты могли обнаружить доступные услуги.
Если у вас есть сервис в совершенно другом домене, вам нужно сообщить Prosody, что вы хотите связать его с вашим основным доменом. Это делается с помощью опции disco_items .
Похоже, ваша конфигурация уже близка к правильной, за исключением того, что вы указали"chat.g33ky.de"
как предмет сам по себе. Просто измените это на"upload.example.org"
чтобы сообщить клиентам правильный домен для вашей службы загрузки.
Исправленный пример:
VirtualHost "chat.g33ky.de"
disco_items = {
{ "upload.example.org", "file sharing service" },
}
Component "upload.example.org" "http_file_share"
http_file_share_size_limit = 31 * 24 * 60 * 60
http_file_share_daily_quota = 100*1024*1024