Система взаимодействий в платформе 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 – Неконтекстное обсуждение. Информирование о поступлении нового сообщения
В заключение автору хотелось бы озвучить свои впечатления и мысли, возникшие в ходе тестирования «Системы взаимодействий».
Механизм получился очень интересный, перспективный и отвечающий веяниям времени. Удалённое взаимодействие и электронное общение всё глубже укореняются в нашей жизни, а время становится всё более «дорогим».
Теперь не надо будет при приёме на работу нового сотрудника создавать ему аккаунт в мессенджере для общения по рабочим вопросам. А пользователям не надо переключаться между окнами и уметь пользоваться разными инструментами для электронного общения. Вести учёт и переписку теперь стало возможным в режиме одного окна, без использования сторонних средств!
И напоследок для раздумий и дискуссий в комментариях – фантазии автора (это исключительно мнение автора, которое не имеет ничего общего с мнением команды «Курсы-по-1С» и, тем более, с официальными источниками фирмы «1С»):
Спустя тестовый период использования, сервис 1cDialog.com станет «условно бесплатным»
В рамках договора сопровождения ИТС уровня ПРОФ будет бесплатно предоставляться возможность использования «Системы взаимодействий» ограниченному количеству пользователей
Возможность совершать видеовызовы будет платной даже для категории пользователей, подпадающих под п. 2
Отдельный сервер «Системы взаимодействий» будет являться самостоятельной позицией прайса фирмы «1С»
Появится возможность общаться между собой у пользователей разных информационных баз, а может быть, даже баз, принадлежащих разным абонентам.
А на ваш взгляд, какова вероятность воплощения в жизнь этих фантазий? Пишите в комментариях!
Мы ведем группу ВКонтакте – 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 Бинотел»:
Рис. 1. Журнал «Службы». Служба «Websocket Client Binotel» работает.
Рис. 2. Карточка службы «Websocket Client Binotel», каталог, где находится служба.
Рис. 3. Лог-файл работы службы «Websocket Client Binotel».
Рис. 4. Журнал системных событий. Запись в журнале, что служба «WebSocket Client Binotel» остановлена.
Рис. 5. Журнал системных событий. Запись в журнале, что служба «WebSocket Client Binotel» запущена.
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]
Ошибка работы сокетов в Битрикс: 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 символов. Ключ указывается в настройках пуш-сервера:
В виртуальной машине это поле создается автоматически при первом старте службы или при настройке/обновлении и прописывается в настройки сайта.
Секретный ключ можно получить в /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 и обычным 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 с указанием значения в секундах:
Этот заголовок сообщает шлюзу делать запрос к серверу каждый раз, когда прошло указанное время с момента последнего запроса, даже если еще нет событий для отправки на сервер (в этом случае тело запроса будет пустым).
Обратите внимание, что этот параметр не подтверждается шлюзом, и шлюз может установить минимальное значение. Для совместимости со средами, в которых минимум может быть неизвестен, рекомендуется выбирать консервативное значение, не менее 30 .
Банкноты
Первый запрос ДОЛЖЕН содержать событие OPEN в качестве первого события.
Первый ответ ДОЛЖЕН содержать событие OPEN в качестве первого события.
Если сервер отслеживает соединения и больше не считает, что соединение существует, он должен ответить DISCONNECT.Однако в большинстве случаев серверы не отслеживают соединения.
Шлюз должен иметь только один ожидающий запрос на каждое клиентское соединение. Это гарантирует доставку в порядке.
DISCONNECT событие отправляется, только если соединение не было закрыто должным образом. При чистом закрытии подразумевается отключение.
Отправить небольшое текстовое сообщение, затем отправить кадр с зарезервированным неконтролирующим кодом Opcode = 7 и непустой полезной нагрузкой, затем отправить Ping.
Case Expectation
Получено эхо для первого сообщения, но затем соединение немедленно прерывается, поскольку используется зарезервированный кадр кода операции. Понг не получил.
Результат дела
Фактическое событие соответствует как минимум одному ожидаемому.
Верно, если я (фаззер) являюсь сервером, а одноранговый узел — клиентом.
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]
Причина закрытия, по которой одноранговый узел отправил меня в закрытом кадре (если есть).
Страницы функций — это проектные документы, которые разработчики создали во время совместной работы над oVirt.
Большинство из них устаревшие , но содержат исторический контекст дизайна.
Это , а не пользовательская документация и не должны рассматриваться как таковые.
Документация доступна здесь.
Сводка
Цель этой функции — улучшить настройку движка, позволяя полностью автоматизировать установку и настройку WebSocketProxy на второй машине, где движок не работает.
Владелец
Имя: Симоне Тирабоски (стирабос)
Текущее состояние
Завершен
Последнее обновление — пользователем (WIKI)
Подробное описание
Клиент noVNC, используемый для веб-консоли виртуальной машины, использует веб-сокеты для передачи данных VNC.Однако сервер VNC в qemu изначально не поддерживает веб-сокеты, и между клиентом и сервером VNC должен быть прокси-сервер веб-сокета. Этот прокси-сервер может работать на любом узле, имеющем доступ к сети хоста, но в настоящее время программа настройки ядра может установить и настроить WebSocketProxy только на узле, на котором запущен механизм.
В настоящее время уже можно запустить WebSocketProxy на отдельном хосте, но это требует ручной процедуры. То, что мы предлагаем, немного автоматизирует процесс установки, делая его проще, но при этом требуя некоторых ручных действий на обоих машинах.
Предположение:
Пользователь должен установить необходимые RPM на обоих машинах
Пользователь должен запустить настройку двигателя на обеих машинах.
Этот процесс относится к новой установке, но обновление ovirt-engine-websocket-proxy не должно вызывать проблем.
Два хоста должны быть установлены в строгом порядке:
первый хост с движком для установки также CA
, чем хост с веб-прокси
При этих предположениях это может работать следующим образом:
На первом узле:
Через yum пользователь устанавливает необходимые обороты на первой машине (двигательной)
Затем он может запустить установку двигателя
engine-setup спросит о конфигурации двигателя; пользователь должен выбрать ДА, чтобы установить туда двигатель.
На втором узле:
Через yum пользователь установите необходимый RPM (yum install ovirt-engine-websocket-proxy)
Затем он может запустить установку двигателя
Если пользователь также установил обороты двигателя, программа настройки двигателя спросит о конфигурации двигателя; пользователь должен выбрать НЕТ. Вместо этого он должен выбрать настройку прокси-сервера websocket
.
, подтверждая, что механизм не настраивается, в настройке ядра отображается инструкция по настройке удаленного механизма для взаимодействия с прокси-сервером websocket на этом хосте, в частности:
он показывает команду для настройки на хосте движка нового местоположения прокси-сервера websocket (через engine-config)
поддерживает настройку сертификата прокси-сервера websocket, предлагая необходимые команды; это может произойти двумя разными способами:
inline: настройка движка генерирует и печатает CSR на экране, пользователь должен вставить его на хост движка в хорошо известный путь, подписать его, а затем вставить обратно подписанный сертификат в пользовательский интерфейс настройки движка
на основе файла: не сильно отличается от предыдущего, CSR не отображается на экране, а сохраняется во временном файле, пользователь должен скопировать его на другой хост, чтобы подписать его, а затем скопировать обратно подписанный файл сертификата с указанием локального пути при необходимости
Установка двигателя
также запрашивает fqdn двигателя для автоматической загрузки сертификата двигателя
В конце прокси-сервер WebSocket работает на другом хосте, чтобы подключиться к нему из вашего браузера, доверяющего сертификату движка, этого недостаточно (потому что теперь у нас два хоста), поэтому пользователь должен загрузить сертификат CA и явно доверять ему в его браузере.Сертификат CA можно загрузить с http: // /ca.crt
.
Две виртуальные машины были созданы с установленной Fedora 19. Они называются «f19t11» (для движка) и «f19t12» (для веб-прокси).
Двигатель
Установить двигатель как обычно на первый хост.
Прокси-сервер WebSocket
Добавить 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 ~] # /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 новой записью
База данных обновлена
Сертификат будет доступен по предложенному пути, то есть на хосте движка:
Возьмите последний раздел, чтобы ввести его на прокси-сервер websocket
Введите цепочку сертификатов WSP, которая соответствует запросу сертификата,
(эмитент не обязательно, от среднего до высшего)
введите '- = 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)
Сбор с подсветкой
Использование кешированного 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
Может быть, есть лучшие решения.
После установки все пути по умолчанию установлены неправильно:
Я добавил в 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
Может быть, есть лучшие решения.
После установки все пути по умолчанию установлены неправильно: