Linphone: установка, настройка, проблемы

archive view archive save

linphone-logo_1.jpg Linphone Интернет видео телефон, как установить на смартфон с Андроид, десктоп Debian 10. Настройка, использование, проблемы и их устранение.

Если сравнить стоимость мобильной связи и VOIP Интернет телефонию по безплатному вай-вай, который особенно в городах почти на каждом шагу, то несложно будет догадаться какой вариант выгоднее.

Кроме всего прочего, мобильная связь с точки зрения конфиденциальности насквозь гнилая и тухлая коммуникация! Ваши все звонки по-умолчанию на прослушке со сроком хранения всех записей 3-5 лет - это только на законодательном уровне!

Понимая выражение Законы пишутся для дураков! Для умных - примечания!, можно вполне себе предположить, что всё что натрепали по мобильному бигдата может хранить и использовать на своё усмотрение вечно.

И если важные дела и сделки, уж не говоря о личном, ты обсуждаешь по обычному сотовому мобильному телефону, тогда ты дебил, - без вариантов, а если до сих пор так было, то настало время это изменить...

  1. Linphone open source VoIP project
  2. Учетная запись Linphone
  3. Установка и настройка Linphone
    1. Linphone в Androin 10-12
    2. Linphone в Debian 10
  4. Linphone проблемс
    1. Linphone 3.12.0 TLS/SSL transport problem
    2. Linphone 3.12.0 CPIM problem
  5. Linphone URL remote .linphonerc
  6. Как использовать Linphone
    1. Как позвонить
    2. Как начать чат

Linphone open source VoIP project

linphone-promo_1.jpg Linphone open source VoIP project - оно то и понятно.., не понятно только вот почему на промо-материалах они дебилы постоянно всегда улыбаются и/или даже ржут как лошадь Пржевальского!? Что их там всех так колбасит, пучит, распирает и плющит!? Чем они там, какими вакцинами, «рэпаютца»!? А ведь они же скатыняки там 100%-во чем-то «рэпаютца»..! ИМХО, такой же лютый ржач не без причины, а если иначе.., тогда, то признак дурачины.

Или то им так смешно стало после всех попыток установить и настроить этот чудо Интернет видео телефон? Ржот скатыняка и молчит, как бы намекая: Чувак, ты даже не подозреваешь, какие приключения тебя ждут!

Ну, да ладно... Как в любом "open source ХZ project", и в Linphone имеется куча своих багов/глюков/недомолвок/секретов, которые мы обязательно расколдуем. Главное, что Linphone:

  • Linphone was initially developed for Linux but now supports many additional platforms including Microsoft Windows, macOS, and mobile phones running Windows Phone, iOS or Android.
  • It supports ZRTP for end-to-end encrypted voice and video communication.
  • Linphone is licensed under the GNU GPL-3.0-or-later and supports IPv6.
  • Linphone can also be used behind network address translator (NAT), meaning it can run behind home routers.

Учетная запись Linphone

Для начала нам нужна учетная запись Linphone.

Учетная запись Linphone может быть создана при первом запуске Linphone клиента на смартфоне или десктопе с возможностью привязки к электронной почте или мобильному телефону.

Создать аккаунт из приложения можно (теоретически) и после установки вызвав из меню пункт Помощник в приложении на андроид 10-12

linphone-account-assistant-android_1.jpg

linphone-account-assistant-android_2.jpg

linphone-account-assistant-android_3.jpg

Или пункт Помощь - Помощник учётной записи на десктопе Debian 10

linphone-account-assistant-debian_1.jpg

Однако, в случае регистрации из приложения на андроид 10-12 нет возможности регистрации по электронной почте (только по телефону), а на десктопе Debian 10 нет возможности регистрации по телефону (только по электронной почте).

Кроме того, при регистрации из приложения что-то может пойти не так, и ...заседание не состоится.... Поэтому, на наш личный вкус и цвет предпочтительнее регистрация на сайте с привязкой к электронной почте, по ссылке: https://subscribe.linphone.org/register/email

linphone-account-reg-www_1.jpg

Ну, весь процесс регистрации расписывать не будем ибо писанины там ещё много... Вы ведь не полные дебилы, уж с регистрацией то дальше сможете понять что да как?

Результирующим итогом успешной регистрации должен быть доступ к панели и детальной информации про аккаунт:

https://subscribe.linphone.org/panel

Account information

SIP address: sip:[email protected]
Username: vasisilij
Domain: sip.linphone.org

Proxy/registrar address: sip:sip.linphone.org
Transport: TLS (recommended), TCP or UDP

API Key (простому смертному не нужен)

You can generate an API key and use it to request the different API endpoints, check the related API documentation to know how to use that key.
https://subscribe.linphone.org/api

iys0O2xFWSKfje9whOAIUFEIsEwfMAY5NHiy3kze

Авторизовавшись на https://subscribe.linphone.org/login и точно убедившись, что у нас имеется аккаунт на linphone.org можно переходить к установке и настройке самой программы.

Установка и настройка Linphone

С главной страницы linphone.org предлагаются ссылки для установки на следующие платформы:

Обратите внимание, что Windows desktop и Linux, как видимо и на остальных, доступны варианты только для 64bit, а все пользователи 32bit-ных платформ молча посланы накуй раком по болотам.

Выбираете значит подходящую ссылку для свой платформы и устанавливаете, а далее чуть подробнее мы рассмотрим только установку на Androin 10-12 и Debian 10, которая имеет свои нюансы, но особо не отличается от установки на других платформах.

Linphone в Androin 10-12

Linphone (требуется Android 6.0 или новее) - это безплатное и безопасное ПО с открытым кодом (Free and Open Source, без жучков/зондов/прослушек), есть в репозитории f-droid по ссылке: https://f-droid.org/ru/packages/org.linphone/

После установки из меню вызываем пункт Помощник, далее Использовать SIP аккаунт

linphone-account-assistant-android_2.jpg

и Я ПОНИМАЮ

linphone-account-assistant-android_4.jpg

на следующем шаге Введите имя пользователя и пароль с вашим доменом SIP

linphone-account-assistant-android_5.jpg

В нашем примере это:

Имя пользователя: vasisilij
Пароль: ******
Домен: sip.linphone.org
Отображаемое имя (необязательно): Вася
ТРАНСПОРТ: TLS

После нажатия ВХОД всё должно быть в ажуре. Для звонков и чатов между телефонами на Androin никаких дополнительных манипуляций не требуется.

Linphone в Debian 10

Тем, у кого 32bit-ные платформы придётся как-то с костылями довольствоваться устаревшими версиями Linphone доступными в оф.репозиториях или же компилясить их самостоятельно:

sudo apt-get install linphone

На текущий момент Linphone 3.12.0 Интернет видео телефон, использующий стандарт протокола SIP (rfc3261).

Запустим программу и потом глянем где и какие файлы появились:

$ sudo uodatedb
$ sudo locate linphone|less
/etc/firejail/linphone.profile
/home/yuzver/.linphone-call-history.db
/home/yuzver/.linphone-friends.db
/home/yuzver/.linphone-history.db
/home/yuzver/.linphone-zidcache
/home/yuzver/.linphonerc
/usr/bin/linphone
/usr/bin/linphonec
/usr/bin/linphonecsh
...

Вызываем Помощник учётной записи, выбираем Я уже имею учётную запись на linphone.org и только хочу использовать её, вводим Имя пользователя vasisilij (без домена @sip.linphone.org) и Пароль - нажимаем Применить.

В ответ Учётная запись успешно настроена/добавлена... или что-то типа того.

Однако, никакая Учётная запись добавлена не была, в Опции - Параметры - Учётные записи было пусто и дальше я попытался добавить Учётная запись вручную выбрав Транспорт TLS, но попытка завершилась неудачно. Т.е. запись наче добавилась, но паролей не запрашивалось и признаков жизни никаких нет.

Тогда попробовал Транспорт TLS изменить на UDP:

linphone-account-config-debian_1.jpg

и после был запрошен пароль для авторизации:

linphone-account-config-debian_2.jpg

Транспорт UDP - это конечно хорошо, но мы хотим TLS и открыв Помощь - Показать окно отладки мы обнаружили:

  • Failed to load root ca from /etc/ssl/certs: X509 - Read/write of file failed
  • SSL handshake failed : SSL - No CA Chain is set, but required to operate

Помимо проблем с TLS подключением, дальше тоже будет интересно и может быть (кому ж как.., зависит от препаратов) смешно, - проблемы коммуникации между новыми и старыми версиями Linphone, например когда LinphoneAndroid/5.0.12 отправляет сообщение клиенту Linphone Debian 3.12.0 о чём далее...

Linphone проблемс

hacker-access-granted.gif

Куда же без проблем?!

При установке linphone и обмене звонками/сообщениями на андроидах 10-12 как таковых проблем не наблюдалось.

Однако, в ситуации, когда:

  1. USER1
    User-Agent: Linphone 3.12.0 (Debian 10)
    Behind NAT (direct connection, in network settings)
  2. USER2
    User-Agent: LinphoneAndroid/5.0.12 (_noname_) LinphoneSDK/5.2.62 (tags/5.2.62^0)
    Behind NAT also with default settings when add SIP account

USER1 испытывает две проблемы:

  1. проблема с TLS/SSL авторизацией;
  2. проблема с получением сообщений от андроид-пользователя USER2.

О чем нами был начат холивар на гитхабе:

Однако, за многие годы подмечено, как всегда оно бывает - спасение утопающего дело рук самого утопающего. Воз и ныне там, в ответ гробовая тишина, или что-то типа Купи чувак себе новый ПК, забей на старые проблемы и займись новыми, в сети решений не обнаружено.

АХТУНГ! Теперь наверное САМОЕ СМЕШНОЕ...

Если не знать про Помощь - Показать окно отладки и/или не уметь его использовать, тогда ж неизвестно куда копать ведь никаких окон с ошибками программа не выдаёт. Так можно до морковкина заговенья безуспешно дёргать за разные рычажки и заводить по сети многочисленные холивары на разнообразные темы, типа:

Обычно если в течении 1-2 суток у нас не получается запеленговать проблему и/или обнаружить готового решения, тогда мы начинаем люто её дэбажить со всех сторон и щелей...

Linphone 3.12.0 TLS/SSL transport problem

  • Failed to load root ca from /etc/ssl/certs: X509 - Read/write of file failed
  • SSL handshake failed : SSL - No CA Chain is set, but required to operate

"Failed to load root ca from /etc/ssl/certs" - но ведь это же директория, понятно "Read/write of file failed"! А может оно в той директории искомый файл не находит или проблемы с правами? Может этот ca-certificates.crt?

$ namei -mo /etc/ssl/certs/ca-certificates.crt
f: /etc/ssl/certs/ca-certificates.crt
 drwxr-xr-x root root /
 drwxr-xr-x root root etc
 drwxr-xr-x root root ssl
 drwxr-xr-x root root certs
 -rw-r--r-- root root ca-certificates.crt

Так с правами доступа всё гуд. Может root.crt ищет? Так не найдёт оно таких тут никогда...Нет, "root ca" - это корневые центры сертификации, "from /etc/ssl/certs"...Что-то видно не так с конфигами.

Открываем ~/.linphonerc значит, и меняем:

[sip]
root_ca=/etc/ssl/certs
 
; to
 
[sip]
root_ca=/etc/ssl/certs/ca-certificates.crt

Тем, у кого нет /etc/ssl/certs/ca-certificates.crt

$ sudo apt-get install ca-certificates openssl
$ sudo update-ca-certificates

Linphone 3.12.0 CPIM problem

  • Debian 3.12.0 client on Debian 10 Unsupported MESSAGE (content-type message/cpim not recognized)

Следующая проблема №2, как выше упоминалось заключалась в проблеме получения сообщений, когда USER2 (LinphoneAndroid/5.0.12) отправляет сообщение клиенту USER1 (Linphone Debian 3.12.0).

Когда пользователь USER1 (Linphone Debian 3.12.0) отправляет сообщение пользователю USER2 (LinphoneAndroid/5.0.12), то оно успешно доходит до адресата, а вот сообщения в обратном направлении завершаются ошибкой Unsupported MESSAGE (content-type message/cpim not recognized) на стороне Linphone Debian 3.12.0 клиента.

Вот, что удалось нарыть про это CPIM:

Reply to a specific message - XWiki
...
Until 5.1.0 SDK CPIM was only enabled on Flexisip based chat rooms (group chat rooms and/or end-to-end encrypted chat rooms in our applications), but now you can enable CPIM messages in basic chat rooms in your account configuration:

RFC 3862 - Common Presence and Instant Messaging (CPIM): Message Format
...
Abstract

This memo defines the MIME content type Message/CPIM, a message format for protocols that conform to the Common Profile for Instant Messaging (CPIM) specification.

Также изучен исходный код на наличие ключевой аббревиатуры CPIM и обнаружена тема с похожей проблемой под заголовком [Bug]: Unsupported Media Type (IMDN perhaps)? · Issue #215:

Решается установкой флага конфигурации cpim_in_basic_chat_rooms_enabled = 0 на стороне андроид клиента USER2 (LinphoneAndroid/5.0.12) отправляющего сообщения в этом CPIM формате.

Однако, для управления флагом cpim_in_basic_chat_rooms_enabled пользовательского интерфейса непредусмотрено, а изменить значение данной настройки можно только через...Правильно, именно через то самое место, - через linphone url remote config, но это уже совсем другая история...

Linphone URL remote .linphonerc

URL remote config для .linphonerc, ещё известное под кодовым названием Remote provisioning, в оф.документации упоминается по ссылкам:

Как из криво составленной (Remote Provisioning - XWiki) документации можно догадатся, удалённый файл конфигурации представляет из себя незамысловатый XML файл.

Однако, в примере оф.документации отсутствует дефиниция <?xml version="1.0" encoding="UTF-8"?>, а также закрывающий тег </config> и если мы будем неуклонно следовать таким примерам, то url remote config (Remote Provisioning) удалённый файл конфигурации linphone работать небудет!

Как мы помним, на мнужно заставить андроид клиента USER2 (LinphoneAndroid/5.0.12) отключить формат отправляемых сообщений content-type: message/cpim потому, что более старая версия Linphone Debian 3.12.0 клиента на десктопе USER1 отказывается их переваривать возмущаясь ошибкой Unsupported MESSAGE (content-type message/cpim not recognized).

Ниже пример рабочего файла, который после применения на андроид клиенте заставит его отправлять сообщения в формате Content-Type: application/im-iscomposing+xml вместо content-type: message/cpim:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://www.linphone.org/xsds/lpconfig.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.linphone.org/xsds/lpconfig.xsd lpconfig.xsd">
 
<section name="sip">
    <entry name="use_ipv6" overwrite="true">1</entry>
</section>
 
<section name="proxy_default_values">
    <entry name="cpim_in_basic_chat_rooms_enabled" overwrite="true">0</entry>
</section>
 
<section name="proxy_0">
    <entry name="cpim_in_basic_chat_rooms_enabled" overwrite="true">0</entry>
</section>
 
</config>

АХТУНГ!

В кривом примере из оф.документации также отсутствует ещё один важный параметр, без которого настройки не будут изменены - это overwrite="true". Упустив этот важный момент можно снова насидеть себе немалый геморр задаваясь вопросом типа:

ОЧень бесят подобные кривые примеры и НЕДОдокументация, которая в особо запущенных случаях нихера не описывает, а лишь повторяет названия конфигурационных переменных! Позор, Ганьба, и всё такое прочее подобным документациям и тем, кто их сопровождает.

Теперь открываем Меню - Установки - Дополнительно, проматываем вниз, находим поле URL удалённого конфигурирования и вписываем туда URL созданного ранее XML файла конфигурации, например https://itmag.pro/lpconfig.xml

linphone-url-remote-config_1.jpg

https://itmag.pro/lpconfig.xml - это файл конфигурации Linphone, которым пользуемся мы и рекомендуем своим клиентам. Данный удалённый файл конфигурации не содержит никаких логинов и/или паролей учётных записей, служит для корректировки/согласования настроек и более полной совместимости Linphone клиентов различных версий и платформ.

После того, как в настройках Меню - Установки - Дополнительно - URL удалённого конфигурирования мы указали полный веб-адрес к файлу и нажав галку применили настройки, - вступят в силу они при следующем запуске/перезапуске программы.

Проверить применились ли настройки удалённой конфигурации можно после перезапуска Linphone набрав секретный номер #1234#, должно появится меню:

  • Отладка
  • Включить журнал
  • Посмотреть файл настройки
  • Отмена

linphone-secret-menu.jpg

Для удаления же переменной конфигурации из .linphonerc следует использовать элемент с пустым значением <entry name="CONFIG_VAR_NAME" overwrite="true"></entry>

Полное содержимое с комментариями доступно по адресу: https://itmag.pro/lpconfig.xml

Как использовать Linphone

Ответ очевиден: По его прямому назначению, - ...Чтобы безразмерно использовать возможности блюпупа и коммутироваться с другими абонентами по всему региону России с помощью вифи...

Нужно сразу отметить, что Linphone - это open source VoIP project, которое лишено всяческих понтов и излишеств, а также всевозможных средств прослушки, мониторинга и/или удалённого скрытого доступа и управления (ака бэкдор).

Поэтому, механизм взаимодействия программы с абонентами максимально упрощён и минимизирован - пусть так будет и дальше.

В связи с вышеозначенным поведение программы, результат вызовов и т.д., иногда может быть загадочным и/или непонятным!

Как позвонить

Для выполнения успешного звонка должны быть соблюдены условия:

  1. Пользователи должны иметь аккаунты на одном и том же SIP-сервере, в нашем случае это sip.linphone.org
  2. Пользователи должны находится онлайн, иначе звонок завершится ошибкой Ошибка: 408 / Request timeout или Пользователь не найден!

Чтобы начать коммутироваться достаточно открыть программу и в адресную строку ввести номер телефона или SIP-адрес, например [email protected]

linphone-start-call_1.jpg

linphone-call-error-408.jpg

Журнал пропущенных вызовов содержит записи о пропущенных звонках только в том случае, если оба собеседника в момент попытки вызова находились в сети и звонок завершился сообщением Абонент занят, а не Ошибка: 408 / Request timeout или Пользователь не найден!, - в противном случае о вашем звонке адресат не узнает!

В таком случае желательно начать чат и отправить недоступному в данный момент собеседнику текстовое сообщение, а для надёжности лучше отправить несколько сообщений, - сообщение чата адресат обязательно получит, когда снова подключится к сети Интернет!

Как начать чат

Чтобы с контактом коммутироваться в дальнейшем, а также чтобы отправить контакту текстовое сообщение (начать чат), необходимо добавить его в адресную книгу:

linphone-address-book_1.jpg

linphone-address-book_2.jpg

После чего выбрать из адресной книги нужный контакт и кликнув по значку сообщения (без зелёного щита!):

linphone-address-book_3.jpg

начать чат отправив адресату текстовое сообщение, а для надёжности можно отправить несколько сообщений:

linphone-chat_1.jpg


Об авторе
АдМинь БагоИскатель
АдМинь БагоИскатель ярый борец за безглючную работу любых механизмов и организмов во всей вселенной и потому пребывает в вечном поиске всяческих багов, а тот кто ищет как известно всегда находит. Когда что-то или кого-то вылечить не в состоянии, то со словами "Я в аду, а вы все черти" уходит в запой выйдя из которого снова берётся лечить неизлечимое.
Ещё статьи автора

Нет комментариев

Вы можете стать первым, кто добавит комментарий к этой записи.

Добавить комментарий

АХТУНГ! Все комменты гостей модерасятся модерастом.
  1. Мессаги исключительно рекламного содержания, либо содержащие только одни оценочные суждения типа "круто" ("отлично", "спасибо", "автор дебил" и т.п.) не публикуются;
  2. Злостным спамерам, пранкерам и прочей сетевой нечисти рекомендуем напрасно не тратить своего времени и удовлетворять свои больные фантазии на специализированных Интернет ресурсах!;
  3. Разумная обоснованная критика, замечания, дополнения приветствуются. Поля помеченные символом * обязательны к заполнению.


Защитный код
Обновить

Комментарии в блоге
Новое на форуме