15 нояб. 2011 г.

Удаляем фото с wikipedia.org

На днях на страницах википедии появился спам с уродской фотографией, которая присутствует на всех страницах. Чтобы заблокировать этот спам на страницах русской части проекта просто добавьте фильтр в настройки Adblock.
ru.wikipedia.org##DIV[id="siteNotice"]
Данный фильтр работает как в Firefox, так и в Chromium.

30 окт. 2011 г.

Летнее время! Теперь ты всегда с нами!!!

FreeBSD

Сегодня с сожалением обнаружил, что FreeBSD перевела часы с летнего времени. Увы, нужно обновлять мир. Но есть и более быстрый, но в то же время надёжный способ скорректировать часовые пояса: Не забываем сначала обновить порты, чтобы гарантированно получить свежий tzdata. Далее:

portmaster misc/zoneinfo
tzsetup

Собственно после выбора правильно часового пояса часы на сервере начинают показывать правильное время. Однако некоторые службы могут всё ещё неправильно работать, в частности cron, mysql и, возможно, многие другие. Можно просто перезапустить сервер, либо перезапустить службы, которые так или иначе пользуются часами:

service mysql-server restart
service cron restart
Поскольку мы заменяем часть системы, то не забываем добавить MK_ZONEINFO="no" в /etc/make.conf, как сказано в документации, иначе после обновления мира мы потенциально рискуем получить старую версию tzdata.

Ubuntu

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

Windows

Тут проблема возникает со старыми версиями Windows 2000. Обновление KB2570791 для них не выпущено. Однако всё можно починить самостоятельно: после установки патча KB2570791 на WinXP экспортировать из реестра ветку [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones]; сохранить эти изменения в виде *.reg-файла; импортировать подготовленный *.reg-файл в реестр на Win2k-машинах.

Можете скачать уже экспортированные ветки реестра для русский и английской версии. Разница лишь в языке написания названий часовых поясов.

16 окт. 2011 г.

Gnome/Unity: меняем местоположение кнопок управления окном

На днях поставил на свой старый ноутбук Gentoo. После довольно продолжительного использования Ubuntu очень напрягает расположение кнопок управления окном справа (как в Windows). Решил вспомнить как делал противоположное действие в Ubuntu нашёл рецепт.

Для изменения местоположения кнопок достаточно именить ветку реестра gnome: apps → metacity → general, параметр button_layot. Для запуска редактора реестра:

$ gconf-editor

В настройках указывается список необходимых кнопок:

  • menu — кнопка вызова меню управления окном
  • minimize — кнопка минимизация окна
  • maximize — кнопка максимизация окна
  • close — кнопка закрытия окна

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

Если необходимо сделать кнопки как в Ubuntu, просто укажите значение

close,minimize,maximize:

Аналогично можно сделать «классическое расположение кнопок».

:minimize,maximize,close

P.S. В Unity и Gnome 3 аналогичные настройки находятся в /org/gnome/desktop/wm/preferences. Для запуска редактора реестра следует использовать:

$ dconf-editor

28 июл. 2011 г.

ЧПУ на русском языке

Иногда для малограмотных людей в URL используют русские символы. Чтобы адреса с русскими символами копировались без проблем в Firefox, запускаем about:config и редактируем network.standard-url.escape-utf8 = false (по умолчанию true. После этого русские символы копируются из URL как есть, а не по стандарту.

22 июл. 2011 г.

Настойка связки FreeBSD 8.2+Asterisk 1.8.5+модем Huawei E150

Речь пойдёт о связке FreeBSD 8.2+Asterisk 1.8+модем Huawei E150. Цель - принимать входящие и осуществлять исходящие вызовы и принимать SMS. Модем Huawei E150 практически аналогичен модему Huawei E1550. Единственное различие - отсутствие кардридера для MisroSD-карт памяти.

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

cd {путь для исходных текстов}
svn checkout http://asterisk-chan-dongle.googlecode.com/svn/trunk/ asterisk-chan-dongle-read-only
asterisk-chan-dongle-read-only
./configure
gmake
gmake install
cp etc/dongle.conf /usr/local/etc/asterisk

Установка модема на сервер прошла успешно. Система сразу же определила несколько устройств. В том числе 4 порта COM (cuaU0.x) и CD-накопитель. Судя по этому модем можно не перепрограммировать модем если наличие виртуального CD в системе не смущает.

Настраиваем /usr/local/etc/asterisk/dongle.conf:

[general]
interval=15

[datacard0]
context=incoming-utel           ; Контекст для вызовов. Должен быть описан в дайлплане.
audio=/dev/cuaU0.1  ; Порт для аудио
data=/dev/cuaU0.2  ; Порт для команд
group=1
rxgain=3
txgain=3
autodeletesms=yes
resetdatacard=yes
u2diag=0
usecallingpres=yes
callingpres=allowed_passed_screen

[datacard1]
context=incoming-motiv
audio=/dev/cuaU3.1
data=/dev/cuaU3.2
group=2
rxgain=0
txgain=0
autodeletesms=yes
resetdatacard=yes
u2diag=0
usecallingpres=yes
callingpres=allowed_passed_screen

Большинство параметров я взял из шаблона [datacard1]. Всё лишнее удалил.

По непонятной мне причине при первом включении оказалось 4 порта cuaU для каждого модема. Изначально было указано audio - cuaUx.2, для data cuaUx.3.

Для того, чтобы Asterisk получил доступ к портам дадим пользователю asterisk доступ к ресурсам группы dialer.

# pw usermod asterisk -G dialer

Дальше всё просто. Настраиваем дайлплан. Для хранения информации по дайлплану я использовал extensions.ael:

context incoming-utel {
s => {
Set(CALLERID(all)=$[CALLERID(num)]);
Dial(SIP/903&SIP/900,60,t);
};
sms => {
Verbose(Incoming SMS from ${CALLERID(num)} ${SMS});
System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt);
Hangup();
};
}

По команде Dial в моём варианте вызов будет поступать на внутрениие номера 903 и 900. Кто первый ответит, тот и будет разговаривать. Замените номера своими. Естественно, здесь можно использовать все варианты команды Dial, т.е. можно отправлять вызов и на внешние направления. Всё зависит от вашей фантазии и финансов. Как правило вызовы на сеть ТФОП и сотовые телефоны не бесплатные, а платить вы будете за исходящий вызов, поэтому будьте внимательными.

Команда Set нужна для того, чтобы определялся номер звонящего на SIP-телефоне. Если эту строку удалить, то вместо номера будет указано "datacard0". Возможно вам это покажется полезным если вы планируете использовать Asterisk в качестве основы Call-центра - ваши операторы не будут видеть кто им дозванивается и не смогут игнорировать "плохих" клиентов. В любом случае узнать позже номер звонящего абонента можно в файлах CDR.

SMS принимаются и в файл /var/log/asterisk/sms.txt. Можете заманить команду echo любой командой и выполнять необходимые вам действия при приёме SMS.

Если Asterisk сообщает, что хранилище SMS переполнено: [datacard0] SMS storage is full - удалите все сообщения с помощью команды в консоли Asterisk:

# asterisk -r
tavda*CLI> dongle cmd datacard0 AT+CMGD=1,4

Теперь можем проверить работоспособность входящего канала:

tavda*CLI> dongle show devices
ID           Group State      RSSI Mode Submode Provider Name  Model      Firmware          IMEI      IMSI      Number        
datacard1    1     Free       18   3    3       MOTIV      E150       11.609.82.02.143  35210...  25035...  Unknown       
datacard0    1     Free       27   3    3       Utel       E150       11.609.82.02.143  35210...  25017...  +790225...

Если есть желание, то можно задать номер телефона для сим-карт с номером Unknown:

tavda*CLI> dongle cmd datacard1 AT+CPBS=\"ON\"
tavda*CLI> dongle cmd datacard1 AT+CPBW=1,\"+795273XXXXX\",145

Для осуществления исходящих вызовов через модемы просто используйте соответствующие шаблоны в extensions.ael:

_89022[5-7]XXXXX => Dial(Dongle/datacard0/${EXTEN});
_895304XXXXX => Dial(Dongle/datacard1/${EXTEN});

Вот собственно и всё. Больше ничего от модема мне не требовалось. При желании можете найти варианты настройки Asterisk для работы с модемом Huawei E1550. Настройки дайлплана для E150 будут аналогичные.

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

P.S. Первоначальный вариант статьи от 22.12.2010 03:41 был переработан. Вместо chan_datacard теперь используется chan_dongle. Также произведён переход с FreeBSD 8.1 на 8.2 и Asterisk 1.8.0 на 1.8.5. По большей части всё описанное выше справедливо и для старых версий. Однако рекомендую при установке пользоваться свежими версиями.

15 июл. 2011 г.

Мелочи для Ubuntu

Установка 64-битного flashplayer:
sudo add-apt-repository ppa:sevenmachines/flash
sudo apt-get update
sudo apt-get install flashplugin64-installer
Свежая версия wine:
sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update
sudo apt-get install wine1.3
Эмулятор CD:
sudo add-apt-repository ppa:cdemu/ppa
sudo apt-get update
sudo apt-get install cdemu-daemon cdemu-client gcdemu
P.S. Дополнение от 13.11.2011. Репозиторий flashplayer закрылся. 64 битная версия теперь есть в официальном репозитории.

20 июн. 2011 г.

Тюнинг MySQL

Заставляем MySQL "говорить" на UTF-8:

[mysqld]
default-character-set = utf8
character-sets-dir = /usr/local/share/mysql/charsets
language = /usr/local/share/mysql/russian

17 мая 2011 г.

Разноцветные man

Случайно в комментариях на хабре натнулся на любопытный кусок ~/.bashrc

export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'
export LESS_TERMCAP_so=$'\E[01;44;33m'
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'

Автор (tony_ru) почитал http://itshaman.ru/articles/58/podsvetka-sintaksisa-man-stranits-v-linux-ili-kak-zadat-tsvet-v-redaktore-less, но я в подробности не вдавался. Просто добавил сей код. man теперь читать приятнее.

17 мар. 2011 г.

Наконец-то заработал микрофон в Skype под Ubuntu 10.10

Наконец-то заработал микрофон в Skype под Ubuntu 10.10 на ноутбуке Asus K50AB. Случилось это после создания файла .asoundrc со следующим содержимым.

fsa@fsa-laptop:~$ cat ~/.asoundrc 
pcm.pulse { type pulse }
ctl.pulse { type pulse }
pcm.!default { type pulse }
ctl.!default { type pulse }

Микрофон хоть и заработал, но всё равно не всё так гладко. После падения PulseAudio (а падает он часто, например если воткнуть наушники и поиграться регулятором громкости) микрофон снова перестаёт работать. Иногда падает прямо после входа в систему (мелодия приветствия начинает заикаться). Лечится перезагрузкой. Всё равно лучше так, чем совсем никак.

Подробности расписаны на http://habrahabr.ru/blogs/nix/106806/. Информация не для рядового юзера, а для того, у кого есть масса свободного времени.

Верстаем диплом в LaTeX

Настал момент, когда мне потребовалось писать дипломный проект в университете. Естественным требованием было соблюдение ГОСТ при оформлении. Word был отметён сразу, т.к. я обычно работаю в Linux. OpenOffice.org/LibreOffice несмотря на то, что были удобнее, тоже не совсем устраивали. Для написания диплома выбрал LaTeX. Опыта работы с ним было довольно мало (делал всего одну контрольную в нём). Но не смотря на сжатые сроки я всё-таки решился набирать диплом именно в нём. Для всех желающих приведу сборник рецептов для написания диплома.

Шаблон документа ЕСКД

Первое, что пришлось найти - шаблон, соответствующий ГОСТам. Был выбран eskdx, имеющийся в составе TeX-Live. Создаём шаблон нашего будущего документа:

\documentclass[russian,utf8,floatsection,equationsection]{eskdtext}
% Объявляем документ класса eskdtext (подробнее можно узнать из описания пакета eskdx)
% russian - текст на русском языке, utf8 - кодировка документа UTF-8
% floatsection - нумерация таблиц и рисунков с учётом номера главы, equationsection - то же для формул
\usepackage{longtable} % В документе используем пакет longtable для создания таблиц
\usepackage{graphicx} % Используем графику в документе

\usepackage{mathtext} % Русские буквы в формулах
\usepackage[T2A]{fontenc}

\ESKDdocName{Проект сети широкополосного доступа на базе FTTH в г. Тавда}
\ESKDsignature{ДИПЛОМНЫЙ ПРОЕКТ}

\ESKDdepartment{%
Государственное образовательное учреждение высшего профессионального образования
}
\ESKDcompany{%
<<Сибирский государственный университет телекоммуникаций и информатики>>

(ГОУ ВПО <<СибГУТИ>>)
}
\ESKDauthor{Федотов~С.\,А.} % "Разраб." в штампе на листе содержания
\ESKDchecker{Иванов И.И.} % "Пров."  в штампе на листе содержания
\ESKDnormContr{Петров П.П.} % "Н. контр." в штампе на листе содержания
\ESKDapprovedBy{Сидоров С.С.}%  "Увт." в штампе на листе содержания
\ESKDdate{2011/01/17} % Дата (Год отображается на титульной странице)
\ESKDsignature{ФЗО 210406.052 ПЗ} % Шифр
\ESKDletter{}{У}{} % Литеры

\renewcommand{\ESKDtheTitleFieldX}{%
Новосибирск

\ESKDtheYear~г.} % Шаблон для отображения в нижней части титульного листа города и года

\ESKDtitleApprovedBy{Зав. Кафедрой}{Лебедянцев В.В.} % Утверждаю
\ESKDtitleDesignedBy{Дипломник}{Федотов С.А.} % Подпись и дата под заголовком документа

\renewcommand{\baselinestretch}{1} % Задаём единичный межстрочный интервал

\ESKDsectStyle{section}{\normalsize} % Заголовки глав обычным шрифтом
\ESKDsectStyle{subsection}{\normalsize} % Заголовки разделов обычным шрифтом
\ESKDsectStyle{subsubsection}{\normalsize} % Заголовки подразделов обычным шрифтом

\begin{document} % Маркер начала документа
\maketitle % Создать титульный лист на основе данных в заголовке документа
\tableofcontents % Создать содержание документа (потребуется дважды сформировать документ для того,
% чтобы номера страниц сформировались правильно)
\newpage % Начать следующий раздел с новой страницы
\section{Введение} % Первая глава - "Введение"
% Содержание документа
Это демонстрационный документ. Чтобы начать следующий абзац необходимо
вставить пустую строку.

Этот текст будет уже в следующем абзаце.
\end{document} % Маркер завершения документа

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

Создание списков

Приведу пример маркированного списка:

\begin{itemize}
\item микро сеть SDH (Micro SDH);
\item активные сети Ethernet (Active Ethernet, AE);
\item пассивные оптические сети (Passeve Optical Network, PON).
\end{itemize}
[/sourcecode]
Нумерованные списки делаются так же просто
[sourcecode language="latex"]
\begin{enumerate}
\item уровень --- сплиттеры 1x2, оконеченные разъемами SC в проектируемом оптическом кроссе ODF ТТ-120 на ОПТС-5.
\item уровень --- сплиттеры 1x32, в проектируемых оптических шкафах типа ШКОН, устанавливаемых в подъездах жилых домов.
\end{enumerate}

Вставка рисунков

Вставить рисунки в текст можно следующим образом:

\begin{figure}[h!]
\center{\includegraphics[width=0.8\linewidth]{mini-breacout}}
\caption{Кабель MINI-BREACOUT}
\label{ris:mini-breacout}
\end{figure}

Рисунок должен находиться в папке с документом tex и назваться так, как указано в строке 1: mini-breacout.png или mini-breacout.jpg. Размер рисунка можно изменять с помощью параметра width, в данном случае его ширина будет равна 0,8 от ширины строки документа. Рисунок будет размещён по центру и ему будет присвоен номер (в соответствии с заданным в заголовке документа параметром он будет содержать номер главы и номер рисунка в главе). Название рисунка задаётся в параметре \caption. Ссылаться на номер документа можно по имени ris:mini-breacout, который задан в параметре \label.

TeX-Live пытается разместить рисунки сверху страницы. Иногда может оказаться неудобным, что рисунок будет размещён на следующей странице. Изменить это можно перемещая данный код вверх по абзацам.

Если вы желаете разместить рисунок на отдельном листе, то достаточно убрать параметр [h!].

Иногда рисунки могут быть очень широкими и их выгодно будет размещать с поворотом на 90 градусов относительно листа. Сделать это можно следующим образом:

\begin{sidewaysfigure}
\center{\includegraphics[width=0.8\linewidth]{vnutridom}}
\caption{Внутридомовая разводка ВОК}
\label{ris:vnutridom}
\end{sidewaysfigure}

Параметры рисунка остаются теми же самыми. Рисунок в данном случае будет размещён на отдельном листе.

Вставка формул

Вставить в текст нумерованную формулу с расшифровкой входящих в неё параметров можно следующим образом:

\begin{equation}\label{eq:Pobsh}
P_{общ}=P_{затух} + P_S + P_C + P_З + P_P
\end{equation}
% Далее идёт расшифровка параметров, входящих в формулу
\begin{ESKDexplanation}
\item где $P_{общ}$ --- общие потери в линиях связи;
\item $P_{затух}$ --- полное затухание в оптическом волокне;
\item $P_S$ --- полные потери в сростках;
\item $P_C$ --- полные потери в соединителях;
\item $P_З$ --- потери в разветвителях волокон;
\item $P_P$ --- потери на эксплуатационный запас.
\end{ESKDexplanation}

Блок "ESKDexplanation" представляет из себя простой список без маркеров и нумерации. Как вы наверно обратили внимание, вставить формулу в текст можно просто выделив знаками $ с обоих сторон.

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

$$
I_{сумм} = I_{пр} + I_{сущ} + I_{зб} = 3,15 + 10 + 18 = 31,15 А
$$

Вставка таблиц

Таблицы в LaTeX наверное одни из самых сложных вещей. Для таблиц существует несколько готовых пакетов: tabular, tabularx, longtable. Я остановил свой выбор на longtable, т.к. он позволяет создавать многостраничные таблицы.

\begin{longtable}{|p{8,5cm}|p{4cm}|p{4cm}|} % описываем 3 столбца таблицы с выравниванием по ширине и указанной ширины
% Вертикальная черта означает, что между полями должна быть вертикальная черта - разделитель
% Заголовок таблицы на первой странице:
\caption{Исходные данные по работе <<Проект сети широкополосного доступа на базе FTTH>>\label{tab:econ_effect}}\\
\hline % Вставляем горизонтальную линию
Наименование показателей & Единица измерения & Значение показателей \\
\hline
\endfirsthead % Всё, что расположено выше считается заголовком таблицы и отображается на первой странице
% Для второй и последующих страниц подменяем наименование таблицы в соответствии с требованиями:
\caption*{Продолжение таблицы \ref{tab:econ_effect}}\\
\hline
Наименование показателей & Единица измерения & Значение показателей \\
\endhead % Всё что выше будет вставляться как заголовок на 2 и последующих страницах
\hline
1 Объем услуг & & \\ % Содержимое ячеек разделяется знаком &, завершение строки таблицы \\
\hline
Сеть доступа: & абонентов & 384 \\
\hline
В том числе: & & \\
\hline
юридические лица & абонентов & 38 \\
\hline
физические лица & абонентов & 346 \\
\hline
Доля физических лиц & & \\
\hline
Пакет №1 (высокоскоростной Интернет) & \% & 65 \\
\hline
Пакет №2 (Интернет + IP TV) & \% & 22 \\
\hline
Пакет №3 (Интернет + IP TV + VoD) & \% & 13 \\
\hline
Доля юридических лиц & & \\
\hline
Пакет №1 (Интернет) & \% & 69 \\
\hline
Пакет №2 (IP VPN) & \% & 31 \\
\hline
\end{longtable}

Приложения

Для вставки приложений в документ шаблон eskdx имеет специальное ключевое слово \ESKDappendix.

\ESKDappendix{справочное}{Шкаф ТТ-120\label{app:tt120}}

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

При использовании \ESKDappendix вместо стандартного для LaTeX \appendix ссылки на приложения в содержании создаются корректно:

Создание списка литературы

Для создания списка литературы используется окружение thebibliography:

\begin{thebibliography}{00} % 00 влияет на выравнивание номеров записей в списке литературы.
\bibitem{bashilov} Башилов Г. Пассивные оптические сети: возможности и перспективы// GIO. - 2004. - № 12. - с. 2
\bibitem{bykov} Быков Ю.П., Егунов М.М., Ромашова Т.И. Справочные материалы по курсовому и дипломному проектированию. Справочное пособие. Новосибирск: СибГУТИ, 2001 г
\bibitem{eskd} Вайспапир В.Я., Катунин Г.П., Мефодьева Г.Д. Единая система конструкторской документации в студенческих работах
\bibitem{nec-neva} Описание оборудования фирмы «NEC-Нева»
\bibitem{optic} Оптические сети доступа. Teletekno, 2006 № 2.- с. 25; № 3.- с. 21
\bibitem{petrenko} Петренко И.И., Убайдуллаев Р.Р. Пассивные оптические сети PON// Lightwave Russian Edition.- 2004.- № 1.- с. 22;
\bibitem{connect_ru} www.connect.ru PON:многообещающая пассивность
\bibitem{deps_ua} http://www.deps.ua/
\bibitem{gbk_ru} http://www.gbk.ru/
\bibitem{pon_cnews} http://retail.cnews.ru/reviews/free/telecom2004/part2/topology.shtml
\end{thebibliography}

10 февр. 2011 г.

Просмотр ТВ каналов Ростелекома на Ubuntu

Суть проблемы - гении Ростелекома выбрали 200 порт для вещания. При просмотре через этих каналов VLC пытается задействовать 200 порт, но не может, т.к. порты с номером меньше 1024 считаются привилегированными во всех *nix системах (все Linux, все BSD, MacOS X) и доступны только для root. Очевидное решение - долбить провайдера, чтобы он корректно настроил своё оборудование. Но не тут то было, т.к. "Просмотр IP-TV на компьютере не поддерживается". Официальная приставка работает, больше их ничего не волнует.

Для решения проблемы подменим порт 200 на 34200. Сделать это на Ubuntu можно с использованием iptables следующим образом:

sudo iptables -t nat -A PREROUTING -p udp -m udp --dport 200 -j DNAT --to-destination :34200
sudo iptables -t nat -A POSTROUTING -p udp -m udp --dport 34200 -j SNAT --to-source :200

После ввода этих строк я попытался открыть канал Discovery Science udp://239.32.0.69:34200/ (порт 200 был заменён на 34200) и о чудо! Всё работает! Теперь остаётся только переделать свой плейлист заменив порт 200 во всех каналах на 34200 и наслаждаться просмотром IPTV на компьютере.

18 янв. 2011 г.

Настраиваем аудиоконференции в Asterisk 1.8.2 на FreeBSD 8.1

С выходом версии Asterisk 1.8.2 решил разобраться в настройке конференций. Так же как и ранее решил использовать модуль app_meetme.

Конференции бывают двух типов - постоянные и динамически создаваемыми. Для создания постоянной конференции необходимо внести запись о ней в файл meetme.conf и добавить соответствующий экстеншн. Описываем конференции в секции [rooms] meetme.conf:

[rooms]
conf => 990,123,1234
conf => 991,321,4321

В данном примере создаются две постоянные конференции с номерами 990 и 991. После номера конференции указывается пароль для входа и администраторский пароль.

Дайплан Asterisk я обычно оформляю в extensions.ael, т.к. он обладает довольно привлекательным и удобочитаемым синтаксисом. Для конференций можно создать отдельный контекст, который затем включать с помощью includes в те контексты, где вам будут необходим доступ к конференциям. Итак. Создадим экстеншены в контексте rooms для 3 конференций, тех, которые создали ранее и динамических:

context rooms {
    990 => MeetMe(990,M);
    991 => MeetMe(991,M);
    992 => MeetMe(,MD);
}

В ранних версиях Asterisk разделителем параметров была вертикальная черта. В версии 1.8.2, как вы могли заметить, используется запятая. Первым параметром является номер конференции, указанный в файле meetme.conf. Как я писал выше, под номером 992 скрываются динамически создаваемые конференции и номер для них не указывается. Вторым параметром указаны дополнительные параметры. M - использовать музыкальное сопровождение в случае, если в конференции только один пользователь. D - динамически создаваемые конференции с использованием pin-кода для доступа. Подробнее о параметрах можно прочитать в документации.

Особенностью app_meetme является потребность в наличии таймеров. Если сейчас вы попытаетесь воспользоваться конференцией, то получите сигнал занято в постоянных конференциях и сообщение о невозможности создать динамическую конференцию. Чтобы решить данную проблему можно воспользоваться аппаратным таймером на платах интерфейсов. Но если вы не используете плат, то необходимо создать псевдоустройство. Относительно недавно dahdi была портирована на FreeBSD, Для установки этого модуля воспользуемся портом /usr/ports/misc/dahdi-kmod.

portmaster misc/dahdi-kmod

Не забываем включить загрузку модуля ядра через rc.conf:

dahdi_enable="YES"

Теперь можно запустить

service dahdi start