Передача файлов
Введение
В Jabber, как и у большинства других IM, есть возможность передачи файлов, но, к сожалению, с ней часто возникают проблемы. Почти всегда они связаны со способом подключения к интернету. Довольно распространены способы (в частности NAT и прокси), при которых затруднительно устанавливать прямые соединения между 2 компьютерами (при обмене сообщениями прямых соединений не происходит, поэтому проблем нет). Если у Вас нет проблем с передачей файлов - Вам повезло и либо у Вас уже настроен клиент, либо у вас хороший способ подключения к интернету. Если передача файлов не работает (допустим у Вас выход в интернет через локальную сеть) - то необходимо настраивать клиент.
Теория
Существует несколько протоколов передачи файлов в Jabber. Самым популярным, новым и официальным является SI. Существуют две разновидности SI: in-bound (в канале) и out-of-bound (вне канала). Первый медленный и ненадежный, но будет работать почти всегда, при его использовании файлы превращаются в сообщения с помощью base64 и отсылаются как обычные сообщения. Второй быстрый, надежный, но работает не всегда, при его использовании файлы посылаются либо напрямую, либо через специальный прокси.
Клиенты
Bombus и Gajim не нуждаются в настройке, так как первый использует in-bound, а второй без настройки умеет передавать файлы через свой прокси. Важно понимать, что если один клиент умеет передавать файлы только in-bound, а другой - только out-of-bound (допустим связка Bombus+Psi), то нельзя никакими методами передать файл между ними. Поэтому необходимо знать, какими способами может передавать файлы Ваш клиент
Практика
Настройка описывается на примере Psi 0.12. Нажимаем правой кнопкой мыши на имени Вашей учетной записи в ростере - Service Discovery.
Ждем несколько секунд. Если Вы видите там транспорт proxy, Вам следует использовать его, в противном случае используем другой.
Далее необходимо выбрать "Меню - Account Setup - имя Вашей учетной записи - Modify - вкладка Misc".
В поле Data Transfer Proxy пишем имя транспотра - либо имя транспорта для Вашего сервера (допустим для Jabbus.org имя будет proxy.jabbus.org), а если вы не нашли прокси в Service Discovery, то используем допустим proxy.jabber.ru. Сохраняем изменения.Далее необходимо идти в "Меню - Options - Application". В самом низу пишем свой внешний ip адрес, который можно узнать на 2ip, сохраняем настройки
и пользуемся передачей файлов.
Jdisk
Иногда случается, что обязательно необходимо передать файл(ы), но это или невозможно (см. подраздел клиенты), или надо передать файлы сразу нескольким контактам. И тут на помощь приходит транспорт jdisk. Его можно обнаружить на серверах jabbus.org и jabbim.cz. Данный транспорт работает как виртуальный диск, который управляется через jabber. На Jabbus.org размер диска составляет 50 Mб, а на jabbim.cz - 100 Mб. При подключении транспорта в ростер добавляются 2 (или 3) контакта - public и private. Разница между ними в том,что при первом файлы попадают в общий список файлов, а в другом - нет. Для того чтобы залить файл на транспорт, нужно всего лишь передать его через Jabber одному из контактов - public или private. Транспорт вернет Вам прямую ссылку на файл. Команды, которыми можно управлять транспортом:
- du
- выводит информацию о занятом и свободном месте на диске
- ls [jid]
- показ всех файлов на диске. При указании jid будет показано содержимое папки public указанного jid
- get [jid] имя_файла
- запрос указанного файла. При указании jid, вам будет послан файл из папки public указанного jid
- move имя_файла disk
- перемещение указанного файла на другой диск. Например, если эту команду отправить контакту public с параметром disk=private, файл переместится на диск private
- rm имя_файла
- удаление с диска указанного файла
- link имя_файла
- показать URL (ссылку) на данный файл в папке public
- send jid/resource имя_файла
- диск попытается отправить файл данному jid с данным resource. Без указания resource отправка не будет работать