Asterisk on Debian Squeeze

First some background: I use Asterisk to route my calls through multiple VoIP providers. Calls to Australian landlines through iiNet since they’re free, and the rest through Pennytel since they’re cheap. My el-cheapo ATA simply registers with Asterisk and my mum just calls as usual, and everything’s automagically cost optimised.

Problem: I did an apt-get -y dist-upgrade after not having touched this system for quite a while, and one of Asterisk’s dependencies, dahdi, failed to install with the error message FATAL: Module dahdi not found.

Basically, the dependecies don’t cause automatic installation of the needed kernel drivers, so the following will fix it:

apt-get -y install linux-headers-`uname -r` build-essential
apt-get -y remove dahdi*
apt-get -y install dahdi-source
cd /usr/src
tar jxvf dahdi.tar.bz2
cd modules/dahdi
make
make install
apt-get -y asterisk

source: http://cryptwizard.info/?p=691

Asterisk – храним CDR в БД MySQL

Должны быть установлены следующие компоненты:

— Mysql Server 5 and Client
— asterisk-1.4.22
— asterisk-addons-1.4.7

#Скачиваем Asterisk-addons с Digium:

 

1
2
3
4
5
6
cd /usr/src
wget <a title="http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.4.7.tar.gz" href="http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.4.7.tar.gz">http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.4.7....</a>
tar xvfz asterisk-addons-1.4.7.tar.gz
cd asterisk-addons-1.4.7/cdr/
vi cdr_addon_mysql.c
add #define MYSQL_LOGUNIQUEID after #define DATE_FORMAT “%Y-%m-%d  %T”

 

1
2
3
cd ..
./configure
make menuselect

Проверяем, загружен ли модуль:

1
2
3
4
5
6
7
8
9
10
11
—> 1. Applications
[*] 1. app_addon_sql_mysql
2. Call Detail Recording
[*] 1. cdr_addon_mysql
3. Channel Drivers
4. Format Interpreters
5. Resource Mod
then q (quit) and S (save)
make && make install

Редактируем файл /etc/asterisk/cdr.conf

1
2
3
4
vi /etc/asterisk/cdr.conf
[general]
enable=yes

Редактируем файл /etc/asterisk/cdr_mysql.conf

1
2
3
4
5
6
7
8
9
[global]
hostname=localhost
dbname=asterisk
table=cdr
password=pass01234
user=asterisk
port=3306
;sock=/tmp/mysql.sock
;userfield=1

Редактируем файл /etc/asterisk/modules.conf

1
vi /etc/asterisk/modules.conf

добавляем следующие строки (если нет):

1
load => cdr_addon_mysql.so

Создаем БД, таблицы и разрешения.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
ipbbx01:~# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 2
Server version: 5.0.32-Debian_7etch5 Debian etch distribution
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the buffer.
mysql> create database asterisk;
mysql> use asterisk;
mysql> CREATE TABLE cdr (
calldate datetime NOT NULL default ‘0000-00-00 00:00:00′,
clid varchar(80) NOT NULL default ”,
src varchar(80) NOT NULL default ”,
dst varchar(80) NOT NULL default ”,
dcontext varchar(80) NOT NULL default ”,
channel varchar(80) NOT NULL default ”,
dstchannel varchar(80) NOT NULL default ”,
lastapp varchar(80) NOT NULL default ”,
lastdata varchar(80) NOT NULL default ”,
duration int(11) NOT NULL default ‘0′,
billsec int(11) NOT NULL default ‘0′,
disposition varchar(45) NOT NULL default ”,
amaflags int(11) NOT NULL default ‘0′,
accountcode varchar(20) NOT NULL default ”,
userfield varchar(255) NOT NULL default ”,
uniqueid varchar(32) NOT NULL default ”
);
ALTER TABLE cdr ADD INDEX ( calldate );
ALTER TABLE cdr ADD INDEX ( dst );
ALTER TABLE cdr ADD INDEX ( uniqueid );
You can add more indices if you want.
mysql> q
[/mysql]
Не забываем дать разрешения пользователю asterisk@localhost для  работы с БД MySQL:
[mysql]
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> on asterisk.*
-> to 'asterisk'@'localhost';
Query OK, 0 rows affected (0.00 sec)

Проверяем соединение:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
ipbx01:~# mysql -h localhost -u asterisk -p asteriskmysql> show tables;
+——————–+
| Tables_in_asterisk |
+——————–+
| cdr |
+——————–+
1 row in set (0.00 sec)
mysql> desc cdr;
+————-+————–+——+—–+———————+——-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+———————+——-+
| calldate | datetime | NO | MUL | 0000-00-00 00:00:00 | |
| clid | varchar(80) | NO | | | |
| src | varchar(80) | NO | | | |
| dst | varchar(80) | NO | MUL | | |
| dcontext | varchar(80) | NO | | | |
| channel | varchar(80) | NO | | | |
| dstchannel | varchar(80) | NO | | | |
| lastapp | varchar(80) | NO | | | |
| lastdata | varchar(80) | NO | | | |
| duration | int(11) | NO | | 0 | |
| billsec | int(11) | NO | | 0 | |
| disposition | varchar(45) | NO | | | |
| amaflags | int(11) | NO | | 0 | |
| accountcode | varchar(20) | NO | | | |
| userfield | varchar(255) | NO | | | |
| uniqueid | varchar(32) | NO | MUL | | |
+————-+————–+——+—–+———————+——-+
16 rows in set (0.00 sec)
mysql>

Данный этап завершен! Теперь проверяем, загружен ли mysql модуль.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
ippbx01# asterisk -r
Asterisk 1.4.20, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show  warranty’ for details.
This is free software, with components licensed under the GNU  General Public
License version 2 and other licenses; you are welcome to  redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
Connected to Asterisk 1.4.20 currently running on asterisk88 (pid =  26648)
Verbosity is at least 3
ippbx01*CLI> stop now
ippbx01*CLI>
Disconnected from Asterisk server
ippbx01# safe_asterisk
ippbx01# asterisk -r
Asterisk 1.4.20, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show  warranty’ for details.
This is free software, with components licensed under the GNU  General Public
License version 2 and other licenses; you are welcome to  redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
Connected to Asterisk 1.4.20 currently running on asterisk88 (pid =  26880)
Verbosity is at least 3
ippbx01*CLI> cdr mysql status
<h2>Connected to asterisk@localhost, port 3306 using table cdr for 15  seconds.</h2>
Wrote 0 records since last restart.
ippbx01*CLI> quit

Вот и все, хранение CDR в БД MySQl у нас работает.

 

Recompile SoX on Debian

know this thread is ancient, but it’s the one I came across when googling for an answer, so I thought I’d post my solution here.

You can recompile sox with mp3 encoding support. First, ensure that multiverse, universe and restricted are in your /etc/apt/sources.list. Then install the necessary software and libraries:

Code:
sudo aptitude install sox build-essentials liblame liblame-dev

You need to install liblame and liblame-dev as they are not dependencies of sox and so won’t get installed automatically at the build-dep stage. I put sox in there so as to ensure that all the other non-lame run-time library dependencies for sox get installed before we build and install our new version.

Change directory to a nice place (I like /usr/src), then get the source for sox and the libraries on which it depends:

Code:
sudo apt-get build-dep sox
Code:
sudo apt-get source sox

Unpack the source:

Code:
sudo dpkg-source -x sox_12.18.2-1.dsc

Edit the debian/rules file with your favourite editor:

Code:
sudo vim sox-12.18.2/debian/rules

and comment out, by putting an ‘#’ at the beginning of the line, the two lines that read:

Quote:
DEB_CONFIGURE_EXTRA_FLAGS := —disable-lame

Change directory into the sox source directory

Code:
cd sox-12.18.2

and build the binary deb:

Code:
sudo dpkg-buildpackage -b

Change directory up one level and install the newly built mp3 encoding sox .deb:

Code:
sudo dpkg -i sox_12.18.2-1_i386.deb

And you are done…

 

Convert audio between MP3, FLAC, WAV — including hi-fi and lo-fi and short clips

Using SoxLAMEFLAC, and madplay — I put together this “dictionary” of shell commands that can be run to convert audio from one format to other, including dialup-modem-streamable lofi mono MP3 files, and including shorter clips of music.

Above each command-line and the INPUT and OUTPUT audio formats. (represented by $in and $out in the command line.)

For short audio clips, you need $start — what second to start the clip at, and $duration — how long the clip should go. All clips have a 1-second fade-in, and 2-second fade-out.

flac wav
flac -sd $in -o $out

flac wav clip
flac -sdc $in | sox -t wav — -t raw -s -w -c 2 — trim $start $duration | sox -t raw -r 44100 -s -w -c 2 — $out fade h 1 $duration 2

flac wav-lofi
flac -sdc $in | sox -t wav — -s -w -c 1 -r 22050 $out rate

flac mp3-hifi
flac -sdc $in | lame — $out

flac mp3-hifi clip
flac -sdc $in | sox -t wav — -t raw -s -w -c 2 — trim $start $duration | sox -t raw -r 44100 -s -w -c 2 — -t wav — fade h 1 $duration 2 | lame — $out

flac mp3-lofi
flac -sdc $in | sox -t wav — -t wav -s -w -c 1 -r 22050 — rate | lame -b 80 — $out

flac mp3-lofi clip
flac -sdc $in | sox -t wav — -t raw -s -w -c 1 -r 22050 — rate | sox -t raw -r 22050 -s -w -c 1 — -t raw -r 22050 -s -w -c 1 — trim $start $duration | sox -t raw -r 22050 -s -w -c 1 — -t wav — fade h 1 $duration 2 | lame -b 80 — $out

wav flac
flac -s $in -o $out

wav wav clip
sox -t wav $in -t raw -s -w -c 2 — trim $start $duration | sox -t raw -r 44100 -s -w -c 2 — -t wav $out fade h 1 $duration 2

wav wav lofi
sox -t wav $in -s -w -c 1 -r 22050 $out rate

wav mp3-hifi
lame $in $out

wav mp3-hifi clip
sox -t wav $in -t raw -s -w -c 2 — trim $start $duration | sox -t raw -r 44100 -s -w -c 2 — -t wav — fade h 1 $duration 2 | lame — $out

wav mp3-lofi
sox -t wav $in -t wav -s -w -c 1 -r 22050 — rate | lame -b 80 — $out

wav mp3-lofi clip
sox -t wav $in -t raw -s -w -c 1 -r 22050 — rate | sox -t raw -r 22050 -s -w -c 1 — -t raw -r 22050 -s -w -c 1 — trim $start $duration | sox -t raw -r 22050 -s -w -c 1 — -t wav — fade h 1 $duration 2 | lame -b 80 — $out

mp3 flac
madplay -q -o wave:- $in | flac -s — -o $out

mp3 wav clip
madplay -q -o wave:- $in | sox -t wav — -t raw -s -w -c 2 — trim $start $duration | sox -t raw -r 44100 -s -w -c 2 — $out fade h 1 $duration 2

mp3 wav lofi
madplay -q -o wave:$out -m -R 22050 $in

mp3 mp3-hifi
cp $in $out

mp3 mp3-hifi clip
madplay -q -o wave:- $in | sox -t wav — -t raw -s -w -c 2 — trim $start $duration | sox -t raw -r 44100 -s -w -c 2 — -t wav — fade h 1 $duration 2 | lame — $out

mp3 mp3-lofi
madplay -q -o wave:- -m -R 22050 $in | lame -b 80 — $out

mp3 mp3-lofi clip
madplay -q -o wave:- -m -R 22050 $in | sox -t raw -r 22050 -s -w -c 1 — -t raw -r 22050 -s -w -c 1 — trim $start $duration | sox -t raw -r 22050 -s -w -c 1 — -t wav — fade h 1 $duration 2 | lame -b 80 — $out

Got any more single-line open-source audio-converting commands to add?

—————————————————

Try this one 🙂

ls *.flac |while read a; do n=$(basename «$a» .flac); flac -sdc «$a» |lame -V 1 — «${n}.mp3» ; done

————————————————

just save this into a file
such as convert.sh and make it executable

#!/bin/bash
FILES=$(ls *.flac | cut -d ‘.’ -f1)
for i in $FILES; do
echo converting: $i.flac
flac -sdc $i.flac | lame — $i.mp3
done

—————————————-

 

Windows Subversion/TortoiseSVN: сравнение и экспорт изменений между двумя ревизиями

Зачем это может понадобиться? Да очень просто, чтобы получить файлы, которые изменились между двумя версиями в репозитории Subversion. Оказывается в Subversion нет такой команды, чтобы получить эти самые файлы. Можно сделать export конкретной ревизии, но в любом случае получим все файлы на тот период. Но не все так плохо. Оказывается можно добиться необходимого результата с помощью отличной программы TortoiseSVN – клиент для Subversion. Очень полезный и удобный инструмент, рекомендую.

Чтобы получить список файлов, которые изменились, делаем следующее:
• Выбираем две резизии (Рисунок №1), только две, с большим количеством не сработает
• Над одной из выбранных ревизий, вызываем контекстное меню (правой кнопкой), появляется менюшка (Рисунок №2), где нажимаем на пункт «Compare revision»
• В результате получаем следующее окно (Рисунок №3), где выбираем все файлы (можно через комбинацию клавиш Ctrl+A), вызываем контекстное меню и нажимаем «Export selection to …» – Рисунок №4.
• Указываем куда хотим сохранить выбранные файлы.

При таком экспорте сохраняется вся структура папок. В итоге получаем очень удобную функциональность.

Рисунок №1: Окно ревизий «Log Messages»

Рисунок №2: Контекстное меню – вызываем команду «Compare revision»

Рисунок №3: Список изменений между двумя ревизиями

Рисунок №4: Контекстное меню – выбираем место куда сохранить файлы

Ссылки по теме:
TortoiseSVN docs: Revision Log Dialog
Windows SubVersion / TortoiseSVN – Compare two versions of a file
TortoiseMerge and TortoiseDiff – viewing differences
Using TortoiseSVN (tutorial)

Инструменты обеспечение качества программного продукта для PHP

В тексте статьи находится краткий обзор инструментов с помощью которых можно анализировать различные характиристики в приложениях созданных на PHP. Данный материал появился на свет в результате некоторых экспериментов в области непрерывной интеграции, и должен был являться частью статьи про непрерывную интеграцию (спойлерить пока не буду, боюсь сглазить) все в том же РНР, но я решил все-таки выделить его в самостоятельный обзор, так как возможно, в последующих статьях я буду ссылаться на него, а так же надеюсь узнать об аналогичных инструментах еще не попавших мне на глаза. Некоторые инструменты уже были рассмотрены достаточно подробно, но тем не менее полного списка всех доступных еще не было.

PHP_CodeCoverage

PHP_CodeCoverage это библиотека, которая обеспечивает сбор, обработку и отображение информации о покрытии кода тестами, требует xdebug, а так же использует некоторые сторонние библиотеки. Более подробная информация находится на официальном сайте.

Автор: Sebastian Bergmann
Официальный сайт: http://github.com/sebastianbergmann/php-code-coverage
Официальный PEAR канал: http://pear.phpunit.de/
Текущая версия: 0.9.0 (alpha)
PhpDocumentor

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

Автор: Joshua Eichorn
Официальный сайт: http://www.phpdoc.org/
Официальный PEAR канал: http://pear.php.net/
PHP Copy/Paste Detector [phpcpd]

Название говорит само за себя: находит дублированный код и сообщает о нем.

Автор: Sebastian Bergmann
Официальный сайт: http://github.com/sebastianbergmann/phpcpd
Официальный PEAR канал: http://pear.php.net/
Текущая версия: 1.3.1 (stable)
PHP_Depend

Собирает и отображает статистическую информацию о проекте.

Автор: Manuel Pichler
Официальный сайт: http://pdepend.org/
Официальный PEAR канал: http://pear.pdepend.org/
Текущая версия: 0.9.11 (beta)
PHP_PMD

Ответвление от PHP_Depend: отображает информацию о размерах кода, используемых именах, неиспользуемом коде. Обзор от DevMan

Автор: Manuel Pichler
Официальный сайт: http://phpmd.org/
Официальный PEAR канал: http://pear.phpmd.org/
Текущая версия: 0.2.5 (alpha)
PHP_CodeSniffer

Позволяет наблюдать за состоянием PHP, Javascript и CSS файлов и определять отклонения от принятых стандартов кодирования. Обзор от DevMan

Автор: Greg Sherwood
Официальный сайт: http://matrix.squiz.net/developer/tools/php_cs
Официальный PEAR канал: http://pear.php.net/
Текущая версия: 1.2.2 (stable)
PHPUnit

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

Автор: Sebastian Bergmann
Официальный сайт: http://www.phpunit.de/
Официальный PEAR канал: http://pear.phpunit.de/
Текущая версия: 3.4.12 (stable)
PHP_CodeBrowser

Обеспечивает просмотр кода с синтаксической подсветкой, имеет богатые возможности по визуализации, может использовать отчеты от: phpunit, phpcpd, padawan, phpcs. Из этого обзора можно понять насколько инструмент перспективный.

Автор: Mayflower GmbH
Официальный сайт: http://github.com/mayflowergmbh/PHP_CodeBrowser
Официальный PEAR канал: http://pear.phpunit.de/
Текущая версия: 0.1.3 (alpha)
phploc

Еще один инструмент собирающий статистическую информацию о проекте.

Автор: Sebastian Bergmann
Официальный сайт: http://github.com/sebastianbergmann/phploc
Официальный PEAR канал: http://pear.phpunit.de/
Текущая версия: 1.5.1 (stable)
phpdcd

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

Автор: Sebastian Bergmann
Официальный сайт: http://github.com/sebastianbergmann/phpdcd
Официальный PEAR канал: pear.phpunit.de
Текущая версия: 0.9.2 (beta)
Padawan

Инструмент для обнаружения антипаттернов, обходных путей и прочих неприятностей.

Автор: Sebastian Bergmann
Официальный сайт: http://github.com/sebastianbergmann/padawan
Официальный PEAR канал: неизвестен
Текущая версия: неизвестна
PHP_CachegrindParser

Обработчик для cachegrind файлов создающий xml отчеты для последующего использования в CI.

Автор: Mayflower GmbH
Официальный сайт: http://github.com/mayflowergmbh/PHP_CachegrindParser
Официальный PEAR канал: неизвестен
Текущая версия: неизвестна
Источник статьи
Хабрахабр: PHP – Обеспечение качества программного продукта

Что ещё можно почитать:
http://sebastian-bergmann.de/software/
http://manuel-pichler.de/

MySQL: cравнение даты (datetime) через оператор BETWEEN

Оператор BETWEEN идеально подходит для сравнения диапазона между датами (datetime). Но тут есть подводные камни. Например, есть задача – выбрать данные из таблицы за некоторый промежуток времени (с ’2008-08-14′ по ’2008-08-23′).

Рекомендации:
1. Выполняя любые сравнения, приводить все данные к одному типу.
2. Если один операнд имеет значение типа TIMESTAMP или DATETIME, а другой является константой, операнды сравниваются как значения типа TIMESTAMP. А это значит, что если была строка в виде ’2008-08-14′, то она автоматически преобразуется в TIMESTAMP ’2008-08-14 00:00:00′ и это влияет на результат запроса.
3. Над данными, которые участвуют в условиях сравнения желательно не делать никаких операций – это позволяет для них использовать индексы, иначе они игнорируются.

Примеры запросов с BETWEEN и без него:

# Поле created_at - тип DATETIME
# КОРРЕКТНЫЕ ЗАПРОСЫ

# 1: Индексы для created_at поля не используются.
# Условие BETWEEN '2008-08-14' AND '2008-08-23'
# преобразуется в BETWEEN '2008-08-14 00:00:00' AND '2008-08-23 00:00:00'.
SELECT * FROM news
WHERE DATE(created_at) BETWEEN '2008-08-14' AND '2008-08-23';

# 2: Оператор BETWEEN не используем, но тоже не самый лучший вариант, индексы не используются
SELECT * FROM news
WHERE DATE(created_at) >= '2008-08-14' AND DATE(created_at) <= '2008-08-23'; # 3: Строки '2008-08-14 00:00:00' и '2008-08-23 23:59:59' не приведены к типу данных DATE SELECT * FROM news WHERE created_at BETWEEN '2008-08-14 00:00:00' AND '2008-08-23 23:59:59'; # 4: Самый лучший вариант, привели к типу DATETIME, индексы будут использоваться SELECT * FROM news WHERE created_at BETWEEN STR_TO_DATE('2008-08-14 00:00:00', '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE('2008-08-23 23:59:59', '%Y-%m-%d %H:%i:%s'); ############################# # НЕПРАВИЛЬНЫЕ ЗАПРОСЫ # 5: Строки '2008-08-14' и '2008-08-23' преобразуются в TIMESTAMP и дополняются '00:00:00' SELECT * FROM news WHERE created_at >= '2008-08-14' AND created_at <= '2008-08-23';

 

# 6: Аналогично запросу 5
SELECT * FROM news
WHERE created_at BETWEEN STR_TO_DATE('2008-08-14', '%Y-%m-%d') AND STR_TO_DATE('2008-08-23', '%Y-%m-%d');

Получаем самый лучший запрос:

SELECT * FROM news
WHERE created_at BETWEEN STR_TO_DATE('2008-08-14 00:00:00', '%Y-%m-%d %H:%i:%s')
AND STR_TO_DATE('2008-08-23 23:59:59', '%Y-%m-%d %H:%i:%s');

Ссылки по теме:
MySQL 5.1 Reference Manual :: 11.2.3 Comparison Functions and Operators :: Operator BETWEEN
MySQL 5.1 Reference Manual :: 11 Functions and Operators :: 11.6 Date and Time Functions
Search by Date or Timestamp in MySQL

Обновление до версии Debian 6.0

One rather old laptop and one server were the test objects for this howto. Both systems do not have any RAID devices and use a simple partition scheme from a default basic Lenny install. If your setup deviates much from this, it’s highly recommended to read all details of the Debian Release Notes before you continue. Be warned. All commands are run as root and Debian recommends to use apt-get for the Squeeze upgrade process.

As with all upgrades, begin with a backup of your critical data, and that will be the users data in /home/your-users but I would also back up the content of all configurations files. The latter can quickly be archived:

tar -czvf host.etc.tar.gz /etc

Move your files for safe storage on a backup drive.

Edit your Apt source list file

To prepare for the installer, we need to get to a point where the package system is in a clean state. Move the preferences file from the directory if used. If you have a very complicated Debian source file, I would recommend that this is simplified to near the original install.

Open up a command line editor and reduce /etc/apt/source.list to something similar to only:

deb http://ftp.se.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp.se.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main
deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

Naturally your country code is likely to be different from mine se.

Update the packages for Lenny
With a few commands we will make sure that the existing package system is in good shape before the system is upgraded to Squeeze.

apt-get update

Ready for first upgrade:

apt-get upgrade

Follow this with:

apt-get dist-upgrade

Check that no packages are on hold or in any half installed state

The system usually contains many many packages, and before the real upgrade stage we must fix such problem packages.

Ensure that we do not have any packages on hold with:

dpkg --audit
dpkg --get-selections | grep hold

No packages can be on hold.

For the final go ahead test use:

aptitude

Press g and the list shows which packages need your attention. Fix any packages in the action list, until the message says:

No packages are scheduled to be installed, removed or upgraded

Only then you are done and ready to pass this point.

Update the source list for Squeeze
Update once more the /etc/apt/sources.list:

deb http://ftp.se.debian.org/debian/ squeeze main contrib non-free
deb-src http://ftp.se.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

and at the command line type:

apt-get update

Squeeze upgrade in two careful steps

It’s recommenced to use a two stage upgrade approach with kernel, udev and the preparation for grub2. After the first completed the full distribution upgrade is performed. Start with the upgrade like so:

apt-get upgrade

Now to the kernel; we need to find your flavor, i.e. the exact version numbers and architecture and install it with:

uname -r
apt-get install linux-image-2.6.26-2-amd64

If the system is old like my laptop it would install with:

apt-get install linux-image-2.6.26-2-686

Prepare grub2 and udev for the new system:

update-grub
apt-get install udev

Если есть проблемы с установкой драйверов сетевой карты, смотреть здесь:

http://linux.koolsolutions.com/2009/05/11/tip-debian-linux-kernel-firmware-issues-ethernet-drivers-missing/

Once previous steps have completed, it’s time to restart the system:

reboot

Almost there

When the system has restarted, continue with the full upgrade phase:

apt-get dist-upgrade

Starting the system with the first menu item shows if grub2 works properly, if so run:

upgrade-from-grub-legacy

which will install grub2 in the Master Boot Record (MBR) on the disk.

Further information are found on Debian main site.

О порядке ввоза в Россию шифровальных (криптографических) средств

Положение к п.2.19 о порядке ввоза на таможенную территорию таможенного союза и вывоза с таможенной территории таможенного союза шифровальных (криптографических) средств

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

2. Положение действует в отношении шифровальных (криптографических) средств или продукции, содержащей в своем составе шифровальные (криптографические) средства, указанных в разделе 2.19 Единого перечня товаров, к которым применяются запреты или ограничения на ввоз или вывоз государствами — участниками таможенного союза в рамках Евразийского экономического сообщества в торговле с третьими странами (далее – шифровальные средства).

3. К шифровальным средствам относятся:

а) средства шифрования – аппаратные, программные и аппаратно-программные средства, системы и комплексы, реализующие алгоритмы криптографического преобразования информации и предназначенные для защиты информации от несанкционированного доступа при ее передаче по каналам связи и (или) при ее обработке и хранении;

б) средства имитозащиты – аппаратные, программные и аппаратно-программные средства, системы и комплексы, реализующие алгоритмы криптографического преобразования информации и предназначенные для защиты от навязывания ложной информации;

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

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

д) средства изготовления ключевых документов (независимо от вида носителя ключевой информации);

е) ключевые документы (независимо от вида носителя ключевой информации);

ж) системы, оборудование и компоненты, разработанные или модифицированные для выполнения криптоаналитических функций;

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

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

Примечание. Нормативно-техническая, конструкторская и эксплуатационная документация к шифровальным средствам, указанным в подпунктах “а” – “и” настоящего пункта, считается составной частью этих средств.

4. Положение распространяется на лиц, осуществляющих ввоз и вывоз шифровальных средств (далее – заявители).

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

6. Для получения лицензии заявитель представляет в уполномоченный орган документы, предусмотренные пунктом 3 статьи 3 Соглашения, а также:

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

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

7. Для получения заключения в соответствии с пунктом 6 настоящего Положения заявитель представляет в согласующий орган:

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

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

8. Не требуется получения лицензий:

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

Ввоз и вывоз шифровальных средств в указанных случаях осуществляется заявителем при условии представления в таможенные органы заключения (разрешительного документа) согласующего органа.

9. Для получения заключения (разрешительного документа) заявитель представляет в согласующий орган:

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

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

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

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

  • непредоставления документов в объеме, предусмотренном пунктами 6, 7 и 9 настоящего Положения;
  • наличия ограничений в третьих странах на ввоз шифровальных средств на их таможенную территорию;
  • возможности нанесения ущерба безопасности государствам — участникам таможенного союза, которая определяется по результатам научно-технической экспертизы шифровальных средств и (или) документации на них.

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

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

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

Форма нотификации приведена в приложении 2 настоящего Положения.

Срок регистрации нотификации и опубликования информации о ней в единой базе таможенного союза сети “Интернет” не должен превышать 10 дней со дня поступления нотификации на регистрацию.

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

13. Уполномоченный орган вправе выдавать разъяснения (заключения) по вопросам выдачи лицензий. Информация о выданных разъяснениях (заключениях) направляется в Комиссию таможенного союза.
Приложение 1

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

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

  • симметричный криптографический алгоритм, использующий криптографический ключ длиной, не превышающей 56 бит; или
  • асимметричный криптографический алгоритм, основанный на любом из следующих методов:

а) на разложении на множители целых чисел, размер которых не превышает 512 бит;

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

в) на дискретном логарифме в группе, отличного от поименованного в вышеприведенном подпункте “б” размера, не превышающего 112 бит.

Примечание.

1. Биты четности не включаются в длину ключа.

2. Термин “криптография” не относится к фиксированным методам сжатия или кодирования данных.

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

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

б) электронной цифровой подписи.

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

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

4. Персональные смарт-карты (интеллектуальные карты):

а) криптографические возможности которых ограничены использованием в оборудовании или системах, указанных в пунктах 5 – 8 настоящего перечня; или

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

Примечание.        Если интеллектуальная карта может выполнять несколько функций, то контрольный статус каждой из функций определяется отдельно.

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

6. Оборудование, криптографические возможности которого недоступны пользователю, специально разработанное и ограниченное для применения любым из следующего:

а) программное обеспечение исполнено в защищенном от копирования виде;

б) доступом к любому из следующего:

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

в) контролем копирования аудио- и видеоинформации, защищенной авторскими правами.

7. Шифровальное (криптографическое) оборудование, специально разработанное и ограниченное применением для банковских или финансовых операций.

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

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

9. Беспроводное радиоэлектронное оборудование, осуществляющее шифрование информации только в радиоканале с максимальной дальностью беспроводного действия без усиления и ретрансляции менее 400 м в соответствии с техническими условиями производителя.

10. Шифровальные (криптографические) средства, используемые для защиты технологических каналов информационно-телекоммуникационных систем и сетей связи.

11. Товары, у которых криптографическая функция заблокирована производителем.

____________
Приложение 2

Форма нотификации

Зарегистрирована в реестре “____” _____________ 20___г.            № 

М.П.           

(подпись лица  уполномоченного органа)                                                                                                          (Ф.И.О.)

—————————————————————————————————————-

НОТИФИКАЦИЯ

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

1. Наименование товара (продукции)  

2. Назначение товара (продукции)  

3. Реквизиты производителя товара (продукции)  

4. Используемые криптографические алгоритмы:                                                                   № категории товара

из приложения 1

а) 

б) 

в) _

5. Наличие у товара (продукции) функциональных возможностей, не описанных в предоставляемой пользователю эксплуатационной документации

6. Срок действия нотификации  до “___” _______________ 20___г.

7. Реквизиты заявителя  

8. Реквизиты документа производителя (изготовителя), предоставившего уполномоченному лицу полномочия

по оформлению нотификации (при необходимости)  

9. Дата принятия нотификации  “___” _______________ 20___г.

М.П.           

(подпись заявителя)                                                                                                                           (Ф.И.О.)

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

____________

Asterisk + iLBC

Since Asterisk 1.4.19 (and also 1.6), the iLbc codec was removed due to licensing problems (It is not licensed for distribution). To enable it again, it is necessary to download its source code and tell to Asterisk to compile with it.

To do it manually, the instructions says:

run the contrib/scripts/get_ilbc_source.sh
run ‘make menuselect‘ and check the codec_iLBC option under Codec Translators.
compile/install Asterisk as usual
When using PADS you will need to modify the package/asterisk/asterisk.mk file to add the get_ilbc_souce.sh script in a way that it will be executed before the configure script. In addition, it is necessary to modify the get_ilbc_souce.sh to use the right path to download the iLbc source code.

You can look for the following code in asterisk.mk file:

$(ASTERISK_DIR)/.configured: $(ASTERISK_DIR)/.asterisk_unpacked $(ASTERISK_DIR)/.sounds_unpacked
cd $(ASTERISK_DIR); ./configure $(ASTERISK_CONFIGURE_OPTS)
touch $(ASTERISK_DIR)/.configured

Then you can add the following commands just before the configure call:

$(ASTERISK_DIR)/.configured: $(ASTERISK_DIR)/.asterisk_unpacked $(ASTERISK_DIR)/.sounds_unpacked
sed -i “s|codecs/ilbc|build_warp/asterisk/codecs/ilbc|” $(ASTERISK_DIR)/contrib/scripts/get_ilbc_source.sh
$(ASTERISK_DIR)/contrib/scripts/get_ilbc_source.sh
cd $(ASTERISK_DIR); ./configure $(ASTERISK_CONFIGURE_OPTS)
touch $(ASTERISK_DIR)/.configured

Note: The italic code above is all in a single line

Before compiling Asterisk again using PADS, you’ll need to enable the Asterisk menuconfig. To do this, you need to run the PADS ‘make menuconfig’ and check the Asterisk Custom Settings. This will open the Asterisk menu allowing you to set the iLBC codec as explained above.

When everything is done, a simple way to check if the codec was properly installed is to use the asterisk console command core “show translation”. It will show you a table like that with the iLbc code in:

g723 gsm ulaw alaw g726aal2 adpcm slin lpc10 g729 speex ilbc g726 g722
g723 — — — — — — — — — — — — —
gsm — — 6 6 12 6 5 28 — — 132 11 —
ulaw — 13 — 1 8 2 1 24 — — 128 7 —
alaw — 13 1 — 8 2 1 24 — — 128 7 —
g726aal2 — 17 6 6 — 6 5 28 — — 132 1 —
adpcm — 13 2 2 8 — 1 24 — — 128 7 —
slin — 12 1 1 7 1 — 23 — — 127 6 —
lpc10 — 27 16 16 22 16 15 — — — 142 21 —
g729 — — — — — — — — — — — — —
speex — — — — — — — — — — — — —
ilbc — 37 26 26 32 26 25 48 — — — 31 —
g722 — — — — — — — — — — — — —

marek comment:

As you can see from the large numbers in ‘core show translation’ for iLBC, iLBC can be quite CPU-intensive. This ultimately means that only a handful of ports using iLBC will run on appliance.