Прилаживаю к своим Астерискам дополнительный удобный функционал. А именно - возможность осуществлять исходящие звонки из разных WEB-форм. Есть такой старенький, но вполне работоспособный плагин "Asterisk Click2Dial" для FireFox'а. Поставил его (на линуксовом компьютере), настроил его, завел в астерисковом серверве в файле /etc/asterisk/manager.conf соответствующего пользователя. Проверил, работает... Нравится...
А теперь вопросы:
1. Если у меня Астериск обслуживает несколько IP-телефонов, то сколько пользователей я должен заводить в manager.conf? Достаточно одного аккаунта на всех пользователей, или надо для каждой пары компьютер-телефон заводить своего персонального юзера? Я не смог нагуглить ответ на этот простой вопрос.
2. Аналогичный плагин есть и для Google Crome, как я понимаю. Но... Аппетит то приходит во время еды и вот вопрос - а есть ли для той же винды (начиная с XP) просто отдельная задачка, которая висит в трее и работает аналогично этим плагинам? То есть выделенный кусок текста с цифрами (неважно где) считает телефонным номером и отдает его в * для установления соединения... Здесь мне тривиально не хватает кругозора. Код то примитивный, а задачка - актуальна. Зачем привязываться к конкретным плагинам, когда можно всё сделать простым сервисом в трее? Ну и аналогичный вопрос для Linux'а с GNOME-3...
| Cruiser78 писал(а): |
| Проверил, работает... Нравится... |
Хакерам тоже понравится, уж поверьте.
Asterisk config manager.conf
| Цитата: |
| Note that activating the manager API opens a TCP port. Make sure you know what you are doing. |
| Цитата: |
Security tips
Don't enable it on a public IP. Use http://www.stunnel.org/ or a SSH tunnel Watch out with management programs with direct interface to the manager. Limit the privileges per user (especially the system!) |
Открывая прямой доступ к AMI и пускание туда юзеров = открытие потенциальной дыры для жаждущих позвонить на остров Святой Елены.
НЕ РЕКОМЕНДУЮ ДЕЛАТЬ ЭТОГО
Данный функционал можно реализовать путем собственного API и плагина для браузера. Да это сложнее, но надежно и безопасно.
1. Достаточно одного.
Один аккаунт в manager.conf может использоваться многократно на разных клиентах, т.к. он нужен лишь для прохождения аутентификации.
2. Под Windows: не слышал никогда о такой проге.
_________________
mega-net.ru - IT аутсорсинг
Обычный же юзер зажат в своем контексте, а там тоже нет никаких маршрутов на "каймановы острова". То есть в моем Астериске вообще нет никаких подобных маршрутов. Куда можно звонить - прописано явно. А не попал в разрешающую маску - обломс...
Равно как и подставить свой "девайс" вместо легального - тоже обломится. У меня все клиенты (шлюзы и софтфоны, если есть) жестко прибиты к их IP-адресам. Так что здесь я, в определенной мере, спокоен.
Собственный API и плагин для броузера? Стар я уже писать собственный код. Стар и ленив велосипеды изобретать. Но те полтора десятка строчек кода на PHP, с помощью которых и осуществляется такой дозвон не дают мне покоя. Ведь сам по себе функционал очень прост. Получить выделенный на экране текст, оставить в нем только цифры и позвонить. Зачем такое привязывать к какому-то определённому браузеру? Гораздо универсальнее иметь обычное приложение, которое будет осуществлять данный функционал. И вот почему его никто не написал... По моему, для корпоративных Астерисков это вполне востребованная задача.
Ведь те же самые 1С-ники такой функционал реализуют, но только в рамках 1С. А если ты вышел из этих рамок? Для Хрома есть аналогичный плагин. Для FireFox'а и Thunderbird'a тоже реализовано. В общем, какой-то зоопарк получается. А если по ряду причин юзеру надо работать с IE и оутлоком? Как там такое реализовать?
Но это всё - вопросы риторические, ответа не требующие. А вот то, что ответа требует:
- То, что может сделать пользователь в открытом ему AMI определяется следующими настройками (у меня пока так):
| Код: |
| read = system,call,log,verbose,command,agent,user,config,originate write = call,log,originate |
Естественно, что чем меньше ему разрешено, тем меньше и нагадит. То есть надо реализовать принцип минимума полномочий. Отсюда - какие именно полномочия для осуществления Call2Dial, набора номера на компьютере в этом перечне избыточны? Что именно следует убрать из этого широкого перечня. Ну, понятно, что "originate" убирать не стоит, на ней всё и построено. А вот остальные - насколько критичны? Или это надо подбирать экспериментальным путем?
Остальное расписано прямо в manager.conf:
| Цитата: |
| ; Authorization for various classes ; ; Read authorization permits you to receive asynchronous events, in general. ; Write authorization permits you to send commands and get back responses. The ; following classes exist: ; ; all - All event classes below (including any we may have missed). ; system - General information about the system and ability to run system ; management commands, such as Shutdown, Restart, and Reload. ; call - Information about channels and ability to set information in a ; running channel. ; log - Logging information. Read-only. (Defined but not yet used.) ; verbose - Verbose information. Read-only. (Defined but not yet used.) ; agent - Information about queues and agents and ability to add queue ; members to a queue. ; user - Permission to send and receive UserEvent. ; config - Ability to read and write configuration files. ; command - Permission to run CLI commands. Write-only. ; dtmf - Receive DTMF events. Read-only. ; reporting - Ability to get information about the system. ; cdr - Output of cdr_manager, if loaded. Read-only. ; dialplan - Receive NewExten and VarSet events. Read-only. ; originate - Permission to originate new calls. Write-only. ; agi - Output AGI commands executed. Input AGI command to execute. ; cc - Call Completion events. Read-only. ; aoc - Permission to send Advice Of Charge messages and receive Advice ; - Of Charge events. ; test - Ability to read TestEvent notifications sent to the Asterisk Test ; Suite. Note that this is only enabled when the TEST_FRAMEWORK ; compiler flag is defined. ; ;read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan ;write = system,call,agent,user,config,command,reporting,originate |
_________________
mega-net.ru - IT аутсорсинг
| Cruiser78 @ Сб Авг 29, 2015 18:15 писал(а): |
| Но это всё - вопросы риторические, ответа не требующие. |
Вы недооцениваете риск открытия порта AMI. Из-за небезопасности таких плагинов они и не получили и не получат широкого распространения.
_________________
http://www.myipats.ru
| Код: |
| [Dialer] secret = XXXXXXX deny=0.0.0.0/0.0.0.0 permit=LOCALNET-IP read = call,log,verbose,agent,user,reporting write = call,originate |
То есть, юзер может только позвонить (originate) по заданному номеру. Но он и так по этому номеру может позвонить. Юзер может перевести вызов. Но он и так может перевести вызов со своего телефона. Юзер может отклонить вызов. Но он и так это может сделать со своего телефона. А что он еще может сделать в рамках данных полномочий AMI? По моему - ничего, кроме того, что он может сделать со своего телефона.
Единственное, что мне не очень понравилось - это возможность явно, у вызывающего, задать контекст, из которого данный юзер начнет работать. То есть, вроде как возможно осуществить вызов из иного контекста с большими возможностями. Хотя, не знаю... Это надо попроверять, из какого именно контекста будет идти originate-вызов. Из заданного во "внутренних номерах" или навязанного.
Так что большого риска я не вижу. Надо только правильно распоряжаться с предоставляемыми полномочиями. Ведь никто же (кроме альтернативно одаренных) не выставляет в Интернет хост с беспарольным рутом...
| Cruiser78 писал(а): |
| Так что большого риска я не вижу. |
Как скажете. Грабельки ждут Вас
| Cruiser78 писал(а): |
| Какую угрозу несут... |
Вероятность появления какой либо заразы, на компе пользователя, которая воспользуется данным функционалом, выше чем зараза для телефонного аппарата.
Вероятность того, что когда нить Asterisk`у дадут реальник или пробросят порты (случайно/умышленно), но абсолюно позабудут по открытый AMI.
Вероятность опечатки при правки конфига.
Вероятность .... и т.п.
Дело ваше, решение ваше. Наше дело предупредить, мы предупредили.
Каждый сам для себя оценивает риски. Когда я подходил к данному вопросу, я изучил доку, затем печальный опыт в Инете и затем оценил риски для себя. Посему пошел сложным путем и AMI доступен только на 127.0.0.1 и никак иначе, и никакой пользователь никак и никогда не будет иметь прямого подключения к AMI.
_________________
mega-net.ru - IT аутсорсинг
Позволяет читать через порт все что происходит в астере и анализировать содержимое, мне кажется этого достаточно.
_________________
http://www.myipats.ru
| Цитата: |
| ead = call,log,verbose,agent,user,reporting Позволяет читать через порт все что происходит в астере и анализировать содержимое, мне кажется этого достаточно. |
Вот мне и интересно, что здесь явно лишнее. Для того же Click2Dial.
В чем проблема выяснить это самостоятельно ?
_________________
mega-net.ru - IT аутсорсинг
- сделал оригинейт на этот канал
- при ответе зарулил на MusicOnHold.
- ???
- профит
Или подобным образом воспользоваться ajam => originate?
Только свое простейшее апи. А пользоваться им напрямую с веб-странички. Безо всяких плагинов и обращений к ами.
Или написать простейший клиент на лазарус, который будет просто дергать апи.
> Только свое простейшее апи. А пользоваться им напрямую с веб-странички. Безо всяких плагинов и обращений к ами.
С чьей именно веб-странички??? Каким именно образом я могу вставить свой код в чужую страницу, где телефоны опубликованы? Или проанализировать содержимое пришедшего письма на предмет телефонного номера? Я не собственный же сайт (с ним всё просто) делаю, а рабочее место пользователя. С которого он может позвонить по найденному в интернете телефонному номеру. Мои сайты, при этом, вообще никак не задействованы. Это же очевидно...
| Cruiser78 писал(а): |
| Каким именно образом я могу вставить свой код в чужую страницу, где телефоны опубликованы? |
Элементарно Ватсон !
С помощью плагина в браузер можно вставить что угодно на любую страницу.
Примеры подобных плагинов:
chrome click2dial plugin
firefox click2dial plugin
Вот и сделайте свой плагин, который по клику на телефон будет обращаться к вашему API и ваши "сайты" сразу станут быть задействованными - это же очевидно.
_________________
mega-net.ru - IT аутсорсинг
без каких либо плагинов, к чему либо, задачу не реализовать, т.к.:
| Cruiser78 писал(а): |
| С которого он может позвонить по найденному в интернете телефонному номеру. |
Если речь идет просто о клике по номеру на любой странице, т.к. какой то код все равно должен быть, который ищет номера и вставляет соответствующую ссылку.
_________________
mega-net.ru - IT аутсорсинг