<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tamkovich.com: Телеком/VoIP блог &#187; AGI</title>
	<atom:link href="http://tamkovich.com/tag/agi/feed/" rel="self" type="application/rss+xml" />
	<link>http://tamkovich.com</link>
	<description>Современные технологии: Asterisk, SIP, Kamailio, Linux, Cisco, Linksys</description>
	<lastBuildDate>Mon, 30 Jan 2012 11:42:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Asterisk Gateway Interface 1.4 and 1.6 Programming</title>
		<link>http://tamkovich.com/2010/01/asterisk-gateway-interface-agi-programming/</link>
		<comments>http://tamkovich.com/2010/01/asterisk-gateway-interface-agi-programming/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 14:30:40 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[Книги]]></category>
		<category><![CDATA[AGI]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=899</guid>
		<description><![CDATA[Прочёл очередную книгу, от индусского издательства packt publishing &#8211; Asterisk Gateway Interface 1.4 and 1.6 Programming. Книга небольшая &#8211; около 200 страниц. До середины книги, я был крайне разочарован уровнем материала. Удручало большое количество текста скопированного из справки Asterisk. Я так делал в институте, на курсовых и лабораторных &#8211; что бы добить отчёт до требуемого [...]]]></description>
			<content:encoded><![CDATA[<p><img align=left src=/wp-content/uploads/2010/01/agi-book.png class="inlineimg" ></p>
<p align=justify>
Прочёл очередную книгу, от индусского издательства packt publishing &#8211; <a href=http://www.packtpub.com/asterisk-gateway-interface-programming/book >Asterisk Gateway Interface 1.4 and 1.6 Programming</a>. Книга небольшая &#8211; около 200 страниц. До середины книги, я был крайне разочарован уровнем материала. Удручало большое количество текста скопированного из справки <a href=http://tamkovich.com/asterisk/ >Asterisk</a>. Я так делал в институте, на курсовых и лабораторных &#8211; что бы добить отчёт до требуемого размера, вставлял в него общедоступные тексты. Но тут ведь совсем другое! Одно дело халтурить самому, и совсем другое покупать халтуру за свои деньги! :) Кроме обширных заимствований из справки, в первой половине книги присутствует гигантское количество опечаток и ошибок, такое впечатление, что в издательстве packt publishing должность корректора и редактора &#8211; упразднили из-за кризиса. Вот лишь пара ошибок: CALLERID(all) называется переменной на странице 37 и далее, на странице 43 блоксхема нарисована неверно (стрелка не в ту сторону), на странице 39 дан некорректный пример:
</p>
<pre>
exten => s,n,Set(SOMEVAR=${12127773456:-3) ; SOMEVAR = 654
</pre>
<p align=justify >
Эти, и многие другие ошибки, могут смутить начинающего администратора <a href=http://tamkovich.com/asterisk/ >Asterisk</a>.
</p>
<p><span id="more-899"></span></p>
<p align=justify >
Вторая половина книги разительно отличается от первой. Материал изложен бодро и понятно, ошибок я не нашёл и минимум заимствований из открытых источников (см справка <a href=http://tamkovich.com/asterisk/ >Asterisk</a>). Такое впечатление, что первую половину книги писал чернорабочий из packt publiching, а вторую, сам автор &#8211; Nir Simionovich. Особенно приятно то, что автор не останавливается на детальном разборе готовых AGI классов (phpagi и <a href=http://tamkovich.com/asterisk/ >Asterisk</a>-AGI), а объясняет как писать эффективные AGI приложения. Подробно рассматривается механика AGI &#8211; особенности взаимодействия Aterisk и внешних программ с помощью пайпов и сокетов.
</p>
<p align=justify >
В конце книги приводятся подсказки по созданию типовых AGI приложений &#8211; сервиса Click-2-Call и шлюза записи разговоров. В целом, книга понравилась, не смотря на крайне слабую первую часть. Кстати про первую часть, во втором издании, её можно было бы заменить другим, более полезным материалом. Например уделив внимание ещё популярному языку для AGI &#8211; Perl или Python. Так же, можно увеличить количество примеров приведенных в конце книги и глубину их проработки. Рекомендую книгу всем кто собирается писать AGI скрипты. Да и тем кто уже пишет тоже &#8211; для систематизации мыслей.
</p>
<p align=justify >
Кстати, у автора есть интересный блог &#8211; <a href=http://www.simionovich.com/ >http://www.simionovich.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2010/01/asterisk-gateway-interface-agi-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AGI: Failed to execute &#8216;/var/lib/asterisk/agi-bin/mu.agi&#8217;: Permission denied</title>
		<link>http://tamkovich.com/2009/10/agi-failed-execute-permission-denied/</link>
		<comments>http://tamkovich.com/2009/10/agi-failed-execute-permission-denied/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 20:48:51 +0000</pubDate>
		<dc:creator>Сергей Тамкович</dc:creator>
				<category><![CDATA[Asterisk]]></category>
		<category><![CDATA[AGI]]></category>

		<guid isPermaLink="false">http://tamkovich.com/?p=505</guid>
		<description><![CDATA[Если, вы проверили права на скрипт, на директорию agi-bin, их владельца, а Asterisk, по непонятным причинам, отказывается запустить Ваш AGI скрипт возможно проблема в том, что ваша операционная система устарела. Обычно подобные ошибки выглядят вот так: -- Executing [*99@7:1] AGI("SIP/1007-09d78670", "smartoffice,xxx") in new stack -- Launched AGI Script /var/lib/Asterisk/agi-bin/smartoffice AGI Tx >> agi_request: smartoffice AGI [...]]]></description>
			<content:encoded><![CDATA[<p align=justify>
Если, вы проверили права на скрипт, на директорию agi-bin, их владельца, а <a href=http://tamkovich.com/asterisk/ >Asterisk</a>, по непонятным причинам, отказывается запустить Ваш AGI скрипт возможно проблема в том, что ваша операционная система устарела. Обычно подобные ошибки выглядят вот так:
</p>
<p><span id="more-505"></span></p>
<pre>
    -- Executing [*99@7:1] AGI("<a href=http://tamkovich.com/tag/sip/ >SIP</a>/1007-09d78670", "smartoffice,xxx")
                                                     in new stack
    -- Launched AGI Script /var/lib/<a href=http://tamkovich.com/asterisk/ >Asterisk</a>/agi-bin/smartoffice
<SIP/1007-09d78670>AGI Tx >> agi_request: smartoffice
<SIP/1007-09d78670>AGI Tx >> agi_channel: <a href=http://tamkovich.com/tag/sip/ >SIP</a>/1007-09d78670
<SIP/1007-09d78670>AGI Tx >> agi_language: ru
<SIP/1007-09d78670>AGI Tx >> agi_type: <a href=http://tamkovich.com/tag/sip/ >SIP</a>
<SIP/1007-09d78670>AGI Tx >> agi_uniqueid: 1256325972.1
<SIP/1007-09d78670>AGI Tx >> agi_version: SVN-branch-1.6.0-r225583M
<SIP/1007-09d78670>AGI Tx >> agi_callerid: 1007
<SIP/1007-09d78670>AGI Tx >> agi_calleridname: unknown
<SIP/1007-09d78670>AGI Tx >> agi_callingpres: 0
<SIP/1007-09d78670>AGI Tx >> agi_callingani2: 0
<SIP/1007-09d78670>AGI Tx >> agi_callington: 0
<SIP/1007-09d78670>AGI Tx >> agi_callingtns: 0
<SIP/1007-09d78670>AGI Tx >> agi_dnid: *99
<SIP/1007-09d78670>AGI Tx >> agi_rdnis: unknown
<SIP/1007-09d78670>AGI Tx >> agi_context: 7
<SIP/1007-09d78670>AGI Tx >> agi_extension: *99
<SIP/1007-09d78670>AGI Tx >> agi_priority: 1
<SIP/1007-09d78670>AGI Tx >> agi_enhanced: 0.0
<SIP/1007-09d78670>AGI Tx >> agi_accountcode:
<SIP/1007-09d78670>AGI Tx >> agi_threadid: 146017168
<SIP/1007-09d78670>AGI Tx >> agi_arg_1: xxx
<SIP/1007-09d78670>AGI Tx >>
<SIP/1007-09d78670>AGI Rx << verbose "Failed to execute
    '/var/lib/<a href=http://tamkovich.com/asterisk/ >Asterisk</a>/agi-bin/smartoffice': Permission denied" 2
  == smartoffice,xxx: Failed to execute
'/var/lib/<a href=http://tamkovich.com/asterisk/ >Asterisk</a>/agi-bin/smartoffice': Permission denied
<<a href=http://tamkovich.com/tag/sip/ >SIP</a>/1007-09d78670>AGI Tx >> 200 result=1
[Oct 23 23:26:12] WARNING[4681]: res_agi.c:2801 run_agi: unable to send
              SIGHUP to AGI process 4682: No such process
</pre>
<p align=justify>
С этой проблемой я столкнулся после очередного обновления <a href=http://tamkovich.com/asterisk/ >Asterisk</a>. А точнее после ревизии 172503 (5 января 2009 года). Изменения в этой ревизии манипулируют способностями форкнутых процессов с помощью libcap. На операционной системе Centos 5.x данное изменение не вызвало никаких неприятностей. А вот на другой системе, где установлена Fedora 8, AGI скрипты не работали с января. Проблема кроется в файле res/res_agi.c:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>681
682
683
684
685
686
687
688
689
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#ifdef HAVE_CAP</span>
                cap_t cap <span style="color: #339933;">=</span> cap_from_text<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;cap_net_admin-eip&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>cap_set_proc<span style="color: #009900;">&#40;</span>cap<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                        <span style="color: #808080; font-style: italic;">/* Careful with order! Logging cannot happen after we close FDs */</span>
                        ast_log<span style="color: #009900;">&#40;</span>LOG_WARNING<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;Unable to remove capabilities.<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
                cap_free<span style="color: #009900;">&#40;</span>cap<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">#endif</span></pre></td></tr></table></div>

<p align=justify>
Скорее всего, суть проблемы заключается в специфической обработке способностей &laquo;cap_net_admin-eip&raquo; в старых дистрибутивах. Самое простое решение &#8211; закомментировать данный кусок кода.</p>
]]></content:encoded>
			<wfw:commentRss>http://tamkovich.com/2009/10/agi-failed-execute-permission-denied/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

