Websocket 1c: WebSocket для 1С (клиент/сервер) | Read the Docs

Содержание

Система взаимодействий в платформе 8.3.10 (как сделать так, чтобы менеджеры были под контролем и не уносили список клиентов)

В начале апреля фирма «1С» выпустила новую версию платформы – 8.3.10.

Новые возможности получились весьма «вкусными». В этой статье мы рассмотрим Систему взаимодействий.

Если коротко, то это Skype (или Telegram) внутри конфигурации 1С. О таком корпоративном мессенджере давно мечтали руководители и IT-шники 🙂

И вот чудо свершилось – теперь можно звонить, общаться текстом и устраивать конференции между сотрудниками не покидая 1С. И все это может привязано к объектам – конкретным документам, договорам, контрагентам, …

Начнем рассмотрение Системы взаимодействия с самых основ.

Концепция

Сначала давайте рассмотрим, что из себя представляет «1С:Предприятие». Этот программный комплекс построен по классической трёхзвенной архитектуре. Представить его можно в следующем виде:

Рисунок 1 – Упрощённая схема трёхзвенной архитектуры

Есть клиентская часть, серверная часть и база данных.

Передача данных между клиентом и сервером происходит при помощи серверного вызова, а доступ к базе данных возможен только со стороны сервера.

Подробнее про серверные вызовы можно прочитать в статье «Как работает серверный вызов в 1С». Для данного же материала важно отметить следующий факт – инициировать серверный вызов для передачи данных возможно только на клиентской части.

Но давайте вернёмся к «Системе взаимодействий»! Для начала обратимся к документации и посмотрим – что же скрывается под таким громким названием?

Система взаимодействия – это механизм, позволяющий пользователям одной информационной базы системы «1С:Предприятие» общаться друг с другом в режиме реального времени с помощью текстовых сообщений и видеозвонков.

Под термином «видеозвонок» понимается любой возможный вариант общения двух пользователей, который включает в себя как только голосовой канал общения, так и полноценный видеозвонок (голосовая информация и изображение).

Исходя из описания, получается что фирма «1С» встроила в платформу «мессенджер» для общения пользователей между собой. «Наконец-то!» – воскликнут одни. «Зачем?» – вопрошают другие. Оставим эту дискуссию для комментариев, а пока продолжим рассматривать «Систему взаимодействий» дальше.

Логично, что общение имеет смысл в том случае, когда в системе работают два или более пользователей. В среде «1С:Предприятие» для каждого пользователя организуется своя рабочая область. Поэтому [в клиент-серверном варианте] несколько клиентских подключений к информационной базе можно представить следующим образом:

Рисунок 2 – Схема многопользовательского варианта работы «1С:Предприятие»

Вроде бы «чего проще» – передать сообщение с одной клиентской части на другую?

Но! Клиентские процессы работают каждый в своей рабочей области и не имеют пересечений. Единственная возможность передачи информации – через серверную часть.

И здесь кроется очередное «Но!» – как упоминалось ранее, серверная часть не может инициировать клиентский вызов. А это значит, что для обнаружения новых сообщений в существующей системе необходимо организовать периодический мониторинг клиентом серверной части. Выглядеть это будет примерно следующим образом:

Рисунок 3 – Схема запуска клиентской частью обработчика ожидания для периодического запроса к серверной части

Как видим, общение клиентских частей таким образом возможно, но оно имеет свои особенности.

Например, подобное решение будет нагружать клиентские сеансы дополнительным фоновым процессом для проверки системы на наличие новых сообщений или запросов на инициацию голосовых вызовов. Также при подобной схеме работы не получится избежать задержки при получении входящих.

Но самое главное: увеличится нагрузка на самое узкое место системы – соединение между клиентом и сервером (особенно в момент передачи потока медиа). Поэтому фирме «1С» надо было найти иное решение задачи взаимодействия пользователей.

Давайте разберём, что же предстояло сделать разработчикам платформы для встраивания в «1С:Предприятие» механизма обмена текстовыми и видео-сообщениями.

Во-первых, необходимо дать пользователям возможность отправлять и принимать сообщения (в том числе служебных – для инициации видео-вызовов):

Рисунок 4 – Отправка сообщения

Во-вторых, должен быть налажен механизм транспорта исходящих и входящих сообщений:

Рисунок 5 – Транспорт исходящего сообщения

Причём желательно иметь возможность оперативного получения информации о поступлении новых сообщений.

Рисунок 6 – Транспорт входящего и информирование о поступлении нового сообщения

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

Рисунок 7 – Канал для передачи сообщений между пользовательскими сеансами

Понятное дело, что пользователей может быть больше двух. А значит, организовывать прямой канал «клиент» – «клиент» нецелесообразно, нужен некий «маршрутизатор» – серверная часть «Системы взаимодействий».

Рисунок 8 – Схема серверной части «Системы взаимодействий». Первое приближение

Встроить этот «маршрутизатор» в серверную часть «1С:Предприятие», по уже понятным нам причинам, нецелесообразно. Поэтому («в-третьих»), дополнительно необходимо определиться с расположением серверной части «Системы взаимодействий».

Итак, у нас получилось несколько «пазлов», сложив которые, мы увидим полную картину о «Системе взаимодействий». Давайте прямо сейчас это и сделаем!

Серверную часть «Системы взаимодействий» разработчики фирмы «1С» реализовали в виде отдельного программного продукта «1С:Предприятие – Сервер взаимодействия», который в будущем может быть развернут как в рамках локальной сети конкретной организации, так и в интернете в виде сервиса. Клиентскую часть системы разработчики встроили в платформу «1С:Предприятие».

Вопрос с оперативной двусторонней передачей информации между клиентом и сервером «Системы взаимодействий» решился без «изобретения велосипеда»: на помощь пришёл современный протокол WebSocket (далее WS). В качестве «вишенки на торте» – этот протокол позволяет передавать информацию в зашифрованном виде, что обеспечивает защиту передаваемой информации.

Стоит отметить, что при совершении видеовызовов по протоколу WS передается лишь служебная информация для инициализации звонка. Передача видео происходит с использованием других технологий, встроенных в «Систему взаимодействий».

Сложив всё вместе, получаем следующую схему:

Рисунок 9 – Схема работы «Системы взаимодействий». Первое приближение

Итак, «Система взаимодействий» является дополнительным сервисом обмена сообщениями. А значит, там должен быть механизм независимой от 1С регистрации и аутентификации пользователей. Но сложная схема начала работы с новым сервисом означает, что количество желающих попробовать его «на старте» будет невелико, а для массового использования он должен обладать очень и очень весомыми преимуществами.

Получается, для того чтобы этот функционал начали активно использовать даже те, кто работает в программах «1С:Предприятие» давно, необходимо, чтобы он был единым целым с существующей системой, а не «чем-то сбоку». А для этого необходимо, чтобы «Система взаимодействий» «видела» пользователей информационной базы.

Но как «Система взаимодействий» узнает о пользователях информационной базы, если это отдельный сервис?

Разработчики фирмы «1С», на мой взгляд, пошли единственно верным путём – они максимально упростили «точку входа» в сервис.

Платформа самостоятельно выполняет регистрацию, аутентификацию и определение адресатов сообщений. Это возможно благодаря созданию в «Системе взаимодействий» парных пользователей.

Для каждого пользователя в информационной базе 1С создается новый пользователь в «системе взаимодействия». Это происходит автоматически при первой аутентификации пользователя информационной базы после подключения её к сервису. При этом уникальный идентификатор нового адресата для взаимодействий сохраняется как в базе данных, так и в сервисе.

Рисунок 10 – Схема работы «Системы взаимодействий». Второе приближение

Благодаря этому в «Системе взаимодействий» происходит корректная маршрутизация сообщений с привязкой к пользователю информационной базы. А человек, работая в «1С:Предприятие», совершенно не задумывается о том, что использует какой-то дополнительный сервис.

В настоящий момент начать обмениваться сообщениями может любой желающий, даже несмотря на то, что «Система взаимодействий» пока не поставляется в виде отдельного продукта. Дело в том, что фирма «1С» запустила сервер в качестве сервиса «1С:Диалог», по адресу «1cDialog.com».

Получается, что все желающие будут пользоваться одним «маршрутизатором»? Как это возможно, как не запутаться – где чья информационная база и кому можно управлять её подключением к сервису?

Логично, что на уровне сервиса должно происходить глобальное разделение областей данных с информационными базами. По аналогии с другими существующими облачными сервисами от фирмы «1С» в качестве такого разделителя выступает понятие «Абонент». Его олицетворением является некое лицо (юридическое или физическое), которое желает иметь в своих информационных базах возможность обмена мгновенными сообщениями и совершения видеовызовов.

Рисунок 11 – Схема серверной части «Системы взаимодействий». Второе приближение

Идентификация абонента выполняется по адресу электронной почты, и он может являться владельцем одной или нескольких информационных баз, подключенных к «Системе взаимодействий».

Каждое подключение базы регистрируется в сервисе под уникальным идентификатором, который сохраняется как в «Системе взаимодействий», так и в самой информационной базе. Также на обеих сторонах хранятся криптографические ключи для безопасной передачи сообщений между клиентом и сервером с использованием (как мы уже знаем) протокола WS.

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

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

Такой подход позволяет закрыть все потребности в удалённом общении пользователей – от «Марья Ивановна, посмотри отгрузку номер 330 от 31 декабря – там цена почему-то занижена…» до управленческих конференций.

Стоит отметить, что пока нет возможности выполнять групповые видеовызовы, и будет ли развитие в этом направлении – информации на текущий момент нет.

В заключении теоретической части стоит отметить, что сообщения, которыми обмениваются пользователи, не хранятся в информационной базе. Поэтому в настоящий момент при отсутствии подключения к серверу «Системы взаимодействий» на рабочем месте не получится не только отправлять/принимать сообщения, но и увидеть историю сообщений.

Если же в момент отсутствия у пользователя подключения к сервису взаимодействий ему отправлялись сообщения или были попытки совершения видеовызовов, то при следующем подключении он получит оповещение о пропущенных входящих. Это удобно!

Внимание! К моменту публикации этой статьи фирма «1С» уже опубликовала некоторые особенности платформы 8.3.11, в которых сообщается об изменении механизма работы «Системы взаимодействий» в части видеовызовов.

В платформе 8.3.10 технология видеозвонков была реализована при помощи центрального видео-сервера, встроенного в сервер «Системы взаимодействий». Скорее всего, тестирование данного механизма показало большую нагрузку на серверную часть «Системы взаимодействий» при совершении пользователями звонков. И уже в следующей версии платформы [8.3.11] видеовызовы будут выполняться по технологии peer-to-peer.

Также, разработчики «приоткрыли завесу» над технологиями, которые они использовали при создании «Системы взаимодействий». Например, для хранения сессий пользователей, подписок на события и прочей служебной информации они используют распределенное хранилище Hazelcast.

Ну что, наверное уже хочется попробовать «Систему взаимодействий»? Сейчас мы расскажем, как начать её использовать.

Подключение

Начать работать с «Системой взаимодействий» можно на любой, даже пустой, конфигурации, если используется платформа «8.3.10». Для этого необходимо убедиться, что свойство Режим совместимости установлено в значение Не использовать:

Рисунок 12 – Настройка режима совместимости конфигурации

А в конфигурации есть хотя бы один пользователь, и он обладает правом РегистрацияИнформационнойБазыСистемыВзаимодействия:

Рисунок 13 – Настройка роли

Кроме этого, на компьютерах, где планируется использовать обмен сообщениями, должен быть открыт доступ по URL к серверу «Системы взаимодействий». Так как сейчас сервер доступен исключительно в виде сервиса, то на рабочих местах не должно быть запрета на адрес «wss://1cdialog.com:443».

Когда условия в информационной базе соблюдены, можно начинать использовать «Систему взаимодействий». Для этого необходимо её сначала подключить к сервису «1С:Диалог». Управление подключением к «Системе взаимодействий» производится в пользовательском режиме «1С:Предприятие» при помощи соответствующей стандартной функции, доступной через главное меню программы в разделе Все функции:

Рисунок 14 – Меню подключения к «Системе взаимодействий»

В случае, если информационная база ещё не подключена к сервису «1С:Диалог», откроется следующая форма:

Рисунок 15 – Окно управления подключением к «Системе взаимодействий». Подключение отсутствует

Регистрация в системе происходит по двухступенчатому принципу: сначала на сервер отсылается запрос с указанием электронной почты абонента сервиса и идентификатора информационной базы, а затем при помощи кода подтверждения происходит завершение регистрации. Поэтому при подключении необходимо сначала воспользоваться кнопкой Получить код, по которой откроется диалог для ввода электронной почты:

Рисунок 16 – Окно управления подключением к «Системе взаимодействий». Запрос кода регистрации

Что примечательно, после ввода в строку даже одного символа кнопка Получить код становится активной, следовательно на данном этапе нет проверки введенного текста на соответствие маске электронной почты. При нажатии на кнопку Получить код система выдаст сообщение о том, что «Код регистрации выслан на адрес …», и откроется диалоговое окно подтверждения регистрации.

Также отметим, что указание существующего адреса электронной почты не всегда приводит к ожидаемому результату. Автору так и не удалось дождаться письма с кодом подтверждения регистрации на его активный адрес бесплатного почтового сервера mail.ru. Зато с «импортным» gmail.com таких проблем не возникло.

Когда вы укажете адрес электронной почты, на который сервис «1С:Диалог» сможет выслать регистрационную информацию, на него придёт письмо примерно следующего содержания:

Рисунок 17 – Пример письма с кодом регистрации в «Системе взаимодействий»

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

Рисунок 18 – Окно управления подключением к «Системе взаимодействий». Регистрация

Интуитивно понятно, что в поле Адрес электронной почты абонента необходимо указать электронную почту, которая была использована на первом шаге регистрации, а в поле Код регистрации – код из письма. При указании некорректных данных в этих полях ввода «Система взаимодействий» вернёт ошибку «Отказано в доступе» и регистрация не будет завершена.

Поле Наименование информационной базы заполняется произвольными символами (как показала практика, можно использовать даже спец. символы).

Напомню, что идентификация информационной базы в «Системе взаимодействий» происходит по Уникальному идентификатору, который автоматически создаётся в момент регистрации, хранится и в «Системе взаимодействий» и в базе данных и не может быть установлен или изменён самостоятельно. Символы, введённые в поле Наименование информационной базы, никакого влияния на это не оказывают.

В случае, если вам удастся соблюсти все требования и произвести нехитрые манипуляции по регистрации без ошибок, «1С:Предприятие» наградит вас за это следующим сообщением:

Рисунок 19 – Окно управления подключением к «Системе взаимодействий». Успех!

После этого в текущем сеансе «1С:Предприятие» объекты «Системы взаимодействий» автоматически активизируются без перезапуска клиента. Остальным пользователям для получения возможности участвовать в обсуждениях и получать/выполнять звонки, необходимо выполнить перезапуск сеанса работы в информационной базе.

На этом регистрация в «Системе взаимодействий» завершена. Читателю может показаться, что процесс сложный и затянутый, но на самом деле это не так. Регистрация информационной базы в «Системе взаимодействий» может быть выполнена меньше чем за минуту.

Стоит отметить, что сервис 1cDialog.com пока работает в тестовом режиме. Поэтому доступ к видеозвонкам ограничен и предоставляется только по запросу в службу технической поддержки по адресу электронной почты [email protected] В этом письме-запросе необходимо указать:
  • Регистрационный номер лицензионной программы 1С и ИНН организации, на которую приобреталась эта программа
  • Электронную почту абонента сервиса
  • Планируемое количество пользователей.

Каждая заявка анализируется, и по результатам рассмотрения открывается доступ к видео-вызовам или присылается отказ.

Доступ к тестированию видеозвонков открывается абоненту и действует на все информационные базы, подключенные этим абонентом к сервису.

Использование «Системы взаимодействий» «в картинках»

А теперь заглянем в использование системы. Но только совсем чуть-чуть… Как говорится – «для затравочки»!

Рисунок 20 – Неконтекстное обсуждение. Информирование о поступлении нового сообщения

Рисунок 21 – Неконтекстное обсуждение. Переписка

Рисунок 22 – Контекстное обсуждение

Рисунок 23 – Контекстный видеозвонок «Второго пользователя» «Первому»

Вместо заключения

В заключение автору хотелось бы озвучить свои впечатления и мысли, возникшие в ходе тестирования «Системы взаимодействий».

Механизм получился очень интересный, перспективный и отвечающий веяниям времени. Удалённое взаимодействие и электронное общение всё глубже укореняются в нашей жизни, а время становится всё более «дорогим».

Теперь не надо будет при приёме на работу нового сотрудника создавать ему аккаунт в мессенджере для общения по рабочим вопросам. А пользователям не надо переключаться между окнами и уметь пользоваться разными инструментами для электронного общения. Вести учёт и переписку теперь стало возможным в режиме одного окна, без использования сторонних средств!

И напоследок для раздумий и дискуссий в комментариях – фантазии автора (это исключительно мнение автора, которое не имеет ничего общего с мнением команды «Курсы-по-1С» и, тем более, с официальными источниками фирмы «1С»):

  1. Спустя тестовый период использования, сервис 1cDialog.com станет «условно бесплатным»
  2. В рамках договора сопровождения ИТС уровня ПРОФ будет бесплатно предоставляться возможность использования «Системы взаимодействий» ограниченному количеству пользователей
  3. Возможность совершать видеовызовы будет платной даже для категории пользователей, подпадающих под п. 2
  4. Отдельный сервер «Системы взаимодействий» будет являться самостоятельной позицией прайса фирмы «1С»
  5. Появится возможность общаться между собой у пользователей разных информационных баз, а может быть, даже баз, принадлежащих разным абонентам.

А на ваш взгляд, какова вероятность воплощения в жизнь этих фантазий? Пишите в комментариях!

Об авторе

Автор статьи – Павел Ванин

г. Владимир

E-mail: [email protected]

PDF-версия статьи для участников группы ВКонтакте

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в нее – сделайте это сейчас, и в блоке ниже (на этой странице) появятся ссылки на скачивание материалов.

Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кэш браузера или подписаться через другой браузер.

Особенности 8.3.13 | Gilev.ru | Ускоряем 1С:Предприятие

Реализована поддержка СУБД PostgreSQL версии 10. (смотрите также https://postgrespro.ru/blog/news/3876555?fbclid=IwAR0ivfJaOBWJ7p7IDK4-nAdS3cBmHmtgV6aEcdsA9fB_T8_CkDkWPhdwK1w)

Оптимизация работы с PostgreSQL
Оптимизирована работа виртуальных таблиц оборотов регистров накопления и бухгалтерии в случае использования группировок по дню, месяцу или году, а также при использовании функции языка запросов НачалоПериода(). Оптимизация используется для любых версий поддерживаемых СУБД, кроме Microsoft SQL Server, где оптимизация действует, начиная с версии 2012.

 

Реализована возможность оценивать использование процессора за время работы сеанса:

  • за текущий серверный вызов;
  • за последние 5 минут;
  • за все время работы сеанса.

Для события <CALL> реализовано свойство CpuTime, которое содержит длительность завершившегося серверного вызова, в микросекундах.

Изменение структуры.
Для регистров сведений реализовано формирование кластерного индекса по измерениям для физических таблиц среза первых и среза последних. Описание структуры индекса (см. здесь). Отключен контроль уникальности индексов. Оптимизированы запросы получения данных из таблиц срезов. Построение новых индексов выполняется во время реструктуризации соответствующего регистра сведений или при выполнении реструктуризации базы данных во время выполнения операции тестирования и исправления.

Новые конструкции запросов. Реализована возможность создания поля с уникальными (в рамках одной таблицы), последовательно возрастающими значениями. Реализована функция языка запросов АВТОНОМЕРЗАПИСИ(), которая может быть использована только при создании временной таблицы.Не поддерживается использование функции АВТОНОМЕРЗАПИСИ():

  • в запросах, содержащих ОБЪЕДИНИТЬ на верхнем уровне;
  • в запросах, не формирующих временную таблицу;
  • вне списка выборки;
  • в выражениях.

Реализован объект КонстантаКлючЗначения.Для менеджера константы реализованы методы СоздатьКлючЗначения(). Новый формат временных файлов будет использоваться после отключения режима совместимости. В режиме совместимости с версией 8.3.12 поведение не изменилось.

В том случае, если в запросе используется оператор В с подзапросом, то вместо подзапроса будет использоваться соединение с таблицей, которая используется в операторе В. Данная замена применяется только в том случае, если в результате замены не изменяется результат запроса.  В режиме совместимости с версией 8.3.12 поведение не изменилось.

Оптимизация для облаков.
Уменьшен размер временных файлов, создаваемых платформой при обновлении индекса полнотекстового поиска. Данное изменение наиболее заметно в информационных базах с большим количеством разделителей. Новый формат временных файлов будет использоваться после отключения режима совместимости. В режиме совместимости с версией 8.3.12 поведение не изменилось.

Фоновики.
Реализована возможность ожидать завершение работы одного или нескольких фоновых заданий в течение заданного промежутка времени. Реализован метод ОжидатьЗавершенияВыполнения() для объектов ФоновоеЗадание и МенеджерФоновыхЗаданий. Метод ОжидатьЗавершения() считается устаревшим и не рекомендуется к использованию. Рекомендуется выполнить анализ прикладного решения и изменить алгоритмы работы с фоновыми заданиями.
Оптимизирован запуск и ожидание завершения фоновых заданий

 

Старт клиента.
Реализована возможность отключать отображение заставки при старте клиентского приложения. Реализован параметр командной строки запуска клиентского приложения DisableSplash. Параметр доступен для тонкого клиента, толстого клиента и веб-клиента.

Оптимизирована и ускорена отрисовка заголовков страниц (закладок) при работе в веб-клиенте.

Обновление используемых библиотек

  • Библиотека LibEtPan обновлена до версии 1.8.
  • Библиотека WebSocket обновлена до версии 0.7.0.
  • Драйвер Micosoft JDBC Driver for SQL Server обновлен до версии 6.2.
Маки.
Реализовано событие технологического журнала <MACCERT>. Запись опубликована автором admin в рубрике 1с сервер, postgresql, Администрирование, Без рубрики, производительность, тюнинг. Добавьте в закладки постоянную ссылку.

Услуги программирования — PHP, MySQL, сервисы с помощью REST, SOAP, WebSocket

 

Если вы искали профессионалов, лучших программистов, то вы по адресу!

Компания TrendKey предлагает услуги программирования всем для различных проектов и отраслей. Мы гарантируем высокое качество разработки и оказание услуг по программированию.

 

Технологическое развитие диктует правила развития компании. Для успешного развития и получения высокой прибыли компании внедряют автоматизированные решения, CRM-системы, систему 1С. Каждое решение требует полной интеграции в инфраструктуру компании, интеграции с другими программами, что может реализовать php программист.

У нас работают специалисты различных направлений: web программист PHP, программист mysql, программист 1C Битрикс.

Накопленный опыт мы применяем на практике. В нашей команде работают компетентные сотрудники, которые совершенствуют свои навыки и применяют в реализации сложных проектных решений. Мы знаем, как получить превосходный результат, в соответствии с вашими рекомендациями и ожиданиями.

 

 TrendKey видит программирование как одно из своих основных направлений

 

Новые технологии — мгновенное применение:

  • PHP. Весь код мы оформляем в международном формате psr
  • MySQL
  • Интегрируемся в сторонние сервисы с помощью REST, SOAP, WebSocket

 

Что мы умеем?

  • Разработка модулей для Битрикс и Cs-cart
  • Автоматизация логистики
  • Сложные интеграции с системами
  • Интеграции с 1С, Мой Склад, Склад365
  • Индивидуальные доработки под бизнес-процессы
  • Интеграции с SaaS-системами

 

Предоставление услуг программирования — это одно из передовых направлений компании TrendKey, которая уделяет максимум внимания каждому клиенту и предоставляет высококачественный сервис.

 

Если вы колеблетесь с выбором — используйте бесплатную консультация у программиста Битрикс 24. Будем рады работать вместе!

 

 

Автоматическое поднятие карточки клиента через WebSocket Binotel. Решение основных ошибок

Список возможных ошибок
1. Решение проблемы, если перестали работать функция автоматического поднятия карточки клиента, организованная через сервис «WebSocket Binotel».

Решение, перечисленных выше, ошибок.

1. Вопрос:
Перестала работать функция автоматического поднятия карточки клиента, организованная через сервис «WebSocket Binotel».
Ответ:

Последовательность выявления причины неполадки:
1. Проверить запущена ли служба «Websocket Client Binotel», если нет, запустить, рис. 1. 
 Если служба выключена, то журнал по работе службы можно найти в системном журнале, рис. 4, рис. 5.

При возникновении разрыва соединения автоматически будут производится периодические попытки повторного подключения.

2. Проверить последние записи LOG-файла работы службы «Websocket Client Binotel» (находится в папке рядом с EXE-файлом службы, рис. 2, рис.3).

В лог-файлах все должно быть понятно системному администратору, по ним можно понять на какой стороне проблема. На стороне виртуальной АТС «Бинотел» или в 1С.

Примеры, что можно увидеть в лог-файле работы службы «Websocket Client Binotel»:

  • Поступают ли сообщения от Бинотел

Подобные записи имеют следующий вид:

06.09.2019 15:52:26: {«eventName»: ……

  • Есть ли ошибки соединения с сервисом «WebSocket Бинотел»:

Подобные записи имеют следующий вид:

06.09.2019 11:33:21: ERROR: Connect timed out.(Error code 1)


Рис. 1. Журнал «Службы». Служба «Websocket Client Binotel» работает.


Рис. 2. Карточка службы «Websocket Client Binotel», каталог, где находится служба.


Рис. 3. Лог-файл работы службы «Websocket Client Binotel».


Рис. 4. Журнал системных событий. Запись в журнале, что служба «WebSocket Client Binotel» остановлена.


Рис. 5. Журнал системных событий. Запись в журнале, что служба «WebSocket Client Binotel» запущена.

3. Если после многократных попыток соединение не восстановлено тогда:

  1. Проверить сеть (доступность интернета на сервере, где установлена служба).

  2. Проверить работает ли виртуальная АТС «Бинотел».

  3. Проверить работу службы вручную, используя расширение браузера (напр. Simple Websocket Client https://chrome.google.com/webstore/detail/simple-websocket-client/pfdhoblngboilpfeibdedpjgfnlcodoo?hl=ru)

Если после подключения приходит запрос авторизации:

{«status»:»Connected to Binotel WebSocket. Please, authorise!»,»connectedAt»:1567775879}

Значит все OK.

    4. Если ничего не помогло, обратитесь в службу поддержки компании ЭНСИТИ, написав обращение на почту: [email protected]

    Компания «ЭНСИТИ»
    www.nct.ua
    [email protected] 

    Ошибка работы сокетов в Битрикс: Socket error [111]: Connection refused

    При прохождении теста настроек Битрикса часто вылазит ошибка Socket error [111]: Connection refused, причин может быть несколько. Чтобы понять в чем именно причина, можно посмотреть логи проверки, но лучше в командной строке ввести аналогичную команду (по сути, битрикс ее выполняет).

    
      	curl https://ваш_сайт
    	#Если сайт через SSL работает
      	curl https://ваш_сайт:443
    
    

    Битрикс не видит своего домена по URL

    Если наблюдается такая ошибка (ее можно посмотреть в логах проверки битрикса), то необходимо в /etc/hosts прописать 127.0.0.1 ваш_сайт и ваш.IP ваш_сайт (все с новой строчки).

    Ошибка с SSL.


    curl: (60) server certificate verification failed.

    Еще один распространенный вариант — неправильная установка SSL сертификата. Даже если у вас сайт открывается с зеленой полоской, нужно проверить еще раз тут — https://www.sslshopper.com/ssl-checker.html или в командной строке ввести запрос на сайт через curl.

    Лечить данную проблему нужно правильной установкой SSL (логично). Проблему помогает решить внесение ca-bundle к crt сертификату. Чтобы не генерировать ca-bundle, просто возьмите себе тут — https://www.namecheap.com/support/knowledgebase/article.aspx/9393/69/where-do-i-find-ssl-ca-bundle (искать по названию).

    curl: (7) Failed connect to crm.domain.ru:443;


    Connection refused

    Это значит, что исходящее обращение блокируется. Скорее всего, порты для вашего домена закрыты. Чтоыб проверить, нужно ввести команду

    
      nmap -p80,443 crm.domain.ru
    
    #если выдаст такое, значит порты закрыты
    Starting Nmap 6.40 ( http://nmap.org ) at 2017-08-29 18:07 MSK
    Nmap scan report for crm.capitalest.ru (192.2.2.2)
    Host is up (0.00043s latency).
    PORT    STATE  SERVICE
    80/tcp  closed http
    443/tcp closed https
    
    

    Данная проблема лечится, как и писал выше, добавлением в /etc/hosts строчки 127.0.0.1 ваш_сайт и ваш.IP ваш_сайт (все с новой строчки).

    Разработка 1С: 1С сервер взаимодействия. Установка на windows server 2019 — видео — Разработка 1С

    Привет программист 1С, с вами Низамов Илья. В данном видео я покажу как установить 1с сервер взаимодействия на windows server 2019. Устанавливать будем сервер взаимодействия версии 8.0.15. В следующих видео мы рассмотрим различные варианты использования сервера взаимодействия при работе в 1С, в том числе и новую возможность по созданию ботов. Так что подписывайтесь на канал, ставьте лайк если видео было полезным, а если ставите дизлайк, то обязательно напишите в комментариях почему. Я читаю все комментарии, прислушиваюсь к замечаниям и улучшаю контент для вас.localhost:8087/rs/healthring cs —instance cs websocket set-params —hostname localhostring cs —instance cs websocket set-params —port 9000На занятии разберем использование ботов в системе взаимодействия 1С:nizamov.school/courses/integration1s/telegram1s?utm_source=youtubeСкачать все материалы и почитать статьи можете на моем сайте в блоге: nizamov.schoolДобавляйтесь в друзья:►ВКонтакте: vk.com/id300336536►Instagram: www.instagram.com/ilya.nizamov►Twitter: twitter.com/Nizamov102►Facebook: www.facebook.com/ilya.nizamov►Telegram: t.me/IlyaNizamovВступайте в группы и сообщества:►ВКонтакте: vk.com/nizamov.studio►Facebook: www.facebook.com/groups/153349492011645/►Telegram: t.me/nizamov_studio_1cСотрудничество и предложения:►Mail: [email protected]►Skype: Region102102►WhatsApp: +7 (917) 449-09-97Еще больше полезностей:Уроки 1С: www.youtube.com/watch?v=6eYogh5OIlk&list=PLkvJd0RKh5mlJ8piNfYvpi8fgoFJ5hkUFМобильная разработка 1С: www.youtube.com/watch?v=e4mq2I8wtU4&list=PLkvJd0RKh5mkt3hA-ttps0ewqp9b3YAKmМои разработки: www.youtube.com/watch?v=Zi4RADuGWRc&list=PLkvJd0RKh5mmU-S2atbbPuOIg_pTE0a9vОптимизация 1С: www.youtube.com/watch?v=po4uiAwBW8s&list=PLkvJd0RKh5ml0ftU96e5lYy5XxmBNKelRМодуль выгрузки на АВИТО из 1С: www.youtube.com/watch?v=cs7LzDCo0uo&list=PLkvJd0RKh5mlMU3P9wIe8ap5jUVg69PfcНемного обо мне:Мне 36, родился в г.Нижневартовск, живу в Уфе. Хобби гитара, фото. Веду здоровый образ жизни (не пью, не курю, немного занимаюсь спортом). Так как детства занимаюсь программированием, изучал Assembler, C++, Delphi, SQL, 1С 8.1-8.3, Foxpro, SCADA TraceMode, HTML5/CSS, PHP, JS, Java, то сейчас развиваю свой бизнес, связанный с программированием и обслуживанием 1С. Работал в компаниях от 100 до 30 000 человек, поддерживал и настраивал сервера для работы 300+ пользователей. Подробнее о моем трудовом стаже можете почитать здесь nizamov.studio/o-nas.

    Поля настройки модуля Push&Pull

    Поле Описание
    Состояние модуля Индикация активности модуля.
    Используют модули Список модулей, использующих Push&Pull.
    Отправлять PUSH уведомления на мобильные телефоны Включение отправки уведомлений на мобильные телефоны.
    После включения опции становится активным окно для задания Максимального количества push-уведомлений в пакете при отправке.
    Включить модуль для не авторизованных пользователей Сообщения будут доставляться пользователям, даже если они не авторизованы на сайте.

    Опция неактивна для «Битрикс24 в коробке».

    На сервере установлен и активирован «Push server» Подключение модуля nginx-push-stream-module. Модуль необходим для работы Push-уведомлений, видеозвонков, мобильных задач, «живых» комментариев в блоге, «живых» счетчиков в главном модуле, счетчиков в CRM. После включения модуля становятся активными нижележащие поля.
    На сервер установлена: Указание на используемую виртуальную машину. Доступны значения:
    • Виртуальная машина 4.2 — 4.3 (nginx-push-stream-module 0.3.4)
    • Виртуальная машина 4.4 и выше (nginx-push-stream-module 0.4.0) Внимание! 4.х — устаревшие версии Виртуальных машин. При их использовании недоступна установка числа отправленных команд, указание путей для веб-сокетов и некоторые другие опции. Рекомендуется обновить вашу виртуальную машину до версии не ниже 7.х.
    • Виртуальная машина 7.1 — 7.2 (Bitrix Push server 1.0)
    • Виртуальная машина 7.3 и новее (Bitrix Push server 2.0) — Рекомендуемая установка.
    Настройка адреса для публикации команд со стороны сервера
    Путь для публикации команд Укажите пути до папки с командами.
    Код-подпись для взаимодействия с сервером Ключ, которым подписываются сообщения, отправляемые на пуш-сервер. Рекомендуется для создания ключа использовать случайную строку длиной от 32 символов. Ключ указывается в настройках пуш-сервера:
    /push-server/config/config.json:
    "security": {
            "key": 

    В виртуальной машине это поле создается автоматически при первом старте службы или при настройке/обновлении и прописывается в настройки сайта.
    Секретный ключ можно получить в /etc/push-server/push-server-pub-*.json.
    Настройка адреса для публикации команд со стороны клиента
    Путь для публикации команд Пути указываются отдельно по протоколам.
    Настройка адреса чтения команд для браузеров
    Путь для чтения команд Пути указываются отдельно по протоколам. Рекомендуется использовать стандартный порт для HTTP или HTTPS. Используйте 8893 (HTTP) и 8894 (HTTPS) только для версии модуля nginx-push-stream-module 0.3.4
    Настройка адреса чтения команд для браузеров с поддержкой Web Socket
    Включить поддержку WebSocket Включает использование Веб-сокетов. Активна только при использовании nginx-push-stream-module в версии 0.4.0
    Путь для чтения команд через WebSocket (HTTP) Пути указываются отдельно по протоколам.
    Блокировка работы с модулем на определенных сайтах
    Не использовать модуль на сайтах Активно только при наличии нескольких активных сайтов в системе. Укажите на каких сайтах модуль не должен использоваться. С помощью клавиши Ctrl можно выбрать несколько сайтов.

    Канцелярская кнопка | Документация | Протокол WebSocket-Over-HTTP

    Протокол WebSocket-Over-HTTP — это простой текстовый протокол для шлюза между клиентом WebSocket и обычным HTTP-сервером.

    Почему?

    Generic Realtime Intermediary Protocol (GRIP)

    Pushpin обеспечивает внеполосную инъекцию сообщений в соединения WebSocket. Обычно для использования GRIP с WebSockets требуется соединение WebSocket с обеих сторон прокси:

      Клиент <--WS--> GRIP Proxy <--WS--> Сервер
      

    Прокси-сервер GRIP — это служба публикации / подписки.Когда у сервера есть данные для спонтанной отправки, он не использует свое соединение WebSocket для отправки данных. Скорее, он использует команду внеполосной публикации для прокси (обычно через HTTP POST). Это означает, что соединение WebSocket между прокси и сервером используется почти исключительно для обслуживания входящих запросов от клиента.

    Если канал связи между прокси-сервером и сервером должен только обрабатывать взаимодействия запрос / ответ, тогда HTTP становится жизнеспособной альтернативой WebSocket:

      Клиент <--WS--> GRIP Proxy <--HTTP--> Сервер
      

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

    Конечно, полезность этого шлюза полностью зависит от того, имеет ли сервер возможность отправлять данные клиентам по внеполосному каналу. Таким образом, рекомендуется использовать протокол WebSocket-Over-HTTP в сочетании с GRIP. Однако обратите внимание, что протокол WebSocket-Over-HTTP явно не зависит от GRIP.

    Протокол

    Шлюз и сервер обмениваются «событиями» WebSocket через HTTP-запросы и ответы.Определены следующие события:

    • OPEN — запрос или подтверждение согласования WebSocket.
    • ТЕКСТ , ДВОИЧНЫЙ — сообщения с содержанием.
    • PING , PONG — Пинг и понг сообщения.
    • ЗАКРЫТЬ — Закрыть сообщение с 16-битным кодом закрытия.
    • DISCONNECT — Указывает, что соединение некорректно закрыто или не существует.

    События кодируются в формате, аналогичном кодировке фрагментированной передачи HTTP:

      ТЕКСТ B \ r \ n
    привет мир \ r \ n
      

    Формат — это имя события, пробел, шестнадцатеричное кодирование размера содержимого, возврат каретки и новая строка, байты содержимого и, наконец, еще один возврат каретки и новая строка.

    Для событий без содержимого раздел размера и содержимого можно не указывать:

    События с содержимым: TEXT, BINARY и CLOSE. События без содержимого: OPEN, PING, PONG и DISCONNECT.

    Событие, которое не должно содержать содержимого, МОЖЕТ быть закодировано с помощью содержимого. Получатели должны игнорировать такой контент. Например, это законно:

    Затем одно или несколько закодированных событий объединяются и помещаются в тело HTTP-запроса или ответа с типом содержимого application / websocket-events .

    Пример

    Шлюз открывает соединение:

      POST / целевой HTTP / 1.1
    Идентификатор подключения: b5ea0e11
    Content-Type: application / websocket-events
    [... любые заголовки, включенные клиентским рукопожатием WebSocket ...]
    
    ОТКРЫТЬ \ r \ n
      

    Сервер принимает соединение:

      HTTP / 1.1 200 ОК
    Content-Type: application / websocket-events
    [... любые заголовки для включения в ответ согласования WebSocket ...]
    
    ОТКРЫТЬ \ r \ n
      

    Шлюз передает сообщение от клиента:

      POST / целевой HTTP / 1.1
    Идентификатор подключения: b5ea0e11
    Content-Type: application / websocket-events
    
    ТЕКСТ 5 \ r \ n
    привет \ r \ n
      

    Сервер отвечает двумя сообщениями:

      HTTP / 1.1 200 ОК
    Content-Type: application / websocket-events
    
    ТЕКСТ 5 \ r \ n
    мир \ r \ n
    ТЕКСТ 1C \ r \ n
    вот еще одно приятное сообщение \ r \ n
      

    Шлюз передает сообщение о закрытии:

      POST / целевой HTTP / 1.1
    Идентификатор подключения: b5ea0e11
    Content-Type: application / websocket-events
    
    ЗАКРЫТЬ 2 \ r \ n
    [... двоичный код состояния...] \ r \ n
      

    Сервер отправляет сообщение о закрытии:

      HTTP / 1.1 200 ОК
    Content-Type: application / websocket-events
    
    ЗАКРЫТЬ 2 \ r \ n
    [... двоичный код состояния ...] \ r \ n
      

    Государственное управление

    Заголовки начального запроса согласования WebSocket ДОЛЖНЫ воспроизводиться с каждым запросом, сделанным шлюзом. Это означает, что если клиент использует файлы cookie или другие заголовки для аутентификации, сервер будет получать эти данные с каждым сообщением.

    Шлюз включает заголовок Connection-Id , который однозначно идентифицирует конкретное клиентское соединение.Это могут использовать серверы, которым необходимо отслеживать соединения. Однако в большинстве случаев серверы не должны заботиться о соединениях.

    Можно привязать метаданные к соединению через заголовок Set-Meta- * . Это работает аналогично куки. Сервер может установить поле, которое шлюз должен отображать при всех последующих запросах.

    Например, клиент предоставляет файл cookie, который шлюз передает во время соединения:

      POST / целевой HTTP / 1.1
    Идентификатор подключения: b5ea0e11
    Content-Type: application / websocket-events
    Cookie: [... данные авторизации ...]
    
    ОТКРЫТЬ \ r \ n
      

    Сервер принимает соединение и связывает поле пользователя на основе файла cookie:

      HTTP / 1.1 200 ОК
    Content-Type: application / websocket-events
    Set-Meta-User: Алиса
    
    ОТКРЫТЬ \ r \ n
      

    Теперь любые дальнейшие запросы от шлюза будут включать заголовок мета-пользователя:

      POST / целевой HTTP / 1.1
    Идентификатор подключения: b5ea0e11
    Мета-пользователь: алиса
    Content-Type: application / websocket-events
    
    ТЕКСТ 5 \ r \ n
    привет \ r \ n
      

    Примечание по безопасности: шлюзы НЕ ДОЛЖНЫ ретранслировать какие-либо заголовки от клиента с префиксом Meta- .Это предотвращает подмену привязок метаданных клиентом. Кроме того, серверу необходимо убедиться, что входящий запрос пришел от шлюза, прежде чем доверять своим заголовкам Meta- * .

    Keep Alives

    Если сервер отслеживает соединения, ему потребуется способ надежно определить, когда соединения исчезли. Шлюз будет пытаться отправить события CLOSE или DISCONNECT в максимально возможной степени, но если такие события не будут получены сервером, состояние подключения может сохраниться на стороне сервера.Чтобы обойти это, сервер должен разрешить сохранение активности и тайм-аут соединений, когда они становятся неактивными.

    Чтобы включить поддержку активности, сервер отвечает заголовком Keep-Alive-Interval с указанием значения в секундах:

      HTTP / 1.1 200 ОК
    Content-Type: application / websocket-events
    Keep-Alive-Интервал: 120
      

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

    Обратите внимание, что этот параметр не подтверждается шлюзом, и шлюз может установить минимальное значение. Для совместимости со средами, в которых минимум может быть неизвестен, рекомендуется выбирать консервативное значение, не менее 30 .

    Банкноты

    • Первый запрос ДОЛЖЕН содержать событие OPEN в качестве первого события.
    • Первый ответ ДОЛЖЕН содержать событие OPEN в качестве первого события.
    • Если сервер отслеживает соединения и больше не считает, что соединение существует, он должен ответить DISCONNECT.Однако в большинстве случаев серверы не отслеживают соединения.
    • Шлюз должен иметь только один ожидающий запрос на каждое клиентское соединение. Это гарантирует доставку в порядке.
    • DISCONNECT событие отправляется, только если соединение не было закрыто должным образом. При чистом закрытии подразумевается отключение.


    Магистраль Tomcat (программная) — Случай 4.1.5 : Пройден — 5 мс @ 2014-10-08T13: 13: 08.163Z

    Описание случая

    Отправить небольшое текстовое сообщение, затем отправить кадр с зарезервированным неконтролирующим кодом Opcode = 7 и непустой полезной нагрузкой, затем отправить Ping.

    Case Expectation

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

    Результат дела

    Фактическое событие соответствует как минимум одному ожидаемому.

    Ожидается:
    {‘НЕСТРОГОЙ’: [], ‘OK’: [(‘message’, u’Hello, world! ‘, False)]}

    Наблюдается:
    [(‘ message ‘, u’Hello, world!’, Ложь)]

    Поведение при закрытии корпуса

    Соединение было закрыто правильно (ОК)



    Открывающее рукопожатие

     GET / examples / websocket / echoAnnotation HTTP / 1.1
    Пользовательский агент: AutobahnTestSuite / 0.7.0-0.9.1
    Хост: 192.168.23.9:8080
    Обновление: WebSocket
    Подключение: Обновление
    Прагма: без кеширования
    Cache-Control: без кеширования
    Sec-WebSocket-ключ: chsmV45wUr ++ tH7HJBeuQw ==
    Sec-WebSocket-Версия: 13 
     HTTP / 1.1 101 Протоколы коммутации
    Сервер: Apache-Coyote / 1.1
    Обновление: websocket
    Подключение: обновление
    Sec-WebSocket-Accept: qI9V4wzKGJ79XHvau ++ P0Gax58c =
    Дата: среда, 8 октября 2014 г., 13:13:07 GMT 


    Действия при закрытии

    isServer False Верно, если я (фаззер) являюсь сервером, а одноранговый узел — клиентом.
    closedByMe False Верно, если я инициировал рукопожатие закрытия (то есть сначала отправил close).
    failedByMe False Верно, если мне не удалось установить соединение WS (т.е. из-за ошибки протокола). Сбой может быть вызван либо инициированием закрывающего рукопожатия, либо жестким отбрасыванием TCP.
    dropByMe False Верно, если я разорвал TCP-соединение.
    wasClean Истина Истина, если было выполнено полное рукопожатие закрытия WebSockets (отправлено и получено закрытие кадра) _и_ сервер сбросил TCP (что является его ответственностью).
    wasNotCleanReason Нет Когда wasClean == False, причина произошедшего.
    wasServerConnectionDropTimeout False Когда мы являемся клиентом, и мы ожидали, что сервер сбросит TCP, но этого не произошло вовремя, это принимает значение True.
    wasOpenHandshakeTimeout False При выполнении открывающего рукопожатия, но одноранговый узел не завершил вовремя, это принимает значение True.
    wasCloseHandshakeTimeout False Когда мы инициировали завершающее рукопожатие, но одноранговый узел не ответил вовремя, это получает True.
    localCloseCode 1000 Код закрытия, который я отправил в кадре закрытия (если есть).
    localCloseReason Нет Причина закрытия, которую я отправил в закрытом кадре (если есть).
    remoteCloseCode 1002 Код закрытия, который одноранговый узел отправил мне в закрытом кадре (если есть).
    remoteCloseReason Фрейм WebSocket был отправлен с нераспознанным кодом операции [7] Причина закрытия, по которой одноранговый узел отправил меня в закрытом кадре (если есть).


    Статистика проводов

    октетов, полученных размером нарезки

    15 1 15
    65 1 65
    193 1 193
    Размер нарезки

    кадров, полученных кодом операции

    кадров, переданных кодом операции



    Проволочный журнал

    000 TX OCTETS: 474554202f6578616d706c65732f776562736f636b65742f6563686f416e6e6f746174696f6e20485454502f312e310d0a55 
     7365722d4167656e743a20417574... 
    001 RX OCTETS: 485454502f312e312031303120537769746368696e672050726f746f636f6c730d0a5365727665723a204170616368652d43 
     6f796f74652f312e310d0a557067 ... 
    002 TX FRAME: OPCODE = 1, FIN = True, RSV = 0, PAYLOAD-LEN = 13, MASK = f7f1995a, PAYLOAD-REPEAT-LEN = None, CHOPSIZE = 1, SYNC = False 
     Привет, мир! 
    003 TX OCTETS: 81 
    004 TX FRAME: OPCODE = 7, FIN = True, RSV = 0, PAYLOAD-LEN = 13, MASK = 1c9fefbb, PAYLOAD-REPEAT-LEN = None, CHOPSIZE = 1, SYNC = False 
     Привет, мир! 
    005 TX FRAME: OPCODE = 9, FIN = True, RSV = 0, PAYLOAD-LEN = 0, MASK = 94f91023, PAYLOAD-REPEAT-LEN = None, CHOPSIZE = 1, SYNC = False 
     006 НЕИСПРАВНОСТЬ СОЕДИНЕНИЯ ПОСЛЕ 1.000000 сек 
    007 TX OCTETS: 8d 
    008 TX OCTETS: f7 
    009 TX OCTETS: f1 
    010 TX OCTETS: 99 
    011 TX OCTETS: 5a 
    012 TX OCTETS: bf 
    013 TX OCTETS: 94 
    014 TX OCTETS: f5 
    015 TX OCTETS: 36 
    016 TX OCTETS: 98 
    017 TX OCTETS: dd 
    018 TX OCTETS: b9 
    019 TX OCTETS: 2d 
    020 TX OCTETS: 98 
    021 TX OCTETS: 83 
    022 TX OCTETS: f5 
    023 TX OCTETS: 3e 
    024 TX OCTETS: d6 
    025 TX OCTETS: 87 
    026 TX OCTETS: 8d 
    027 TX OCTETS: 1c 
    028 TX OCTETS: 9f 
    029 октетов приема: 810d48656c6c6f2c20776f726c6421 
    030 RX FRAME: OPCODE = 1, FIN = True, RSV = 0, PAYLOAD-LEN = 13, MASKED = False, MASK = None 
     Привет, мир! 
    031 TX OCTETS: ef 
    032 RX OCTETS: 883f03ea4120576562536f636b6574206672616d65207761732073656e74207769746820616e20756e7265636f676e697365 
     64206f70436f6465206f66205b37... 
    033 RX FRAME: OPCODE = 8, FIN = True, RSV = 0, PAYLOAD-LEN = 63, MASKED = False, MASK = None 
     0x03ea4120576562536f636b6574206672616d65207761732073656e74207769746820616e20756e7265636f676e69736564 
     206f70436f6465206f66205b375d ... 
    034 TX FRAME: OPCODE = 8, FIN = True, RSV = 0, PAYLOAD-LEN = 2, MASK = 7b87a210, PAYLOAD-REPEAT-LEN = None, CHOPSIZE = None, SYNC = False 
     0x03e8 
    035 TX OCTETS: bb 
    036 TCP ОТКЛЮЧЕНО ПЕРОМ 


    WebSocketProxy на отдельном хосте

    Страницы функций — это проектные документы, которые разработчики создали во время совместной работы над oVirt.

    Большинство из них устаревшие , но содержат исторический контекст дизайна.

    Это , а не пользовательская документация и не должны рассматриваться как таковые.

    Документация доступна здесь.

    Сводка

    Цель этой функции — улучшить настройку движка, позволяя полностью автоматизировать установку и настройку WebSocketProxy на второй машине, где движок не работает.

    Владелец

    • Имя: Симоне Тирабоски (стирабос)

    Текущее состояние

    • Завершен
    • Последнее обновление — пользователем (WIKI)

    Подробное описание

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

    В настоящее время уже можно запустить WebSocketProxy на отдельном хосте, но это требует ручной процедуры. То, что мы предлагаем, немного автоматизирует процесс установки, делая его проще, но при этом требуя некоторых ручных действий на обоих машинах.

    Предположение:

    • Пользователь должен установить необходимые RPM на обоих машинах
    • Пользователь должен запустить настройку двигателя на обеих машинах.
    • Этот процесс относится к новой установке, но обновление ovirt-engine-websocket-proxy не должно вызывать проблем.
    • Два хоста должны быть установлены в строгом порядке:
      • первый хост с движком для установки также CA
      • , чем хост с веб-прокси

    При этих предположениях это может работать следующим образом:

    • На первом узле:
      1. Через yum пользователь устанавливает необходимые обороты на первой машине (двигательной)
      2. Затем он может запустить установку двигателя
      3. engine-setup спросит о конфигурации двигателя; пользователь должен выбрать ДА, чтобы установить туда двигатель.
    • На втором узле:
      1. Через yum пользователь установите необходимый RPM (yum install ovirt-engine-websocket-proxy)
      2. Затем он может запустить установку двигателя
      3. Если пользователь также установил обороты двигателя, программа настройки двигателя спросит о конфигурации двигателя; пользователь должен выбрать НЕТ. Вместо этого он должен выбрать настройку прокси-сервера websocket
      4. .
      5. , подтверждая, что механизм не настраивается, в настройке ядра отображается инструкция по настройке удаленного механизма для взаимодействия с прокси-сервером websocket на этом хосте, в частности:
        1. он показывает команду для настройки на хосте движка нового местоположения прокси-сервера websocket (через engine-config)
        2. поддерживает настройку сертификата прокси-сервера websocket, предлагая необходимые команды; это может произойти двумя разными способами:
          1. inline: настройка движка генерирует и печатает CSR на экране, пользователь должен вставить его на хост движка в хорошо известный путь, подписать его, а затем вставить обратно подписанный сертификат в пользовательский интерфейс настройки движка
          2. на основе файла: не сильно отличается от предыдущего, CSR не отображается на экране, а сохраняется во временном файле, пользователь должен скопировать его на другой хост, чтобы подписать его, а затем скопировать обратно подписанный файл сертификата с указанием локального пути при необходимости
      6. Установка двигателя
      7. также запрашивает fqdn двигателя для автоматической загрузки сертификата двигателя

    В конце прокси-сервер WebSocket работает на другом хосте, чтобы подключиться к нему из вашего браузера, доверяющего сертификату движка, этого недостаточно (потому что теперь у нас два хоста), поэтому пользователь должен загрузить сертификат CA и явно доверять ему в его браузере.Сертификат CA можно загрузить с http: // /ca.crt

    .

    Две виртуальные машины были созданы с установленной Fedora 19. Они называются «f19t11» (для движка) и «f19t12» (для веб-прокси).

    Двигатель

    Установить двигатель как обычно на первый хост.

    Прокси-сервер WebSocket

    Добавить ovirt-engine-websocket-proxy на второй хост

      [root @ f19t12 ~] # yum install ovirt-engine-websocket-proxy
      

    Затем на втором хосте запустите настройку движка

      [root @ f19t12 ~] # настройка двигателя
      [INFO] Этап: инициализация
      [INFO] Этап: настройка среды
                Файлы конфигурации: []
                Файл журнала: / var / log / ovirt-engine / setup / ovirt-engine-setup-20140919173308-96y9sa.бревно
                Версия: otopi-1.3.0_master (otopi-1.3.0-0.0.master.20140911.git7c7d631.fc19)
      [INFO] Этап: Настройка пакетов среды
      [INFO] Этап: обнаружение программ
      [INFO] Этап: настройка среды
      [INFO] Этап: настройка среды
               
                - == ОПЦИИ ПРОДУКТА == -
               
                Настройте прокси WebSocket на этом хосте (Да, Нет) [Да]:
      

    Выберите Да здесь

      Программа установки может автоматически настроить брандмауэр в этой системе.Примечание: автоматическая настройка брандмауэра может перезаписать текущие настройки.
                Вы хотите, чтобы программа установки настроила брандмауэр? (Да, Нет) [Да]:
      [ИНФОРМАЦИЯ] iptables будет настроен как менеджер межсетевого экрана.
                Полное DNS-имя хоста этого сервера [f19t12.localdomain]:
      [INFO] Этап: проверка настройки
               
                - == ПРОСМОТР КОНФИГУРАЦИИ == -
               
                Обновить брандмауэр: True
                Полное доменное имя хоста: f19t12.localdomain
                Менеджер межсетевого экрана: iptables
                Настроить прокси WebSocket: True
               
                Подтвердите настройки установки (OK, Отмена) [OK]:
      [INFO] Этап: настройка транзакции
      [INFO] Остановка службы websocket-proxy
      [INFO] Этап: Разная конфигурация
      [INFO] Этап: установка пакета
      [INFO] Этап: Разная конфигурация
      [ИНФОРМАЦИЯ] Настройка прокси-сервера WebSocket
               
                ВНИМАНИЕ
               
                На хосте двигателя требуются ручные действия
                чтобы зарегистрировать сертификаты для этого хоста и настроить механизм для этого.Пожалуйста, выполните эту команду на хосте движка:
                   Engine-config -s WebSocketProxy = f19t12.localdomain: 6100
                а затем перезапустите службу двигателя, чтобы она стала эффективной.
      

    Подключиться к первому (движку) хосту и выполнить там предложенную команду

      [root @ f19t11 ~] # engine-config -s WebSocketProxy = f19t12.localdomain: 6100
      [root @ f19t11 ~] # перезапуск службы ovirt-engine
      Перенаправление в / bin / systemctl перезапустите ovirt-engine.служба
      

    обратно на второй хост:

      Вы предпочитаете управлять запросом и ответом на подпись сертификата?
                встроенные или мысленные файлы поддержки? (Встроенные, Файлы) [Встроенные]:
      

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

      Выпустите сертификат прокси WebSocket на основе этого запроса сертификата
      

    Это запрос сертификата:

      D: МНОГОСТРОЧНЫЙ WSP_CERTIFICATE_REQUEST - = 451b80dc-996f-432e-9e4f-2b29ef6d1141 = -
      ----- НАЧАТЬ ЗАПРОС СЕРТИФИКАТА -----
      MIICRDCCASwCADAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzFNa
      PAFK0votbVDN + QfMarcXmpq1gq2zzCM3PU19Fnz + ULcgUqb7B2wQBYgTtRUQfswu
      XyB + Ki + O53 + CUPWlVfwlxENmqyj5zCe4MiVHr09SCnztdtgVoPKOJThyviWbVW3Q
      iTNaTLOo7eBejfiBlFEnh25HkRSrm6HvMsFPgdolKopfZqxBeKZqT4BOS4qk4Y + B
      B2vthcKlLnTdyzIeDyUPsFkYritwU0DuNyQw4F3O5tdJGmW / Xc3GWLgHbILMXF9N
      Y1c4WOvD5hmsrEc1G8jXb0xmBzHfyUTve84V4pl + PVwQjIHXihOoi8x4R3tM2IBC
      5 + sPDbJsBBMdEJ9G7QIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAL6jeqY6RydJ
      7ON5Bye45m / amscASpC4YknG28zBRAJTvsUDOPMhqm / JC / keQe1dNJ / 951lbQ5ob
      5Dzgz5lBQ9LGPpqozAfX930Gw + VsajL8RT0VgTtgaUt9G4iiUNObaRkBLALscBXG
      kUJ2kEyvd9vrsU / bGZ69mHmsK3eSV5aW4AKLoeUoWlnJqhfh9Dun6xWt9bLpQ7NH
      ku4pFXrRQ6aAiL88XT1vjvWI8DTit50atgxNZuY6m + ETeAUfcXtNM0pEVnMXr + s6
      rzI7Rgz + oLQOX4h0s0yaIHZk + OUPk5i + rQUZUeSXDpVl + UtntgjOB7fRECKXsNza
      23hFCulH9ok =
      ----- КОНЕЦ ЗАПРОСА СЕРТИФИКАТА -----
      - = 451b80dc-996f-432e-9e4f-2b29ef6d1141 = -
               
                Зарегистрируйте сертификат SSL для прокси-службы websocket.Это можно сделать с помощью внутреннего CA двигателя, если сторонний CA недоступен,
                с этой последовательностью:
                1. Скопируйте и сохраните запрос на сертификат по адресу
                    /etc/pki/ovirt-engine/requests/websocket-proxy-f19t12.localdomain.req
                на хосте двигателя
      

    Как предложено, сохраните этот запрос сертификата по предложенному пути на хосте ядра.

      2. Выполните на хосте механизма эту команду для регистрации сертификата:
                 / usr / share / ovirt-engine / bin / pki-enroll-request.ш \
                     --name = websocket-proxy-f19t12.localdomain \
                     --subject = "/ C =` <страна> `/ O =` <организация> `/CN=f19t12.localdomain"
                Замените `<страна>`, `<организация>` в соответствии с вашей средой
                (т.е. значения должны совпадать со значениями в центре сертификации вашего движка)
               3. Сертификат будет доступен по адресу
                    /etc/pki/ovirt-engine/certs/websocket-proxy-f19t12.localdomain.cer
                на хосте движка, при необходимости вставьте это содержание сюда
      

    Снова подключитесь к хосту двигателя, чтобы выполнить предложенную команду.Вам также необходимо знать страну и организацию, которые использовались для CA, если вы не знаете:

      [root @ f19t11 ~] # openssl x509 -in /etc/pki/ovirt-engine/certs/ca.der -noout -subject
      subject = /C=US/O=localdomain/CN=f19t11.localdomain.84133
      

    , поэтому используйте их, чтобы завершить предложенную команду и выполнить ее на хосте движка

      [root @ f19t11 ~] # /usr/share/ovirt-engine/bin/pki-enroll-request.sh --name = websocket-proxy-f19t12.localdomain --subject = "/ C = US / O = localdomain / CN = f19t12.localdomain "
      Использование конфигурации из openssl.conf
      Убедитесь, что запрос соответствует подписи
      Подпись ОК
      Отличительное имя подопытного выглядит следующим образом
      countryName: ДЛЯ ПЕЧАТИ: "США"
      имя_организации: ПЕЧАТЬ: 'локальный домен'
      commonName: PRINTABLE: 'f19t12.localdomain'
      Сертификат должен быть сертифицирован до 24 августа 15:47:58 2019 по Гринвичу (1800 дней)
      Записать базу данных с 1 новой записью
      База данных обновлена
      

    Сертификат будет доступен по предложенному пути, то есть на хосте движка:

      [корень @ f19t11 ~] # cat / etc / pki / ovirt-engine / certs / websocket-proxy-f19t12.localdomain.cer
      Сертификат:
          Данные:
              Версия: 3 (0x2)
              Серийный номер: 4121 (0x1019)
          Алгоритм подписи: sha1WithRSAEncryption
              Эмитент: C = US, O = localdomain, CN = f19t11.localdomain.84133
              Срок действия
                  Не раньше: 18.09, 15:47:58 2014
                  Не после: 24 августа, 15:47:58 2019 GMT
              Тема: C = США, O = localdomain, CN = f19t12.localdomain
              Информация об открытом ключе субъекта:
                  Алгоритм открытого ключа: rsaEncryption
                      Открытый ключ: (2048 бит)
                      Модуль:
                          00: cc: 53: 5a: 3c: 01: 4a: d2: fa: 2d: 6d: 50: cd: f9: 07:
                          cc: 6a: b7: 17: 9a: 9a: b5: 82: ad: b3: cc: 23: 37: 3d: 4d:
                          7d: 16: 7c: fe: 50: b7: 20: 52: a6: fb: 07: 6c: 10: 05: 88:
                          13: b5: 15: 10: 7e: cc: 2e: 5f: 20: 7e: 2a: 2f: 8e: e7: 7f:
                          82: 50: f5: a5: 55: fc: 25: c4: 43: 66: ab: 28: f9: cc: 27:
                          b8: 32: 25: 47: af: 4f: 52: 0a: 7c: ed: 76: d8: 15: a0: f2:
                          8e: 25: 38: 72: be: 25: 9b: 55: 6d: d0: 89: 33: 5a: 4c: b3:
                          a8: ed: e0: 5e: 8d: f8: 81: 94: 51: 27: 87: 5e: 47: 91: 14:
                          ab: 9b: a1: ef: 32: c1: 4f: 81: da: 25: 2a: 8a: 5f: 66: ac:
                          41: 78: a6: 6a: 4f: 80: 4e: 4b: 8a: a4: e1: 8f: 81: 07: 6b:
                          ed: 85: c2: a5: 2e: 74: dd: cb: 32: 1e: 0f: 25: 0f: b0: 59:
                          18: ae: 2b: 70: 53: 40: ee: 37: 24: 30: e0: 5d: ce: e6: d7:
                          49: 1a: 65: bf: 5d: cd: c6: 58: b8: 07: 6c: 82: cc: 5c: 5f:
                          4d: 63: 57: 38: 58: eb: c3: e6: 19: ac: ac: 47: 35: 1b: c8:
                          d7: 6f: 4c: 66: 07: 31: df: c9: 44: ef: 7b: ce: 15: e2: 99:
                          7e: 3d: 5c: 10: 8c: 81: d7: 8a: 13: a8: 8b: cc: 78: 47: 7b:
                          4c: d8: 80: 42: e7: eb: 0f: 0d: b2: 6c: 04: 13: 1d: 10: 9f:
                          46: ed
                      Показатель степени: 65537 (0x10001)
              Расширения X509v3:
                  Идентификатор ключа темы X509v3:
                      87: D6: 7C: B1: 4D: 89: E5: ED: 79: 1E: 2C: 5C: 51: AD: 9E: 45: D6: 7E: 6D: FC
                  Доступ к информации о полномочиях: `CA Issuers - URI:` [`http: // f19t11.localdomain: 80 / ovirt-engine / services / pki-resource? resource = ca-certificate & format = X509-PEM-CA`] (http: //f19t11.localdomain: 80 / ovirt-engine / services / pki-resource? resource = ca-certificate & format = X509-PEM-CA)
                  Идентификатор ключа авторизации X509v3:
                      keyid: 7C: 62: A5: 65: 2B: 58: 8A: 61: 20: 8E: F5: A2: B3: 1E: 2D: 03: C4: 3E: 80: 11
                      DirName: /C=US/O=localdomain/CN=f19t11.localdomain.84133
                      серийный номер: 10:00
                  Основные ограничения X509v3:
                      CA: ЛОЖЬ
                  X509v3 Использование ключа: критическое
                      Цифровая подпись, шифрование ключа
                  X509v3 Extended Key Usage: критично
                      Проверка подлинности веб-сервера TLS, проверка подлинности веб-клиента TLS
          Алгоритм подписи: sha1WithRSAEncryption
               57: ce: 55: f2: 12: 1f: 18: 6d: 0b: ce: f4: c8: 6e: 1b: e4: d9: 9c: a7:
               de: 10: 8b: 13: 54: ba: b3: a7: 77: 68: a1: 09: 90: d9: 03: db: b9: f8:
               dd: 20: 15: a9: 96: e8: 21: 55: 2b: e3: 39: fd: 1e: f5: 6a: 01: 1c: 43:
               00: 9d: 7f: 6d: d9: c4: 7d: 0c: f7: 6b: c8: b1: 97: e3: 2e: af: 62: 40:
               95: 3c: a9: 63: 83: 17: 6c: 26: 34: bb: 4b: a8: 74: 7c: 2f: 51: 70: b5:
               40: f7: 5a: 55: 41: 7d: 1b: 05: 7a: 95: 23: 3e: c0: b9: e1: e5: 92: 68:
               6d: 07: ab: 16: e6: 72: 7c: 19: e1: b4: 31: 16: db: 56: 14: de: 8e: bd:
               26: 28: 02: 1d: 2f: 34: ac: a0: 39: 60: 4c: d2: 33: 9e: 9f: 3b: 46: 06:
               fe: c9: be: 4a: 8a: f9: c1: 4f: 2b: 1b: 7d: c0: ed: 43: 41: d9: 97: fc:
               f5: 1a: 83: 77: 69: f9: 00: 24: fd: 67: 0f: bc: c5: a2: 0f: 36: c9: 04:
               47: 39: bf: 0a: 8f: e6: 05: 41: 04: 38: c6: 2d: 45: 12: 60: b7: a9: 0a:
               e8: 0e: a5: ee: 7c: d2: bb: 09: 79: fa: f5: da: db: a5: 18: ed: a8: e3:
               d5: cc: e9: 2b: 11: 31: 0c: 3f: fa: 42: dc: d9: b6: 55: 94: 7f: 55: e8:
               ad: 91: 8d: d7: 0e: 38: 09: cc: 7c: 21: 99: 73: 9e: 86: 52: 1d: 84: f7:
               67: fa: 2b: 95
      ----- НАЧАТЬ СЕРТИФИКАТ -----
      MIIEYjCCA0qgAwIBAgICEBkwDQYJKoZIhvcNAQEFBQAwRjELMAkGA1UEBhMCVVMx
      FDASBgNVBAoTC2xvY2FsZG9tYWluMSEwHwYDVQQDExhmMTl0MTEubG9jYWxkb21h
      aW4uODQxMzMwIhcRMTQwOTE4MTU0NzU4KzAwMDAXDTE5MDgyNDE1NDc1OFowQDEL
      MAkGA1UEBhMCVVMxFDASBgNVBAoTC2xvY2FsZG9tYWluMRswGQYDVQQDExJmMTl0
      MTIubG9jYWxkb21haW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM
      U1o8AUrS + i1tUM35B8xqtxeamrWCrbPMIzc9TX0WfP5QtyBSpvsHbBAFiBO1FRB +
      zC5fIh5qL47nf4JQ9aVV / CXEQ2arKPnMJ7gyJUevT1IKfO122BWg8o4lOHK + JZtV
      bdCJM1pMs6jt4F6N + IGUUSeHXkeRFKuboe8ywU + B2iUqil9mrEF4pmpPgE5LiqTh
      j4EHa + 2FwqUudN3LMh5PJQ + wWRiuK3BTQO43JDDgXc7m10kaZb9dzcZYuAdsgsxc
      X01jVzhY68PmGaysRzUbyNdvTGYHMd / JRO97zhXimX49XBCMgdeKE6iLzHhHe0zY
      gELn6w8NsmwEEx0Qn0btAgMBAAGjggFaMIIBVjAdBgNVHQ4EFgQUh9Z8sU2J5e15
      HixcUa2eRdZ + bfwwgYYGCCsGAQUFBwEBBHoweDB2BggrBgEFBQcwAoZqaHR0cDov
      L2YxOXQxMS5sb2NhbGRvbWFpbjo4MC9vdmlydC1lbmdpbmUvc2VydmljZXMvcGtp
      LXJlc291cmNlP3Jlc291cmNlPWNhLWNlcnRpZmljYXRlJmZvcm1hdD1YNTA5LVBF
      TS1DQTBvBgNVHSMEaDBmgBR8YqVlK1iKYSCO9aKzHi0DxD6AEaFKpEgwRjELMAkG
      A1UEBhMCVVMxFDASBgNVBAoTC2xvY2FsZG9tYWluMSEwHwYDVQQDExhmMTl0MTEu
      bG9jYWxkb21haW4uODQxMzOCAhAAMAkGA1UdEwQCMAAwDgYDVR0PAQH / BAQDAgWg
      MCAGA1UdJQEB / wQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQUF
      AAOCAQEAV85V8hIfGG0LzvTIbhvk2Zyn3hCLE1S6s6d3aKEJkNkD27n43SAVqZbo
      IVUr4zn9HvVqARxDAJ1 / bdnEfQz3a8ixl + Mur2JAlTypY4MXbCY0u0uodHwvUXC1
      QPdaVUF9GwV6lSM + wLnh5ZJobQerFuZyfBnhtDEW21YU3o69JigCHS80rKA5YEzS
      M56fO0YG / sm + Sor5wU8rG33A7UNB2Zf89RqDd2n5ACT9Zw + 8xaIPNskERzm / Co / m
      BUEEOMYtRRJgt6kK6A6l7nzSuwl5 + vXa26UY7ajj1czpKxExDD / 6QtzZtlWUf1Xo
      rZGN1w44Ccx8IZlznoZSHYT3Z / orlQ ==
      ----- КОНЕЦ СЕРТИФИКАТА -----
      

    Возьмите последний раздел, чтобы ввести его на прокси-сервер websocket

      Введите цепочку сертификатов WSP, которая соответствует запросу сертификата,
                (эмитент не обязательно, от среднего до высшего)
               
                введите '- = 451b80dc-996f-432e-9e4f-2b29ef6d1141 = -' в собственной строке, чтобы отметить конец. 

    Используйте эту строку для завершения фазы ввода.

      ----- НАЧАТЬ СЕРТИФИКАТ -----
      MIIEYjCCA0qgAwIBAgICEBkwDQYJKoZIhvcNAQEFBQAwRjELMAkGA1UEBhMCVVMx
      FDASBgNVBAoTC2xvY2FsZG9tYWluMSEwHwYDVQQDExhmMTl0MTEubG9jYWxkb21h
      aW4uODQxMzMwIhcRMTQwOTE4MTU0NzU4KzAwMDAXDTE5MDgyNDE1NDc1OFowQDEL
      MAkGA1UEBhMCVVMxFDASBgNVBAoTC2xvY2FsZG9tYWluMRswGQYDVQQDExJmMTl0
      MTIubG9jYWxkb21haW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDM
      U1o8AUrS + i1tUM35B8xqtxeamrWCrbPMIzc9TX0WfP5QtyBSpvsHbBAFiBO1FRB +
      zC5fIh5qL47nf4JQ9aVV / CXEQ2arKPnMJ7gyJUevT1IKfO122BWg8o4lOHK + JZtV
      bdCJM1pMs6jt4F6N + IGUUSeHXkeRFKuboe8ywU + B2iUqil9mrEF4pmpPgE5LiqTh
      j4EHa + 2FwqUudN3LMh5PJQ + wWRiuK3BTQO43JDDgXc7m10kaZb9dzcZYuAdsgsxc
      X01jVzhY68PmGaysRzUbyNdvTGYHMd / JRO97zhXimX49XBCMgdeKE6iLzHhHe0zY
      gELn6w8NsmwEEx0Qn0btAgMBAAGjggFaMIIBVjAdBgNVHQ4EFgQUh9Z8sU2J5e15
      HixcUa2eRdZ + bfwwgYYGCCsGAQUFBwEBBHoweDB2BggrBgEFBQcwAoZqaHR0cDov
      L2YxOXQxMS5sb2NhbGRvbWFpbjo4MC9vdmlydC1lbmdpbmUvc2VydmljZXMvcGtp
      LXJlc291cmNlP3Jlc291cmNlPWNhLWNlcnRpZmljYXRlJmZvcm1hdD1YNTA5LVBF
      TS1DQTBvBgNVHSMEaDBmgBR8YqVlK1iKYSCO9aKzHi0DxD6AEaFKpEgwRjELMAkG
      A1UEBhMCVVMxFDASBgNVBAoTC2xvY2FsZG9tYWluMSEwHwYDVQQDExhmMTl0MTEu
      bG9jYWxkb21haW4uODQxMzOCAhAAMAkGA1UdEwQCMAAwDgYDVR0PAQH / BAQDAgWg
      MCAGA1UdJQEB / wQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjANBgkqhkiG9w0BAQUF
      AAOCAQEAV85V8hIfGG0LzvTIbhvk2Zyn3hCLE1S6s6d3aKEJkNkD27n43SAVqZbo
      IVUr4zn9HvVqARxDAJ1 / bdnEfQz3a8ixl + Mur2JAlTypY4MXbCY0u0uodHwvUXC1
      QPdaVUF9GwV6lSM + wLnh5ZJobQerFuZyfBnhtDEW21YU3o69JigCHS80rKA5YEzS
      M56fO0YG / sm + Sor5wU8rG33A7UNB2Zf89RqDd2n5ACT9Zw + 8xaIPNskERzm / Co / m
      BUEEOMYtRRJgt6kK6A6l7nzSuwl5 + vXa26UY7ajj1czpKxExDD / 6QtzZtlWUf1Xo
      rZGN1w44Ccx8IZlznoZSHYT3Z / orlQ ==
      

    Введите оконечную линию:

      - = 451b80dc-996f-432e-9e4f-2b29ef6d1141 = -
      

    Теперь второй хост должен загрузить и доверять сертификату ядра, предоставить полное доменное имя ядра

    .
      Укажите полное доменное имя или IP-адрес удаленного узла ядра: f19t11.localdomain
      

    Вот и все…

      [INFO] Создание файла конфигурации после установки '/etc/ovirt-engine-setup.conf.d/20-setup-ovirt-post.conf'
      [INFO] Этап: фиксация транзакции
      [INFO] Этап: закрытие
               
                - == РЕЗЮМЕ == -
               
               
                - == КОНЕЦ РЕЗЮМЕ == -
               
      [INFO] Этап: очистка
                Файл журнала находится по адресу /var/log/ovirt-engine/setup/ovirt-engine-setup-20140919173308-96y9sa.log.
      [ИНФОРМАЦИЯ] Создание файла ответов '/ var / lib / ovirt-engine / setup / answers / 20140919173600-setup.conf '
      [ИНФОРМАЦИЯ] Этап: предварительное расторжение
      [ИНФОРМАЦИЯ] Этап: Прекращение действия
      [ИНФОРМАЦИЯ] Выполнение настройки успешно завершено.
      

    WebSocket Proxy теперь работает на другом хосте, чтобы подключиться к нему из вашего браузера, доверяя сертификату движка, этого недостаточно (потому что у нас два хоста), поэтому пользователь должен загрузить сертификат CA и явно доверять ему в своем браузере. Сертификат CA можно загрузить с http: // /ca.crt

    .

    Пособие на ОВИРТ

    Процесс установки станет проще для тех, кому нужно установить WebSocketProxy на отдельном движке, так как это потребует меньше ручных действий

    WebSocketProxy уже может работать на другом хосте, нужно только улучшить настройку движка, чтобы он мог быть настроен автоматически.

    Документация / Внешние ссылки

    • [RFE] Разрешить установку ovirt-websocket-proxy на отдельном компьютере — 1
    • [RFE] rhevm-websocket-proxy — использование в качестве отдельной службы — автоматическая настройка — 2

    Тестирование

    Установите и настройте ovirt-engine на машине A, ovirt-engine-websocket-proxy на машине B и настройте его, как описано. Пользователь должен иметь возможность видеть консоль виртуальной машины через websocket-proxy на хосте B.

    По А:

      yum install ovirt-engine-setup
      установка двигателя
      

    В:

      yum install ovirt-engine-websocket-proxy
      установка двигателя
      

    Добавьте хост виртуализации, запустите виртуальную машину из движка и запустите консоль noVNC.Пользователь должен видеть консоль виртуальной машины.

    WebSocketProxy на отдельном хосте WebSocketProxy на отдельном хосте WebSocketProxy на отдельном хосте

    ошибок | VMware Flings

    14 июня 2018 г.

    Невозможно добавить один из трех центров обработки данных в качестве источника. получить следующую ошибку

    09:58:32 ОШИБКА Ошибка при получении информации о сайте:
    java.lang.NullPointerException: нуль
    в com.vmware.xvm.ServiceManager.getSiteData (ServiceManager.java:143)
    в ком.vmware.xvm.ApiController.getSiteData (ApiController.java:106)
    в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
    в sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестный источник)
    в sun.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник)
    в java.lang.reflect.Method.invoke (неизвестный источник)
    в org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:205)
    по адресу org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMethod.java:133)
    в org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod.java:116)
    в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod (RequestMappingHandlerAdapter.java:827)
    в org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal (RequestMappingHandlerAdapter.java:738)
    в орг.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle (AbstractHandlerMethodAdapter.java:85)
    в org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:963)
    в org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:897)
    в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:970)
    в org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:861)
    в javax.servlet.http.HttpServlet.service (HttpServlet.java:622)
    в org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:846)
    в javax.servlet.http.HttpServlet.service (HttpServlet.java:729)
    в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:230)
    в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:165)
    на org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52)
    в орг.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:192)
    в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:165)
    в org.springframework.web.filter.RequestContextFilter.doFilterInternal (RequestContextFilter.java:99)
    в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107)
    в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java: 192)
    в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:165)
    в org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal (HttpPutFormContentFilter.java:105)
    в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107)
    в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:192)
    в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java: 165)
    в org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal (HiddenHttpMethodFilter.java:81)
    в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107)
    в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:192)
    в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:165)
    в org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java: 197)
    в org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107)
    в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:192)
    в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:165)
    в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:198)
    в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:96)
    в орг.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:474)
    в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:140)
    в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:79)
    в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:87)
    в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:349)
    в org.apache.coyote.http11.Http11Processor.service (Http11Processor.java: 783)
    в org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66)
    в org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:798)
    в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1434)
    в org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49)
    в java.util.concurrent.ThreadPoolExecutor.runWorker (неизвестный источник)
    в java.util.concurrent.ThreadPoolExecutor $ Worker.запустить (неизвестный источник)
    в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61)
    в java.lang.Thread.run (Неизвестный источник)

    Удаленный сервер Ubuntu tornado.websocket.WebSocketClosedError — Развертывание Streamlit

      Сбор с подсветкой
      Использование кешированного https://files.pythonhosted.org/packages/87/e9/38e2870d8b9cd6dfd631577443cc55c2407ec8bfdcac4a3e234516bae69e/streamlit-0.73.0-py2.py3-none-any.whl
    Сбор gitpython (из streamlit)
      Использование кешированных https: // файлов.pythonhosted.org/packages/24/d1/a7f8fe3df258549b303415157328bfcc63e9b11d06a7ad7a3327f3d32606/GitPython-3.1.11-py3-none-any.whl
    Сбор tzlocal (от streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/5d/94/d47b0fd5988e6b7059de05720a646a2930920fff247a826f61674d436ba4/tzlocal-2.1-py2.py3-none-any.whl
    Сбор cachetools> = 4.0 (от streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/92/da/d3c94fc7c72ad9298072681ec3e8cea86949acc5c4cce4290ba21f7050a8/cachetools-4.2.0-py3-none-any.whl
    Подушка сборная> = 6.2.0 (от streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/5f/19/d4c25111d36163698396f93c363114cf1cddbacb24744f6612f25b6aa3d0/Pillow-8.0.1-cp36-cp36m-manylinux1_x86_64.whl
    Сбор pydeck> = 0.1.dev5 (из streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/9e/9d/8fbf1f56cc5891e6c3295bf94fc176e9ab0a3ffdd090cc8b354ac2640f9a/pydeck-0.5.0-py2.py3-none-any.whl
    Сбор клика> = 7.0 (от streamlit)
      Использование кешированных https: // файлов.pythonhosted.org/packages/d2/3d/fa76db83bf75c4f8d338c2fd15c8d33fdd7ad23a9b5e57eb6c5de26b430e/click-7.1.2-py2.py3-none-any.whl
    Сбор астора (от streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/c3/88/97eef84f48fa04fbd6750e62dcceafba6c63c81b7ac1420856c8dcc0a3f9/astor-0.8.1-py2.py3-none-any.whl
    Сбор numpy (из streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/a6/fc/36e52d0ae2aa502b211f1bcd2fdeec72d343d58224eabcdddc1bcb052db1/numpy-1.19.4-cp36-cp36m-many86_linux1_x.пока
    Сбор поворотника (от обтекаемого)
    Сбор altair> = 3.2.0 (от streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/01/55/0bb2226e34f21fa549c3f4557b4f154a5632f61132a969da17c95ca8eab9/altair-4.1.0-py3-none-any.whl
    Сбор запросов (из streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/29/c1/24814557f1d22c56d50280771a17307e6bf87b70727d975fd6b2ce6b014a/requests-2.25.1-py2.py3-none-any.whl
    Сбор base58 (от streamlit)
      Использование кешированного https: //files.pythonhosted.org / packages / 3c / 03 / 58572025c77b9e6027155b272a1b96298e711cd4f95c24967f7137ab0c4b / base58-2.0.1-py3-none-any.whl
    Сбор python-dateutil (из streamlit)
      Использование кешированного https://files.pythonhosted.org/packages/d4/70/d60450c3dd48ef87586924207ae8

    0de0b306af2bce5d134d78615cb/python_dateutil-2.8.1-py2.py3-none-any.whl Сбор protobuf! = 3.11,> = 3.6.0 (из streamlit) Использование кешированного https://files.pythonhosted.org/packages/fe/fd/247ef25f5ec5f9acecfbc98ca3c6aaf66716cf52509aca9a93583d410493/protobuf-3.14.0-cp36-cp36m-manylinux1_x86_64.whl Собираем томл (от streamlit) Использование кешированного https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl Сбор упаковки (от Streamlit) Использование кешированного https://files.pythonhosted.org/packages/b1/a7/588bfa063e7763247ab6f7e1d994e331b85e0e7d09f853c59a6eb9696974/packaging-20.8-py2.py3-none-any.whl Сбор сторожевого пса (от streamlit) Сбор валидаторов (из streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/db/2f/7fed3ee94ad665ad2c1de87f858f10a7785251ff75b4fd47987888d07ef1/validators-0.18.2-py3-none-any.whl Сбор пиарроу; python_version <"3.9" (от streamlit) Использование кешированного https://files.pythonhosted.org/packages/f9/a0/f2941d8274435f403698aee63da0d171552a9acb348d37c7e7ff25f1ae1f/pyarrow-2.0.0-cp36-cp36m-manylinux1_x86_64.whl Сбор панд> = 0.21.0 (из streamlit) Использование кешированного https://files.pythonhosted.org/packages/c3/e2/00cacecafbab071c787019f00ad84ca3185952f6bb9bca9550ed83870d4d/pandas-1.1.5-cp36-cp36m-manylinux1_x86_64.whl Сбор торнадо> = 5.0 (при обтекаемом свете) Использование кешированного https://files.pythonhosted.org/packages/01/d1/8750ad20cbcefb499bb8b405e243f83c2c89f78d139e6f8c8d800640f554/tornado-6.1-cp36-cp36m-manylinux1_x86_64.whl Сбор gitdb <5,> = 4.0.1 (из gitpython-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/48/11/d1800bca0a3bae820b84b7d813ad1eff15a48a64caea9c823fc8c1b119e8/gitdb-4.0.5-py3-none-any.whl Сбор pytz (от tzlocal-> streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/12/f8/ff09af6ff61a3efaad5f61ba5facdf17e7722c4393f7d8a66674d2dbd29f/pytz-2020.4-py2.py3-none-any.whl Сбор трейтлетов> = 4.3.2 (из pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/ca/ab/872a23e29cec3cf2594af7e857f18b687ad21039c1f9b922fac5b9b142d5/traitlets-4.3.3-py2.py3-none-any.whl Сбор ipywidgets> = 7.0.0 (из pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/56/a0/dbcf5881bb2f51e8db678211907f16ea0a182b232c591a6d6f276985ca95/ipywidgets-7.5.1-py2.py3-none-any.whl Сбор jinja2> = 2.10.1 (из pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/30/9e/f663a2aa66a09d838042ae1a2c5659828bb9b41ea3a6efa20a20fd92b121/Jinja2-2.11.2-py2.py3-none-any.whl Сбор ipykernel> = 5.1.2; python_version> = "3.4" (из pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/56/c5/97a972202414c79c28814b1450a31a89777638fb3524e8b5b686a5436abe/ipykernel-5.4.2-py3-none-any.пока Сбор точек входа (от altair> = 3.2.0-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/ac/c6/44694103f8c221443ee6b0041f69e2740d89a25641e62fb4f2ee568f2f9c/entrypoints-0.3-py2.py3-none-any.whl Сборщик toolz (от altair> = 3.2.0-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/12/f5/537e55f8ba664ff2a26f26913010fb0fcb98b6bbadc6158af888184fd0b7/toolz-0.11.1-py3-none-any.whl Сбор jsonschema (от altair> = 3.2.0-> streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/c5/8f/51e89ce52a085483359217bc72cdbf6e75ee595d5b1d4b5ade40c7e018b8/jsonschema-3.2.0-py2.py3-none-any.whl Сбор chardet <5,> = 3.0.2 (из запросов-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/19/c7/fa589626997dd07bd87d9269342ccb74b1720384a4d739a1872bd84fbe68/chardet-4.0.0-py2.py3-none-any.whl Сбор urllib3 <1.27,> = 1.21.1 (из запросов-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/f5/71/45d36a8df68f3ebb098d6861b2c017f3d094538c0fb98fa61d4dc43e69b9/urllib3-1.26.2-py2.py3-none-any.whl Сбор сертификатов> = 2017.4.17 (из запросов-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/5e/a0/5f06e1e1d463903cf0c0eebeb751791119ed7a4b3737fdc9a77f1cdfb51f/certifi-2020.12.5-py2.py3-none-any.whl Сбор idna <3,> = 2.5 (из запросов-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/a2/38/928ddce2273eaa564f6f50de919327bf3a00f091b5baba8dfa9460f3a8a8/idna-2.10-py2.py3-none-any.whl Сбор шести> = 1.5 (из python-dateutil-> streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/ee/ff/48bde5c0f013094d729fe4b0316ba2a24774b3ff1c52d924a8a4cb04078a/six-1.15.0-py2.py3-none-any.whl Сбор pyparsing> = 2.0.2 (от Packaging-> Streamlit) Использование кешированного https://files.pythonhosted.org/packages/8a/bb/488841f56197b13700afd5658fc279a2025a39e22449b7cf29864669b15d/pyparsing-2.4.7-py2.py3-none-any.whl Сбор декоратора> = 3.4.0 (от валидаторов-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/ed/1b/72a1821152d07cf1d8b6fce298aeb06a7eb90f4d6d41acec9861e7cc6df0/decorator-4.4.2-py2.py3-none-any.whl Сбор smmap <4,> = 3.0.1 (из gitdb <5,> = 4.0.1-> gitpython-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/b0/9a/4d409a6234eb940e6a78dfdfc66156e7522262f5f2fecca07dc55915952d/smmap-3.0.4-py2.py3-none-any.whl Сбор ipython-genutils (из traitlets> = 4.3.2-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/fa/bc/9bd3b5c2b4774d5f33b2d544f1460be9df7df2fe42f352135381c347c69a/ipython_genutils-0.2.0-py2.py3-none-any.whl Сбор виджетовnbextension ~ = 3.5.0 (из ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/6c/7b/7ac231c20d2d33c445eaacf8a433f4e22c60677eb9776c7c5262d7ddee2d/widgetsnbextension-3.5.1-py2.py3-none-any.whl Сбор ipython> = 4.0.0; python_version> = "3.3" (из ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/23/6a/210816c943c9aeeb29e4e18a298f14bf0e118fe222a23e13bfcc2d41b0a4/ipython-7.16.1-py3-none-any.whl Сбор nbformat> = 4.2.0 (из ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/40/f7/b9a7c82aff85b706f2824c97727b8e2106bb992bd553e93082b9c6dd45fe/nbformat-5.0.8-py3-none-any.whl Сбор MarkupSafe> = 0.23 (из jinja2> = 2.10.1-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/b2/5f/23e0023be6bb885d00ffbefad2942bc51a620328ee910f64abe5a8d18dd1/MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl Сбор jupyter-client (из ipykernel> = 5.1.2; python_version> = "3.4" -> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/dc/41/9fa443d5ae8907dd8f7d12146cb0092dc053afd67b5b57e7e8786a328547/jupyter_client-6.1.7-py3-none-any.whl Сбор attrs> = 17.4.0 (из jsonschema-> altair> = 3.2.0-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/c3/aa/cb45262569fcc047bf070b5de61813724d6726db83259222cd7b4c79821a/attrs-20.3.0-py2.py3-none-any.whl Сбор pyrsistent> = 0.14.0 (из jsonschema-> altair> = 3.2.0-> streamlit) Сбор importlib-метаданных; python_version <"3.8" (от jsonschema-> altair> = 3.2.0-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/7a/85/ac225e35048e050a6351b6f1251cdb2b6060092f2c6840aff1d6319941b1/importlib_metadata-3.3.0-py3-none-any.whl Сбор setuptools (из jsonschema-> altair> = 3.2.0-> streamlit) Использование кешированного https: //files.pythonhosted.org / packages / 6e / 77 / e921ae5c370698762cf645797f42e6d4d7e679f705a8a9697234591808aa / setuptools-51.1.0.post20201221-py3-none-any.whl Сбор записной книжки> = 4.4.1 (из widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/81/e3/f92ab5688f53dc58dd2cc1b330828024527bb4e8d29bf980a096909b66e5/notebook-6.1.5-py3-none-any.whl Коллекционирование pexpect; sys_platform! = "win32" (из ipython> = 4.0.0; python_version> = "3.3 "-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/39/7b/88dbb785881c28a102619d46423cb853b46dbccc70d3ac362d99773a78ce/pexpect-4.8.0-py2.py3-none-any.whl Сбор pickleshare (из ipython> = 4.0.0; python_version> = "3.3" -> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl Сбор пигментов (из ipython> = 4.0.0; python_version> = "3.3" -> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/85/c5/c437c383d5917fae9782eb6588bec8aff931afe13c76b9e8c03dacee9beb/Pygments-2.7.3-py3-none-any.whl Сбор обратных вызовов (из ipython> = 4.0.0; python_version> = "3.3" -> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/4c/1c/ff6546b6c12603d8dd1070aa3c3d273ad4c07f5771689a7b69a550e8c951/backcall-0.2.0-py2.py3-none-any.whl Сбор jedi> = 0.10 (из ipython> = 4.0.0; python_version> = "3.3" -> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/c3/d4/36136b18daae06ad798966735f6c3fb96869c1be9f8245d2a8f556e40c36/jedi-0.17.2-py2.py3-none-any.whl Сборник prompt-toolkit! = 3.0.0,! = 3.0.1, <3.1.0,> = 2.0.0 (из ipython> = 4.0.0; python_version> = "3.3" -> ipywidgets> = 7.0.0- > pydeck> = 0.1.dev5-> streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/8a/aa/198e6a857e83ea8b711a6ae0c37717c0eb1b23ff52e3732a644fcd389cb3/prompt_toolkit-3.0.8-py3-none-any.whl Сбор jupyter-core (из nbformat> = 4.2.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/f4/34/ba811d7e4b5374e70fc3801d932966979e252e5c1a99eddb32ce63ec54e6/jupyter_core-4.7.0-py3-none-any.whl Сбор pyzmq> = 13 (из jupyter-client-> ipykernel> = 5.1.2; python_version> = "3.4" -> pydeck> = 0.1. dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/05/87/bfed82301b9e9f847f48a14722a61aa1d6249d98e00e6825dd9b7e70abe4/pyzmq-20.0.0-cp36-cp36m-manylinux1_l86_64.white Сбор расширений набора> = 3.6.4; python_version <"3.8" (из importlib-metadata; python_version <"3.8" -> jsonschema-> altair> = 3.2.0-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/60/7a/e881b5abb54db0e6e671ab088d079c57ce54e8a01a3ca443f561ccadb37e/typing_extensions-3.7.4.3-py3-none-any.whl Сбор zipp> = 0.5 (из importlib-metadata; python_version <"3.8" -> jsonschema-> altair> = 3.2.0-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/41/ad/6a4f1a124b325618a7fb758b885b68ff7b058eec47d9220a12ab38d90b1f/zipp-3.4.0-py3-none-any.whl Сбор terminado> = 0.8.3 (из записной книжки> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/5f/17/fa9560738187cdb185d282a120ec4a147064f001d7c0114271ca1374d0a1/terminado-0.9.1-py3-none-any.whl Сбор Send2Trash (из блокнота> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/49/46/c3dc27481d1cc57b9385aff41c474ceb7714f7935b1247194adae45db714/Send2Trash-1.5.0-py3-none-any.whl Сбор nbconvert (из записной книжки> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/13/2f/acbe7006548f3914456ee47f97a2033b1b2f3daf921b12ac94105d87c163/nbconvert-6.0.7-py3-none-any.whl Сбор argon2-cffi (из записной книжки> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/e0/d7/5da06217807106ed6d7b4f5ccb8ec5e3f9ec969217faad4b5d1af0b55101/argon2_cffi-20.1.0-cp35-abi3-m86_linux1_white Сбор prometheus-client (из блокнота> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/f4/7e/ef341c67ed43ad2e39633a35c28b77bc555f9572f4df4fee11c2b467db00/prometheus_client-0.9.0-py2.py3-none-any.whl Сбор ptyprocess> = 0.5 (из pexpect; sys_platform! = "Win32" -> ipython> = 4.0.0; python_version> = "3.3" -> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/d1/29/605c2cc68a9992d18dada28206eeada56ea4bd07a239669da41674648b6f/ptyprocess-0.6.0-py2.py3-none-any.whl Сбор парсо <0.8.0,> = 0.7.0 (от jedi> = 0.10-> ipython> = 4.0.0; python_version> = "3.3" -> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/93/d1/e635bdde32890db5aeb2ffbde17e74f68986305a4466b0aa373b861e3f00/parso-0.7.1-py2.py3-none-any.whl Сбор wcwidth (из prompt-toolkit! = 3.0.0,! = 3.0.1, <3.1.0,> = 2.0.0-> ipython> = 4.0.0; python_version> = "3.3" -> ipywidgets> = 7.0 .0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/59/7c/e39aca596badaf1b78e8f547c807b04dae603a433d3e7a7e04d67f2ef3e5/wcwidth-0.2.5-py2.py3-none-any.whl Сбор pandocfilters> = 1.4.1 (из nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Сбор defusedxml (из nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/06/74/9b387472866358ebc08732de3da6dc48e44b0aacd2ddaa5cb85ab7e986a2/defusedxml-0.6.0-py2.py3-none-any.whl Сбор отбеливателя (из nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/03/c8/b7ed0dfea5cb287907bd22c5ff7c3ed0a65b346f2a4cf916eb9e83be66b3/bleach-3.2.1-py2.py3-none-any.whl Сбор jupyterlab-pygments (из nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/a8/6f/c34288766797193b512c6508f5994b830fb06134fdc4ca8214daba0aa443/jupyterlab_pygments-0.1.2-py2.py3-none-any.whl Сбор mistune <2,> = 0.8.1 (из nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/09/ec/4b43dae793655b7d8a25f76119624350b4d65eb663459eb9603d7f1f0345/mistune-0.8.4-py2.py3-none-any.whl Сбор testpath (из nbconvert-> notebook> = 4.4.1-> виджетыnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/1b/9e/1a170feaa54f22aeb5a5d16c9015e82234275a3c8ab630b552493f9cb8a9/testpath-0.4.4-py2.py3-none-any.whl Сбор nbclient <0.6.0,> = 0.5.0 (из nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit ) Использование кешированного https://files.pythonhosted.org/packages/fd/4f/5cbd9bdb30bfaad620f028711bf232b9cec8fdff1dcf68d9259254fcddeb/nbclient-0.5.1-py3-ни один-любой.whl Сбор cffi> = 1.0.0 (из argon2-cffi-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/1c/1a/90fa7e7ee05d91d0339ef264bd8c008f57292aba4a91ec512a0bbb379d1d/cffi-1.14.4-cp36-cp36m-manylinux1_x86_64.whl Сбор веб-кодировок (из bleach-> nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированных https: // файлов.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl Сбор async-генератора (из nbclient <0.6.0,> = 0.5.0-> nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1 .dev5-> Streamlit) Использование кешированного https://files.pythonhosted.org/packages/71/52/39d20e03abd0ac9159c162ec24b93fbcaa111e8400308f2465432495ca2b/async_generator-1.10-py3-none-any.whl Сбор nest-asyncio (из nbclient <0.6.0,> = 0.5.0-> nbconvert-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit) Использование кешированного https://files.pythonhosted.org/packages/5c/33/10805a3359f56ac4f3b520e64b9d5e6a288d87be95777b8023c64cba60f1/nest_asyncio-1.4.3-py3-none-any.whl Сбор pycparser (из cffi> = 1.0.0-> argon2-cffi-> notebook> = 4.4.1-> widgetsnbextension ~ = 3.5.0-> ipywidgets> = 7.0.0-> pydeck> = 0.1.dev5-> streamlit ) Использование кешированных https: // файлов.pythonhosted.org/packages/ae/e7/d9c3a176ca4b02024debf82342dab36efadfc5776f9c8db077e8f6e71821/pycparser-2.20-py2.py3-none-any.whl Установка собранных пакетов: smmap, gitdb, gitpython, pytz, tzlocal, cachetools, Pillow, ipython-genutils, six, decorator, traitlets, python-dateutil, pyzmq, tornado, jupyter-core, jupyter-client, ptyprocess, pexpect, pickleshare, setuptools, pygments, backcall, parso, jedi, wcwidth, prompt-toolkit, ipython, ipykernel, MarkupSafe, jinja2, terminado, Send2Trash, pandocfilters, defusedxml, pyparsing, упаковка, webencodings, bleach, jupyterlabints-pygments, entry pyrsistent, typing-extensions, zipp, importlib-metadata, jsonschema, nbformat, testpath, async-generator, nest-asyncio, nbclient, nbconvert, pycparser, cffi, argon2-cffi, prometheus-client, notebook, widgetsnbextension, ipumywidget pydeck, click, astor, blinker, pandas, toolz, altair, chardet, urllib3, certifi, idna, requests, base58, protobuf, toml, сторожевой таймер, валидаторы, pyarrow, streamlit Ошибка сегментации (дамп ядра) ubuntu @ ip-172-31-36-199: ~ $ streamlit привет streamlit: команда не найдена ''

    AUR (en) — kamailio-websocket-modules

    Обновлен PKGBUILD для версии 5.4.0, который будет компилироваться с ядрами 5.X и добавлены дополнительные модули.

      # Сопровождающий: Xavier Devlamynck 
    
    pkgname = kamailio
    pkgver = 5.4.0
    pkgrel = 0
    pkgdesc = "Надежный SIP-сервер"
    url = "http://www.kamailio.org/"
    лицензия = ('GPL2')
    арка = ('i686' 'x86_64')
    зависит = ()
    makedepends = ('flex' 'bison' 'docbook2x' 'pcre' 'python2' 'python' 'openssl' 'db' 'libxml2' 'hiredis' 'libevent'
                 'dnssec-tools' expat '' libunistring '' libev '' jansson '' geoip '' libmaxminddb '' curl '' unixodbc '
                 'json-c' librabbitmq-c 'libldap' lua 'libmemcached' mongo-c-driver 'snappy' моно '
                 'mariadb-clients' perl '' erlang '' libphonenumber '' postgresql 'sqlite' net-snmp 'lksctp-tools'
                 'ruby' freeradius-client ')
    optdepends = ('mariadb: поддержка MySQL'
                'expat: поддержка xmpp / jabber'
            'libxml2: поддержка модулей cpl и присутствия'
            'postgresql: серверная часть postgresql')
    source = (http: // www.kamailio.org/pub/kamailio/$pkgver/src/kamailio-${pkgver}_src.tar.gz
        $ pkgname.service)
    обеспечивает = ()
    конфликты = ()
    заменяет = ()
    backup = ('etc / kamailio / tls.cfg' 'etc / kamailio / kamctlrc' 'etc / kamailio / kamailio.cfg' 'etc / kamailio / kamailio-basic.cfg' 'etc / kamailio / kamailio-advanced.cfg' )
    
    
    # См. Makefile.groups для списка рекомендуемых модулей для
    # каждый пакет. Далее следует упрощенная версия Makefile.groups.
    #
    # - базовые используемые модули, без дополнительных зависимостей (широко распространенное использование)
    _mod_list_basic = "avp async auth benchmark blst cfg_rpc cfgt cfgutils corex counters \
            Переадресация отладчика ctl enum exec gzcompress ipops kex mangler \
            maxfwd mediaproxy mqueue \
            nat_traversal nathelper path pike pv ratelimit rr rtimer \
            rtpproxy sanity sdpops siputils sl smsops statsc statistics \
            textops textopsx tm tmx topoh topos xlog rtpengine stun sipt "
    
    # - дополнительные используемые модули, без лишних зависимостей
    _mod_list_extras = "auth_diameter call_control cnxcc dmq domainpolicy log_custom \
            msrp pdb qos sca sea sms sst timer tmrec tsilo uac_redirect \
            xhttp xhttp_rpc xprint nosip dmq_usrloc statsd rtjson tcpops \
            auth_xkeys "
    
    # - общие модули в зависимости от базы данных
    _mod_list_db = "acc alias_db auth_db avpops cfg_db db_berkeley db_flatstore \
            db_cluster диалог диспетчер домена группа дроутинга \
            htable imc matrix mohqueue msilo mtree p_usrloc pdt permissions \
            pipelimit prefix_route регистратор sipcapture siptrace speeddial \
            sqlops uac uri_db userblacklist usrloc "
    
    # - общие модули в зависимости от базы данных, с использованием схемы UID db
    _mod_list_dbuid = "db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
            uid_uri_db "
    
    # - модули для разработки
    _mod_list_devel = "malloc_test print print_lib"
    
    # - модули в зависимости от библиотеки pcre3
    _mod_list_pcre = "регулярное выражение lcr диалплана"
    
    # - модули в зависимости от клиентской библиотеки радиуса
    _mod_list_radius = "acc_radius auth_radius misc_radius пиринг"
    
    # - модули в зависимости от клиентской библиотеки ldap
    _mod_list_ldap = "db2_ldap h450 ldap"
    
    # - модули в зависимости от клиентской библиотеки mysql
    _mod_list_mysql = "db_mysql"
    
    # - модули в зависимости от клиентской библиотеки postgres
    _mod_list_postgres = "db_postgres"
    
    # - модули в зависимости от библиотеки unixodbc
    _mod_list_unixodbc = "db_unixodbc"
    
    # - модули в зависимости от библиотеки mysql cassandra
    _mod_list_cassandra = "db_cassandra ndb_cassandra"
    
    # - модули в зависимости от библиотеки xml2
    _mod_list_cpl = "cplc"
    
    # - модули в зависимости от библиотеки xml2
    _mod_list_xml = "xhttp_pi xmlrpc xmlops"
    
    # - модули в зависимости от библиотеки net-snmp
    _mod_list_snmpstats = "snmpstats"
    
    # - модули в зависимости от библиотеки expat
    _mod_list_xmpp = "xmpp"
    
    # - модули в зависимости от библиотеки confuse
    _mod_list_carrierroute = "carrierroute"
    
    # - модули в зависимости от библиотеки bdb (db4)
    _mod_list_berkeley = "db_berkeley"
    
    # - модули в зависимости от библиотеки curl
    _mod_list_utils = "утилит http_client"
    
    # - асинхронный http_async_client
    _mod_list_http_async = "http_async_client"
    
    # - модули в зависимости от фиолетовой библиотеки
    _mod_list_purple = "фиолетовый"
    
    # - модули в зависимости от библиотеки memcache
    _mod_list_memcached = "memcached"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_tls = "auth_identity crypto tls"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_outbound = "исходящий"
    
    # - модули в зависимости от библиотеки unistring
    _mod_list_websocket = "веб-сокет"
    
    # - модули, зависящие от libval-нитей libcrypto libsres libpthread
    _mod_list_dnssec = "dnssec"
    
    # - модули в зависимости от libsctp
    _mod_list_sctp = "sctp"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_authephemeral = "auth_ephemeral"
    
    # - модули, относящиеся к SIMPLE расширениям присутствия
    _mod_list_presence = "присутствие присутствие_конференция присутствие_диалогинфо \
                присутствие_mwi профиль_ присутствия присутствие_reginfo \
                присутствие_xml \
                pua pua_bla pua_dialoginfo pua_reginfo \
                pua_rpc pua_usrloc pua_xmpp \
                rls xcap_client xcap_server "
    
    # - модули в зависимости от библиотеки lua
    _mod_list_lua = "app_lua"
    
    # - модули в зависимости от библиотеки perl
    _mod_list_perl = "app_perl db_perlvdb"
    
    # - модули в зависимости от библиотеки python
    _mod_list_python = "app_python"
    
    # - модули в зависимости от rabbitmq
    _mod_list_rabbitmq = "rabbitmq"
    
    # - модули в зависимости от библиотеки geoip2
    _mod_list_geoip2 = "geoip2"
    
    # - модули в зависимости от библиотеки sqlite
    _mod_list_sqlite = "db_sqlite"
    
    # - модули в зависимости от библиотеки oracle
    _mod_list_oracle = "db_oracle"
    
    # - модули в зависимости от библиотеки json
    _mod_list_json = "json jsonrpcc jsonrpcs"
    
    # - модули в зависимости от библиотеки Redis
    _mod_list_redis = "ndb_redis topos_redis"
    
    # - модули в зависимости от монобиблиотеки
    _mod_list_mono = "app_mono"
    
    # - модули, связанные с расширениями IMS
    _mod_list_ims = "cdp cdp_avp ims_dialog ims_diameter_server ims_auth ims_isc ims_icscf ims_qos \
            ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
            ims_usrloc_scscf ims_charging "
    
    # - модули в зависимости от библиотеки osp toolkit
    _mod_list_osp = "osp"
    
    # - модули в зависимости от библиотеки java
    _mod_list_java = "app_java"
    
    # - модули в зависимости от библиотеки iptables
    _mod_list_iptrtpproxy = "iptrtpproxy"
    
    # - модули в зависимости от библиотеки gzip
    _mod_list_gzcompress = "gzcompress"
    
    # - модули в зависимости от библиотеки uuid
    _mod_list_uuid = "uuid"
    
    # - модули в зависимости от библиотеки ev
    _mod_list_ev = "эвапи"
    
    # - модули в зависимости от kazoo / rabbitmq
    _mod_list_kazoo = "kazoo"
    
    # - модули в зависимости от mongodb
    _mod_list_mongodb = "db_mongodb ndb_mongodb"
    
    # - модули в зависимости от библиотеки jansson
    _mod_list_jansson = "jansson janssonrpcc"
    
    # - модули в зависимости от libm
    _mod_list_jsdt = "app_jsdt"
    
    # - модули зависящие от sqlang
    _mod_list_sqlang = "app_sqlang"
    
    # - модули в зависимости от rabbitmq
    _mod_list_rabbitmq = "rabbitmq"
    
    # - модули в зависимости от sipdump
    _mod_list_sipdump = "sipdump"
    
    # Стандартные модули в основном паке
    _module_group_kstandard = "$ _ mod_list_basic $ _mod_list_dbuid $ _mod_list_ims $ _mod_list_pcre"
    
    # КОНЕЦ Makefile.группы ######################################################################### ############
    
    _modules = "$ _ module_group_kstandard $ _mod_list_websocket $ _mod_list_outbound $ _mod_list_tls $ _mod_list_mysql $ _mod_list_ims $ _mod_list_json $ _mod_list_presence $ _mod_list_utils"
    
    подготовить() {
        cd "$ srcdir / $ pkgname- $ pkgver"
        sed -i 's / bin_dir = sbin \ // bin_dir = bin \ // g' src / Makefile.defs
    }
    
    строить() {
        cd "$ srcdir / $ pkgname- $ pkgver"
    
        сделать ВКУС = kamailio STUN = 1 \
            ПРЕФИКС = / usr \
            CC_EXTRA_OPTS = "$ CFLAGS -fcommon -D_GNU_SOURCE" \
            cfg_target = / etc / kamailio / \
            run_prefix = "" \
            include_modules = "$ _ модулей" \
            LIBDIR = библиотека \
            DESTDIR = "$ pkgdir" \
            cfg_prefix = "$ pkgdir" \
            config
    
        сделать EMBEDDED_UTF8_DECODE = 1 STUN = 1 FREERADIUS = 1 все || возврат 1
    }
    
    упаковка() {
        cd "$ srcdir / $ pkgname- $ pkgver"
        сделать FREERADIUS = 1 -j1 install || возврат 1
        install -Dm0644 "$ {srcdir} / $ pkgname.служба "" $ {pkgdir} /usr/lib/systemd/system/$pkgname.service "
    }
    
    sha256sums = ('ПРОПУСТИТЬ'
                '0ccad93274866b9116fe1e029368b92d4bebd7806a3d8f7978a20e44cf0f6451')  

    Ошибка установки из-за усеченного kamcmd.o:

    LD (gcc) [U kamcmd] kamcmd / usr / bin / ld: kamcmd.o: файл не распознан: файл усечен collect2: ошибка: ld вернул 1 статус выхода make [3]: *** [../../src//Makefile.rules:191: kamcmd] Ошибка 1 ОШИБКА: make —no-print-directory -C ../ ../../utils/kamcmd install-if-newer failed

    Служебный файл поврежден. В строке 9 «EnvironmentFile» установлен в «/ etc / kamailio», который является каталогом, а не файлом. В строке 14 «RuntimeDirectoryMode = 0750» и «Restart = on-failure» должны быть на отдельных строках.

    Я оставляю здесь обновленный PKGBUILD:

      # Сопровождающий: Xavier Devlamynck 
    
    pkgname = kamailio
    pkgver = 5.1.4
    pkgrel = 1
    pkgdesc = "Надежный SIP-сервер"
    url = "http: // www.kamailio.org/ "
    лицензия = ('GPL2')
    арка = ('i686' 'x86_64')
    зависит = ()
    makedepends = ('гибкий' 'бизон' 'docbook2x' 'mariadb' 'postgresql' 'libxml2'
                 'freeradius-client' lua51 'mono' hiredis 'libpurple' net-snmp '
             'libunistring' python2 ')
    optdepends = ('mariadb: поддержка MySQL'
                'expat: поддержка xmpp / jabber'
            'libxml2: поддержка модулей cpl и присутствия'
            'postgresql: серверная часть postgresql')
    источник = (http://www.kamailio.org/pub/kamailio/$pkgver/src/kamailio-$ {pkgver} _src.tar.gz
        $ pkgname.service)
    обеспечивает = ()
    конфликты = ()
    заменяет = ()
    backup = ('etc / kamailio / kamctlrc' 'etc / kamailio / kamailio.cfg' 'etc / kamailio / kamailio-basic.cfg' 'etc / kamailio / kamailio-advanced.cfg')
    
    
    # См. Makefile.groups для списка рекомендуемых модулей для
    # каждый пакет. Далее следует упрощенная версия Makefile.groups.
    #
    # - базовые используемые модули, без дополнительных зависимостей (широко распространенное использование)
    _mod_list_basic = "avp async auth benchmark blst cfg_rpc cfgt cfgutils corex counters \
            Переадресация отладчика ctl enum exec gzcompress ipops kex mangler \
            maxfwd mediaproxy mqueue \
            nat_traversal nathelper path pike pv ratelimit rr rtimer \
            rtpproxy sanity sdpops siputils sl smsops statsc statistics \
            textops textopsx tm tmx topoh topos xlog rtpengine stun sipt "
    
    # - дополнительные используемые модули, без лишних зависимостей
    _mod_list_extras = "auth_diameter call_control cnxcc dmq domainpolicy log_custom \
            msrp pdb qos sca sea sms sst timer tmrec tsilo uac_redirect \
            xhttp xhttp_rpc xprint nosip dmq_usrloc statsd rtjson tcpops \
            auth_xkeys "
    
    # - общие модули в зависимости от базы данных
    _mod_list_db = "acc alias_db auth_db avpops cfg_db db_berkeley db_flatstore \
            db_cluster диалог диспетчер домена группа дроутинга \
            htable imc matrix mohqueue msilo mtree p_usrloc pdt permissions \
            pipelimit prefix_route регистратор sipcapture siptrace speeddial \
            sqlops uac uri_db userblacklist usrloc "
    
    # - общие модули в зависимости от базы данных, с использованием схемы UID db
    _mod_list_dbuid = "db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
            uid_uri_db "
    
    # - модули для разработки
    _mod_list_devel = "malloc_test print print_lib"
    
    # - модули в зависимости от библиотеки pcre3
    _mod_list_pcre = "регулярное выражение lcr диалплана"
    
    # - модули в зависимости от клиентской библиотеки радиуса
    _mod_list_radius = "acc_radius auth_radius misc_radius пиринг"
    
    # - модули в зависимости от клиентской библиотеки ldap
    _mod_list_ldap = "db2_ldap h450 ldap"
    
    # - модули в зависимости от клиентской библиотеки mysql
    _mod_list_mysql = "db_mysql"
    
    # - модули в зависимости от клиентской библиотеки postgres
    _mod_list_postgres = "db_postgres"
    
    # - модули в зависимости от библиотеки unixodbc
    _mod_list_unixodbc = "db_unixodbc"
    
    # - модули в зависимости от библиотеки mysql cassandra
    _mod_list_cassandra = "db_cassandra ndb_cassandra"
    
    # - модули в зависимости от библиотеки xml2
    _mod_list_cpl = "cplc"
    
    # - модули в зависимости от библиотеки xml2
    _mod_list_xml = "xhttp_pi xmlrpc xmlops"
    
    # - модули в зависимости от библиотеки net-snmp
    _mod_list_snmpstats = "snmpstats"
    
    # - модули в зависимости от библиотеки expat
    _mod_list_xmpp = "xmpp"
    
    # - модули в зависимости от библиотеки confuse
    _mod_list_carrierroute = "carrierroute"
    
    # - модули в зависимости от библиотеки bdb (db4)
    _mod_list_berkeley = "db_berkeley"
    
    # - модули в зависимости от библиотеки curl
    _mod_list_utils = "утилит http_client"
    
    # - асинхронный http_async_client
    _mod_list_http_async = "http_async_client"
    
    # - модули в зависимости от фиолетовой библиотеки
    _mod_list_purple = "фиолетовый"
    
    # - модули в зависимости от библиотеки memcache
    _mod_list_memcached = "memcached"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_tls = "auth_identity crypto tls"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_outbound = "исходящий"
    
    # - модули в зависимости от библиотеки unistring
    _mod_list_websocket = "веб-сокет"
    
    # - модули, зависящие от libval-нитей libcrypto libsres libpthread
    _mod_list_dnssec = "dnssec"
    
    # - модули в зависимости от libsctp
    _mod_list_sctp = "sctp"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_authephemeral = "auth_ephemeral"
    
    # - модули, относящиеся к SIMPLE расширениям присутствия
    _mod_list_presence = "присутствие присутствие_конференция присутствие_диалогинфо \
                присутствие_mwi профиль_ присутствия присутствие_reginfo \
                присутствие_xml \
                pua pua_bla pua_dialoginfo pua_reginfo \
                pua_rpc pua_usrloc pua_xmpp \
                rls xcap_client xcap_server "
    
    # - модули в зависимости от библиотеки lua
    _mod_list_lua = "app_lua"
    
    # - модули в зависимости от библиотеки perl
    _mod_list_perl = "app_perl db_perlvdb"
    
    # - модули в зависимости от библиотеки python
    _mod_list_python = "app_python"
    
    # - модули в зависимости от rabbitmq
    _mod_list_rabbitmq = "rabbitmq"
    
    # - модули в зависимости от библиотеки geoip2
    _mod_list_geoip2 = "geoip2"
    
    # - модули в зависимости от библиотеки sqlite
    _mod_list_sqlite = "db_sqlite"
    
    # - модули в зависимости от библиотеки oracle
    _mod_list_oracle = "db_oracle"
    
    # - модули в зависимости от библиотеки json
    _mod_list_json = "json jsonrpcc jsonrpcs"
    
    # - модули в зависимости от библиотеки Redis
    _mod_list_redis = "ndb_redis topos_redis"
    
    # - модули в зависимости от монобиблиотеки
    _mod_list_mono = "app_mono"
    
    # - модули, связанные с расширениями IMS
    _mod_list_ims = "cdp cdp_avp ims_dialog ims_diameter_server ims_auth ims_isc ims_icscf ims_qos \
            ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
            ims_usrloc_scscf ims_charging "
    
    # - модули в зависимости от библиотеки osp toolkit
    _mod_list_osp = "osp"
    
    # - модули в зависимости от библиотеки java
    _mod_list_java = "app_java"
    
    # - модули в зависимости от библиотеки iptables
    _mod_list_iptrtpproxy = "iptrtpproxy"
    
    # - модули в зависимости от библиотеки gzip
    _mod_list_gzcompress = "gzcompress"
    
    # - модули в зависимости от библиотеки uuid
    _mod_list_uuid = "uuid"
    
    # - модули в зависимости от библиотеки ev
    _mod_list_ev = "эвапи"
    
    # - модули в зависимости от kazoo / rabbitmq
    _mod_list_kazoo = "kazoo"
    
    # - модули в зависимости от mongodb
    _mod_list_mongodb = "db_mongodb ndb_mongodb"
    
    # - модули в зависимости от библиотеки jansson
    _mod_list_jansson = "jansson janssonrpcc"
    
    # - модули в зависимости от libm
    _mod_list_jsdt = "app_jsdt"
    
    # - модули зависящие от sqlang
    _mod_list_sqlang = "app_sqlang"
    
    # - модули в зависимости от rabbitmq
    _mod_list_rabbitmq = "rabbitmq"
    
    # - модули в зависимости от sipdump
    _mod_list_sipdump = "sipdump"
    
    # Стандартные модули в основном паке
    _module_group_kstandard = "$ _ mod_list_basic $ _mod_list_dbuid $ _mod_list_ims $ _mod_list_pcre"
    
    # КОНЕЦ Makefile.группы ######################################################################### ############
    
    _modules = "$ _ module_group_kstandard"
    
    подготовить() {
        cd "$ srcdir / $ pkgname- $ pkgver"
        sed -i 's / bin_dir = sbin \ // bin_dir = bin \ // g' src / Makefile.defs
    }
    
    строить() {
        cd "$ srcdir / $ pkgname- $ pkgver"
    
        сделать ВКУС = kamailio STUN = 1 \
            ПРЕФИКС = / usr \
            CC_EXTRA_OPTS = "$ CFLAGS -D_GNU_SOURCE" \
            cfg_target = / etc / kamailio / \
            run_prefix = "" \
            include_modules = "$ _ модулей" \
            LIBDIR = библиотека \
            DESTDIR = "$ pkgdir" \
            cfg_prefix = "$ pkgdir" \
            config
    
        сделать EMBEDDED_UTF8_DECODE = 1 STUN = 1 FREERADIUS = 1 все || возврат 1
    }
    
    упаковка() {
        cd "$ srcdir / $ pkgname- $ pkgver"
        сделать FREERADIUS = 1 -j1 install || возврат 1
        install -Dm0644 "$ {srcdir} / $ pkgname.служба "" $ {pkgdir} /usr/lib/systemd/system/$pkgname.service "
    }
    
    md5sums = ('225ad8e7d2d99e02bfcb649079cad8cb'
             '4277a8be96f80faef1d2ae6ba7f26abd')
    
      

    kamailio.service

      [Единица]
    Описание = Kamailio - SIP-сервер с открытым исходным кодом
    Документация = man: kamailio (8) https://www.kamailio.org/
    Хочет = network-online.target
    После = syslog.target network-online.target
    
    [Служба]
    Тип = разветвление
    EnvironmentFile = / etc / kamailio
    PIDFile = / var / run / kamailio.pid
    ExecStart = / usr / bin / kamailio -P / var / run / kamailio.pid $ OPTIONS
    ExecStopPost = / usr / bin / rm -f /var/run/kamailio.pid
    Перезагрузка = при сбое
    
    [Установить]
    WantedBy = multi-user.target
      

    Я не могу собрать этот пакет. Похоже, отсутствует файл Makefile.defs.

    Вывод в конце сборки:

    rm -f cfgt.d cfgt.d cfgt.d * ~
    rm -f qos.d qos.d qos.d * ~
    make [1]: Выход из каталога ‘/tmp/yaourt-tmp-mythtv/aur-kamailio/src/kamailio-5.0.2/src’
    sed: не могу прочитать Makefile.defs: нет такого файла или каталога
    ==> ОШИБКА: произошел сбой в build ().
    Прерывание …
    ==> ОШИБКА: Makepkg не удалось собрать kamailio.
    ==> Перезапустить сборку камайлио? [да / нет]
    ==> ———————————
    ==>

    Помимо неправильных путей, созданный пакет, похоже, не содержит всех файлов, необходимых для поддержки MySQL или postgres, и отсутствует служебный файл systemd.

    Неправильный путь очень раздражает.

    Я решил это, внеся некоторые изменения в PKGBUILD.

    В build () изменил строку на:
    make prefix = / usr cfg_prefix = $ {pkgdir} LIBDIR = lib config

    В package () изменил строку на:
    make DESTDIR = «$ pkgdir» install

    Может быть, есть лучшие решения.

    После установки все пути по умолчанию установлены неправильно:

    Файл конфигурации (по умолчанию: / tmp / yaourt-tmp-user / aur-kamailio / pkg / kamailio / usr / etc / kamailio / kamailio.cfg)

    Путь поиска модулей (по умолчанию: / tmp / yaourt-tmp-user / aur-kamailio / pkg / kamailio / usr / lib / kamailio / modules)

    Кажется, я не могу найти способ изменить их. .

    Я добавил в AUR зависимость radiusclient-ng. Удачи;)

    AUR (en) — kamailio

    Обновлен PKGBUILD для версии 5.4.0, которая будет компилироваться с ядрами 5.X, и добавлены дополнительные модули.

      # Сопровождающий: Xavier Devlamynck 
    
    pkgname = kamailio
    pkgver = 5.4.0
    pkgrel = 0
    pkgdesc = "Надежный SIP-сервер"
    url = "http://www.kamailio.org/"
    лицензия = ('GPL2')
    арка = ('i686' 'x86_64')
    зависит = ()
    makedepends = ('flex' 'bison' 'docbook2x' 'pcre' 'python2' 'python' 'openssl' 'db' 'libxml2' 'hiredis' 'libevent'
                 'dnssec-tools' expat '' libunistring '' libev '' jansson '' geoip '' libmaxminddb '' curl '' unixodbc '
                 'json-c' librabbitmq-c 'libldap' lua 'libmemcached' mongo-c-driver 'snappy' моно '
                 'mariadb-clients' perl '' erlang '' libphonenumber '' postgresql 'sqlite' net-snmp 'lksctp-tools'
                 'ruby' freeradius-client ')
    optdepends = ('mariadb: поддержка MySQL'
                'expat: поддержка xmpp / jabber'
            'libxml2: поддержка модулей cpl и присутствия'
            'postgresql: серверная часть postgresql')
    source = (http: // www.kamailio.org/pub/kamailio/$pkgver/src/kamailio-${pkgver}_src.tar.gz
        $ pkgname.service)
    обеспечивает = ()
    конфликты = ()
    заменяет = ()
    backup = ('etc / kamailio / tls.cfg' 'etc / kamailio / kamctlrc' 'etc / kamailio / kamailio.cfg' 'etc / kamailio / kamailio-basic.cfg' 'etc / kamailio / kamailio-advanced.cfg' )
    
    
    # См. Makefile.groups для списка рекомендуемых модулей для
    # каждый пакет. Далее следует упрощенная версия Makefile.groups.
    #
    # - базовые используемые модули, без дополнительных зависимостей (широко распространенное использование)
    _mod_list_basic = "avp async auth benchmark blst cfg_rpc cfgt cfgutils corex counters \
            Переадресация отладчика ctl enum exec gzcompress ipops kex mangler \
            maxfwd mediaproxy mqueue \
            nat_traversal nathelper path pike pv ratelimit rr rtimer \
            rtpproxy sanity sdpops siputils sl smsops statsc statistics \
            textops textopsx tm tmx topoh topos xlog rtpengine stun sipt "
    
    # - дополнительные используемые модули, без лишних зависимостей
    _mod_list_extras = "auth_diameter call_control cnxcc dmq domainpolicy log_custom \
            msrp pdb qos sca sea sms sst timer tmrec tsilo uac_redirect \
            xhttp xhttp_rpc xprint nosip dmq_usrloc statsd rtjson tcpops \
            auth_xkeys "
    
    # - общие модули в зависимости от базы данных
    _mod_list_db = "acc alias_db auth_db avpops cfg_db db_berkeley db_flatstore \
            db_cluster диалог диспетчер домена группа дроутинга \
            htable imc matrix mohqueue msilo mtree p_usrloc pdt permissions \
            pipelimit prefix_route регистратор sipcapture siptrace speeddial \
            sqlops uac uri_db userblacklist usrloc "
    
    # - общие модули в зависимости от базы данных, с использованием схемы UID db
    _mod_list_dbuid = "db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
            uid_uri_db "
    
    # - модули для разработки
    _mod_list_devel = "malloc_test print print_lib"
    
    # - модули в зависимости от библиотеки pcre3
    _mod_list_pcre = "регулярное выражение lcr диалплана"
    
    # - модули в зависимости от клиентской библиотеки радиуса
    _mod_list_radius = "acc_radius auth_radius misc_radius пиринг"
    
    # - модули в зависимости от клиентской библиотеки ldap
    _mod_list_ldap = "db2_ldap h450 ldap"
    
    # - модули в зависимости от клиентской библиотеки mysql
    _mod_list_mysql = "db_mysql"
    
    # - модули в зависимости от клиентской библиотеки postgres
    _mod_list_postgres = "db_postgres"
    
    # - модули в зависимости от библиотеки unixodbc
    _mod_list_unixodbc = "db_unixodbc"
    
    # - модули в зависимости от библиотеки mysql cassandra
    _mod_list_cassandra = "db_cassandra ndb_cassandra"
    
    # - модули в зависимости от библиотеки xml2
    _mod_list_cpl = "cplc"
    
    # - модули в зависимости от библиотеки xml2
    _mod_list_xml = "xhttp_pi xmlrpc xmlops"
    
    # - модули в зависимости от библиотеки net-snmp
    _mod_list_snmpstats = "snmpstats"
    
    # - модули в зависимости от библиотеки expat
    _mod_list_xmpp = "xmpp"
    
    # - модули в зависимости от библиотеки confuse
    _mod_list_carrierroute = "carrierroute"
    
    # - модули в зависимости от библиотеки bdb (db4)
    _mod_list_berkeley = "db_berkeley"
    
    # - модули в зависимости от библиотеки curl
    _mod_list_utils = "утилит http_client"
    
    # - асинхронный http_async_client
    _mod_list_http_async = "http_async_client"
    
    # - модули в зависимости от фиолетовой библиотеки
    _mod_list_purple = "фиолетовый"
    
    # - модули в зависимости от библиотеки memcache
    _mod_list_memcached = "memcached"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_tls = "auth_identity crypto tls"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_outbound = "исходящий"
    
    # - модули в зависимости от библиотеки unistring
    _mod_list_websocket = "веб-сокет"
    
    # - модули, зависящие от libval-нитей libcrypto libsres libpthread
    _mod_list_dnssec = "dnssec"
    
    # - модули в зависимости от libsctp
    _mod_list_sctp = "sctp"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_authephemeral = "auth_ephemeral"
    
    # - модули, относящиеся к SIMPLE расширениям присутствия
    _mod_list_presence = "присутствие присутствие_конференция присутствие_диалогинфо \
                присутствие_mwi профиль_ присутствия присутствие_reginfo \
                присутствие_xml \
                pua pua_bla pua_dialoginfo pua_reginfo \
                pua_rpc pua_usrloc pua_xmpp \
                rls xcap_client xcap_server "
    
    # - модули в зависимости от библиотеки lua
    _mod_list_lua = "app_lua"
    
    # - модули в зависимости от библиотеки perl
    _mod_list_perl = "app_perl db_perlvdb"
    
    # - модули в зависимости от библиотеки python
    _mod_list_python = "app_python"
    
    # - модули в зависимости от rabbitmq
    _mod_list_rabbitmq = "rabbitmq"
    
    # - модули в зависимости от библиотеки geoip2
    _mod_list_geoip2 = "geoip2"
    
    # - модули в зависимости от библиотеки sqlite
    _mod_list_sqlite = "db_sqlite"
    
    # - модули в зависимости от библиотеки oracle
    _mod_list_oracle = "db_oracle"
    
    # - модули в зависимости от библиотеки json
    _mod_list_json = "json jsonrpcc jsonrpcs"
    
    # - модули в зависимости от библиотеки Redis
    _mod_list_redis = "ndb_redis topos_redis"
    
    # - модули в зависимости от монобиблиотеки
    _mod_list_mono = "app_mono"
    
    # - модули, связанные с расширениями IMS
    _mod_list_ims = "cdp cdp_avp ims_dialog ims_diameter_server ims_auth ims_isc ims_icscf ims_qos \
            ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
            ims_usrloc_scscf ims_charging "
    
    # - модули в зависимости от библиотеки osp toolkit
    _mod_list_osp = "osp"
    
    # - модули в зависимости от библиотеки java
    _mod_list_java = "app_java"
    
    # - модули в зависимости от библиотеки iptables
    _mod_list_iptrtpproxy = "iptrtpproxy"
    
    # - модули в зависимости от библиотеки gzip
    _mod_list_gzcompress = "gzcompress"
    
    # - модули в зависимости от библиотеки uuid
    _mod_list_uuid = "uuid"
    
    # - модули в зависимости от библиотеки ev
    _mod_list_ev = "эвапи"
    
    # - модули в зависимости от kazoo / rabbitmq
    _mod_list_kazoo = "kazoo"
    
    # - модули в зависимости от mongodb
    _mod_list_mongodb = "db_mongodb ndb_mongodb"
    
    # - модули в зависимости от библиотеки jansson
    _mod_list_jansson = "jansson janssonrpcc"
    
    # - модули в зависимости от libm
    _mod_list_jsdt = "app_jsdt"
    
    # - модули зависящие от sqlang
    _mod_list_sqlang = "app_sqlang"
    
    # - модули в зависимости от rabbitmq
    _mod_list_rabbitmq = "rabbitmq"
    
    # - модули в зависимости от sipdump
    _mod_list_sipdump = "sipdump"
    
    # Стандартные модули в основном паке
    _module_group_kstandard = "$ _ mod_list_basic $ _mod_list_dbuid $ _mod_list_ims $ _mod_list_pcre"
    
    # КОНЕЦ Makefile.группы ######################################################################### ############
    
    _modules = "$ _ module_group_kstandard $ _mod_list_websocket $ _mod_list_outbound $ _mod_list_tls $ _mod_list_mysql $ _mod_list_ims $ _mod_list_json $ _mod_list_presence $ _mod_list_utils"
    
    подготовить() {
        cd "$ srcdir / $ pkgname- $ pkgver"
        sed -i 's / bin_dir = sbin \ // bin_dir = bin \ // g' src / Makefile.defs
    }
    
    строить() {
        cd "$ srcdir / $ pkgname- $ pkgver"
    
        сделать ВКУС = kamailio STUN = 1 \
            ПРЕФИКС = / usr \
            CC_EXTRA_OPTS = "$ CFLAGS -fcommon -D_GNU_SOURCE" \
            cfg_target = / etc / kamailio / \
            run_prefix = "" \
            include_modules = "$ _ модулей" \
            LIBDIR = библиотека \
            DESTDIR = "$ pkgdir" \
            cfg_prefix = "$ pkgdir" \
            config
    
        сделать EMBEDDED_UTF8_DECODE = 1 STUN = 1 FREERADIUS = 1 все || возврат 1
    }
    
    упаковка() {
        cd "$ srcdir / $ pkgname- $ pkgver"
        сделать FREERADIUS = 1 -j1 install || возврат 1
        install -Dm0644 "$ {srcdir} / $ pkgname.служба "" $ {pkgdir} /usr/lib/systemd/system/$pkgname.service "
    }
    
    sha256sums = ('ПРОПУСТИТЬ'
                '0ccad93274866b9116fe1e029368b92d4bebd7806a3d8f7978a20e44cf0f6451')  

    Ошибка установки из-за усеченного kamcmd.o:

    LD (gcc) [U kamcmd] kamcmd / usr / bin / ld: kamcmd.o: файл не распознан: файл усечен collect2: ошибка: ld вернул 1 статус выхода make [3]: *** [../../src//Makefile.rules:191: kamcmd] Ошибка 1 ОШИБКА: make —no-print-directory -C ../ ../../utils/kamcmd install-if-newer failed

    Служебный файл поврежден. В строке 9 «EnvironmentFile» установлен в «/ etc / kamailio», который является каталогом, а не файлом. В строке 14 «RuntimeDirectoryMode = 0750» и «Restart = on-failure» должны быть на отдельных строках.

    Я оставляю здесь обновленный PKGBUILD:

      # Сопровождающий: Xavier Devlamynck 
    
    pkgname = kamailio
    pkgver = 5.1.4
    pkgrel = 1
    pkgdesc = "Надежный SIP-сервер"
    url = "http: // www.kamailio.org/ "
    лицензия = ('GPL2')
    арка = ('i686' 'x86_64')
    зависит = ()
    makedepends = ('гибкий' 'бизон' 'docbook2x' 'mariadb' 'postgresql' 'libxml2'
                 'freeradius-client' lua51 'mono' hiredis 'libpurple' net-snmp '
             'libunistring' python2 ')
    optdepends = ('mariadb: поддержка MySQL'
                'expat: поддержка xmpp / jabber'
            'libxml2: поддержка модулей cpl и присутствия'
            'postgresql: серверная часть postgresql')
    источник = (http://www.kamailio.org/pub/kamailio/$pkgver/src/kamailio-$ {pkgver} _src.tar.gz
        $ pkgname.service)
    обеспечивает = ()
    конфликты = ()
    заменяет = ()
    backup = ('etc / kamailio / kamctlrc' 'etc / kamailio / kamailio.cfg' 'etc / kamailio / kamailio-basic.cfg' 'etc / kamailio / kamailio-advanced.cfg')
    
    
    # См. Makefile.groups для списка рекомендуемых модулей для
    # каждый пакет. Далее следует упрощенная версия Makefile.groups.
    #
    # - базовые используемые модули, без дополнительных зависимостей (широко распространенное использование)
    _mod_list_basic = "avp async auth benchmark blst cfg_rpc cfgt cfgutils corex counters \
            Переадресация отладчика ctl enum exec gzcompress ipops kex mangler \
            maxfwd mediaproxy mqueue \
            nat_traversal nathelper path pike pv ratelimit rr rtimer \
            rtpproxy sanity sdpops siputils sl smsops statsc statistics \
            textops textopsx tm tmx topoh topos xlog rtpengine stun sipt "
    
    # - дополнительные используемые модули, без лишних зависимостей
    _mod_list_extras = "auth_diameter call_control cnxcc dmq domainpolicy log_custom \
            msrp pdb qos sca sea sms sst timer tmrec tsilo uac_redirect \
            xhttp xhttp_rpc xprint nosip dmq_usrloc statsd rtjson tcpops \
            auth_xkeys "
    
    # - общие модули в зависимости от базы данных
    _mod_list_db = "acc alias_db auth_db avpops cfg_db db_berkeley db_flatstore \
            db_cluster диалог диспетчер домена группа дроутинга \
            htable imc matrix mohqueue msilo mtree p_usrloc pdt permissions \
            pipelimit prefix_route регистратор sipcapture siptrace speeddial \
            sqlops uac uri_db userblacklist usrloc "
    
    # - общие модули в зависимости от базы данных, с использованием схемы UID db
    _mod_list_dbuid = "db2_ops uid_auth_db uid_avp_db uid_domain uid_gflags \
            uid_uri_db "
    
    # - модули для разработки
    _mod_list_devel = "malloc_test print print_lib"
    
    # - модули в зависимости от библиотеки pcre3
    _mod_list_pcre = "регулярное выражение lcr диалплана"
    
    # - модули в зависимости от клиентской библиотеки радиуса
    _mod_list_radius = "acc_radius auth_radius misc_radius пиринг"
    
    # - модули в зависимости от клиентской библиотеки ldap
    _mod_list_ldap = "db2_ldap h450 ldap"
    
    # - модули в зависимости от клиентской библиотеки mysql
    _mod_list_mysql = "db_mysql"
    
    # - модули в зависимости от клиентской библиотеки postgres
    _mod_list_postgres = "db_postgres"
    
    # - модули в зависимости от библиотеки unixodbc
    _mod_list_unixodbc = "db_unixodbc"
    
    # - модули в зависимости от библиотеки mysql cassandra
    _mod_list_cassandra = "db_cassandra ndb_cassandra"
    
    # - модули в зависимости от библиотеки xml2
    _mod_list_cpl = "cplc"
    
    # - модули в зависимости от библиотеки xml2
    _mod_list_xml = "xhttp_pi xmlrpc xmlops"
    
    # - модули в зависимости от библиотеки net-snmp
    _mod_list_snmpstats = "snmpstats"
    
    # - модули в зависимости от библиотеки expat
    _mod_list_xmpp = "xmpp"
    
    # - модули в зависимости от библиотеки confuse
    _mod_list_carrierroute = "carrierroute"
    
    # - модули в зависимости от библиотеки bdb (db4)
    _mod_list_berkeley = "db_berkeley"
    
    # - модули в зависимости от библиотеки curl
    _mod_list_utils = "утилит http_client"
    
    # - асинхронный http_async_client
    _mod_list_http_async = "http_async_client"
    
    # - модули в зависимости от фиолетовой библиотеки
    _mod_list_purple = "фиолетовый"
    
    # - модули в зависимости от библиотеки memcache
    _mod_list_memcached = "memcached"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_tls = "auth_identity crypto tls"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_outbound = "исходящий"
    
    # - модули в зависимости от библиотеки unistring
    _mod_list_websocket = "веб-сокет"
    
    # - модули, зависящие от libval-нитей libcrypto libsres libpthread
    _mod_list_dnssec = "dnssec"
    
    # - модули в зависимости от libsctp
    _mod_list_sctp = "sctp"
    
    # - модули в зависимости от библиотеки openssl
    _mod_list_authephemeral = "auth_ephemeral"
    
    # - модули, относящиеся к SIMPLE расширениям присутствия
    _mod_list_presence = "присутствие присутствие_конференция присутствие_диалогинфо \
                присутствие_mwi профиль_ присутствия присутствие_reginfo \
                присутствие_xml \
                pua pua_bla pua_dialoginfo pua_reginfo \
                pua_rpc pua_usrloc pua_xmpp \
                rls xcap_client xcap_server "
    
    # - модули в зависимости от библиотеки lua
    _mod_list_lua = "app_lua"
    
    # - модули в зависимости от библиотеки perl
    _mod_list_perl = "app_perl db_perlvdb"
    
    # - модули в зависимости от библиотеки python
    _mod_list_python = "app_python"
    
    # - модули в зависимости от rabbitmq
    _mod_list_rabbitmq = "rabbitmq"
    
    # - модули в зависимости от библиотеки geoip2
    _mod_list_geoip2 = "geoip2"
    
    # - модули в зависимости от библиотеки sqlite
    _mod_list_sqlite = "db_sqlite"
    
    # - модули в зависимости от библиотеки oracle
    _mod_list_oracle = "db_oracle"
    
    # - модули в зависимости от библиотеки json
    _mod_list_json = "json jsonrpcc jsonrpcs"
    
    # - модули в зависимости от библиотеки Redis
    _mod_list_redis = "ndb_redis topos_redis"
    
    # - модули в зависимости от монобиблиотеки
    _mod_list_mono = "app_mono"
    
    # - модули, связанные с расширениями IMS
    _mod_list_ims = "cdp cdp_avp ims_dialog ims_diameter_server ims_auth ims_isc ims_icscf ims_qos \
            ims_registrar_pcscf ims_registrar_scscf ims_usrloc_pcscf \
            ims_usrloc_scscf ims_charging "
    
    # - модули в зависимости от библиотеки osp toolkit
    _mod_list_osp = "osp"
    
    # - модули в зависимости от библиотеки java
    _mod_list_java = "app_java"
    
    # - модули в зависимости от библиотеки iptables
    _mod_list_iptrtpproxy = "iptrtpproxy"
    
    # - модули в зависимости от библиотеки gzip
    _mod_list_gzcompress = "gzcompress"
    
    # - модули в зависимости от библиотеки uuid
    _mod_list_uuid = "uuid"
    
    # - модули в зависимости от библиотеки ev
    _mod_list_ev = "эвапи"
    
    # - модули в зависимости от kazoo / rabbitmq
    _mod_list_kazoo = "kazoo"
    
    # - модули в зависимости от mongodb
    _mod_list_mongodb = "db_mongodb ndb_mongodb"
    
    # - модули в зависимости от библиотеки jansson
    _mod_list_jansson = "jansson janssonrpcc"
    
    # - модули в зависимости от libm
    _mod_list_jsdt = "app_jsdt"
    
    # - модули зависящие от sqlang
    _mod_list_sqlang = "app_sqlang"
    
    # - модули в зависимости от rabbitmq
    _mod_list_rabbitmq = "rabbitmq"
    
    # - модули в зависимости от sipdump
    _mod_list_sipdump = "sipdump"
    
    # Стандартные модули в основном паке
    _module_group_kstandard = "$ _ mod_list_basic $ _mod_list_dbuid $ _mod_list_ims $ _mod_list_pcre"
    
    # КОНЕЦ Makefile.группы ######################################################################### ############
    
    _modules = "$ _ module_group_kstandard"
    
    подготовить() {
        cd "$ srcdir / $ pkgname- $ pkgver"
        sed -i 's / bin_dir = sbin \ // bin_dir = bin \ // g' src / Makefile.defs
    }
    
    строить() {
        cd "$ srcdir / $ pkgname- $ pkgver"
    
        сделать ВКУС = kamailio STUN = 1 \
            ПРЕФИКС = / usr \
            CC_EXTRA_OPTS = "$ CFLAGS -D_GNU_SOURCE" \
            cfg_target = / etc / kamailio / \
            run_prefix = "" \
            include_modules = "$ _ модулей" \
            LIBDIR = библиотека \
            DESTDIR = "$ pkgdir" \
            cfg_prefix = "$ pkgdir" \
            config
    
        сделать EMBEDDED_UTF8_DECODE = 1 STUN = 1 FREERADIUS = 1 все || возврат 1
    }
    
    упаковка() {
        cd "$ srcdir / $ pkgname- $ pkgver"
        сделать FREERADIUS = 1 -j1 install || возврат 1
        install -Dm0644 "$ {srcdir} / $ pkgname.служба "" $ {pkgdir} /usr/lib/systemd/system/$pkgname.service "
    }
    
    md5sums = ('225ad8e7d2d99e02bfcb649079cad8cb'
             '4277a8be96f80faef1d2ae6ba7f26abd')
    
      

    kamailio.service

      [Единица]
    Описание = Kamailio - SIP-сервер с открытым исходным кодом
    Документация = man: kamailio (8) https://www.kamailio.org/
    Хочет = network-online.target
    После = syslog.target network-online.target
    
    [Служба]
    Тип = разветвление
    EnvironmentFile = / etc / kamailio
    PIDFile = / var / run / kamailio.pid
    ExecStart = / usr / bin / kamailio -P / var / run / kamailio.pid $ OPTIONS
    ExecStopPost = / usr / bin / rm -f /var/run/kamailio.pid
    Перезагрузка = при сбое
    
    [Установить]
    WantedBy = multi-user.target
      

    Я не могу собрать этот пакет. Похоже, отсутствует файл Makefile.defs.

    Вывод в конце сборки:

    rm -f cfgt.d cfgt.d cfgt.d * ~
    rm -f qos.d qos.d qos.d * ~
    make [1]: Выход из каталога ‘/tmp/yaourt-tmp-mythtv/aur-kamailio/src/kamailio-5.0.2/src’
    sed: не могу прочитать Makefile.defs: нет такого файла или каталога
    ==> ОШИБКА: произошел сбой в build ().
    Прерывание …
    ==> ОШИБКА: Makepkg не удалось собрать kamailio.
    ==> Перезапустить сборку камайлио? [да / нет]
    ==> ———————————
    ==>

    Помимо неправильных путей, созданный пакет, похоже, не содержит всех файлов, необходимых для поддержки MySQL или postgres, и отсутствует служебный файл systemd.

    Неправильный путь очень раздражает.

    Я решил это, внеся некоторые изменения в PKGBUILD.

    В build () изменил строку на:
    make prefix = / usr cfg_prefix = $ {pkgdir} LIBDIR = lib config

    В package () изменил строку на:
    make DESTDIR = «$ pkgdir» install

    Может быть, есть лучшие решения.

    После установки все пути по умолчанию установлены неправильно:

    Файл конфигурации (по умолчанию: / tmp / yaourt-tmp-user / aur-kamailio / pkg / kamailio / usr / etc / kamailio / kamailio.cfg)

    Путь поиска модулей (по умолчанию: / tmp / yaourt-tmp-user / aur-kamailio / pkg / kamailio / usr / lib / kamailio / modules)

    Кажется, я не могу найти способ изменить их.

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

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Theme: Overlay by Kaira Extra Text
    Cape Town, South Africa