Дек 282012
 

Шлюз Asterisk и Skype через SipToSis под Debian или Ubuntu

ПО:
OS Ubuntu 12.10 или Debian 6.0.6
Клиент Linux Skype Ubuntu

Задача: привязать к Asterisk аккаунт Skype. Для приема звонков из популярного месенжера. И звонить абонентам Skype.
Для такой услуги существует расширение Asterisk производства Digium, но насколько я знаю, выдача лицензий приостановлена, сейчас SIP туннели продаются напрямую из сайта Skype по 5 евро за канал.
Кто любит шару, и не хочет платить там где можно не платить. Существует для решения подобных задач проект SipToSis позволяющий делать то же самое.

Для начала нам необходимо клиент программы Skype. Для Debian мы качаем версию Skype для Ununtu. С SipToSis работает путем взаимодействия с ним через Skype API. Так же необходимо не забывать, что для работы Skype необходима графическая среда. Для запуска его в консольном Linux, будем использовать Xvfb (X Virtual Frame Buffer) и для доступа с другой машины – x11vnc.

Устанавливаем все необходимые приложения:

Для аудио:

sudo apt-get install -y alsa-utils alsa-base alsa-tools

Графический сервер:

sudo apt-get install -y xvfb x11vnc 

Java приложения:

sudo apt-get install -y openjdk-6-jdk 

Графическая оболочка:

sudo apt-get install -y fluxbox

Устанавливаем пакет Skype, который взят с официально сайта и актуален на момент написания статьи:

dpkg -i skype-ubuntu-lucid_4.1.0.20-1_i386.deb

Возможно ругнется на неустановленные зависимости, лечится это:

sudo apt-get -f install

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

modprobe snd-dummy

Или можно подключить в /etc/modules для постоянно загрузки.

nano /etc/modules
в конце файла вписываем
snd-dummy

Данная команда поможет установить необходимые зависимости.

Кочаем SipToSis с сайта разработчика SipToSis Download
Распаковываем архив, делаем запускаемым файл SipToSis_linux

chmod +x /etc/siptosis/SipToSis_linux

Создаем Транк в Астериске

Trunk Name: Skype_to_Sip

username=Skype_to_Sip
type=friend
context=from-internal
secret=skype_call_password
host=dynamic
nat=yes
dtmfmode=auto
canreinvite=no
incominglimit=1
outgoinglimit=1
call-limit=1
busylevel=1

Открываем siptosis.cfg, комментируем блок настроек, начинающийся с #Sample AUTO config with NO registration и убираем комментарии с блока #Sample Asterisk registration example, в нем правим:

host_port=5070
contact_url=Skype_to_Sip@127.0.0.1:5060
from_url=»Skype_to_Sip» 
username=Skype_to_Sip
realm=asterisk
passwd=************
expires=300
do_register=yes
minregrenewtime=120
regfailretrytime=15

Редактируем файл SkypeToSipAuth.props

nano SkypeToSipAuth.props 

Данный файл определяет куда перенаправлять все входящие звонки Skype SIP-пользователю «user2″.
Обязательно, необходимо создать в extensions.conf контекст «Skype», в котором разрешить звонки на этот extension.

*,sip:user2@127.0.0.1:5060

Запускаем маленький скрипт, ставим паузы по 3 секунды, что бы приложения запускались последовательно.

#!/bin/sh
# setting DISPLAY
export DISPLAY=:1
Xvfb ${DISPLAY} -screen 0 800x600x16 &
sleep 3
fluxbox &
sleep 3
echo login1 password1 | skype --pipelogin &
sleep 3
/home/login1/Skype/SipToSis/SipToSis_linux &
sleep 3
x11vnc -display ${DISPLAY} -bg -nopw -listen XXX.XXX.XXX.XXX -xkb

Если вы все сделали правильно, SipToSis запустится и подключиться к Skype. Skype выдаст вопрос – разрешить ли подключение.
Подключаемся с другой машины (в моем случае, с Windows 7 через VNC Viewer), подтверждаем лицензию, настраиваем, отключаем все лишнее.
Я поднял данный клиент на древней машине Seleron 400, 128Мб оперативной памяти, 1Гигобайт винчестер.
Так, что старое железо еще может пригодится.

К сожалению у меня так и не получилось добиться стабильной работы с несколькими аккаунтами. Если у Вас получилось, прошу поделится опытом.

Авг 312012
 

ШПАРГАЛКА. Команды Unix — Linux с описанием на русском, Основные команды, всегда под рукой. Весьма удобно для начинающих

Команды для работы с файловой ситсемой:
ls – список каталогов, файлов
ls -al – форматированный список со скрытыми каталогами и файлами
cd dir – сменить директорию на dir
cd – сменить на домашний каталог
pwd – показать текущий каталог
mkdir dir – создать каталог dir
rm file – удалить file
rm -r dir – удалить каталог dir
rm -f file – удалить форсированно file
rm -rf dir – удалить форсированно каталог dir
cp file1 file2 – скопировать file1 в file2
cp -r dir1 dir2 – скопировать dir1 в dir2; создаст каталог dir2, если он не существует
mv file1 file2 – переименовать или переместить file1 в file2. если file2 существующий каталог — переместить file1 в каталог file2
ln -s file link – создать символическую ссылку link к файлу file
touch file – создать file
cat > file – направить стандартный ввод в file
more file – вывести содержимое file
head file – вывести первые 10 строк file
tail file – вывести последние 10 строк file
tail -f file – вывести содержимое file по мере роста, начинает с последних 10 строк

Команды для управления процессами:
ps – вывести ваши текущие активные процессы
top – показать все запущенные процессы
kill pid – убить процесс с id pid
killall proc – убить все процессы с именем proc
bg – список остановленных и фоновых задач; продолжить выполнение остановленной задачи в фоне
fg – выносит на передний план последние задачи
fg n – вынести задачу n на передний план

Команды для управления правами доступа на файлы:
chmod octal file – сменить права file на octal, раздельно для пользователя, группы и для всех добавлением:
4 – чтение ®
2 – запись (w)
1 – исполнение (x)

Примеры управления правами доступа на файлы:
chmod 777 – чтение, запись, исполнение для всех
chmod 755 – rwx для владельца, rx для группы и остальных.
Дополнительные опции: man chmod.

SSH доступ:
ssh user@host – подключится к host как user
ssh -p port user@host – подключится к host на порт port как user
ssh-copy-id user@host – добавить ваш ключ на host для user чтобы включить логин без пароля и по ключам
scp Иточник Получатель:/ — копирования по ssh
пример: scp /home/user/ user@XXX.XXX.XXX.XXX:/home/user

Поиск:
grep pattern files – искать pattern в files
grep -r pattern dir – искать рекурсивно pattern в dir
command | grep pattern – искать pattern в выводе command
locate file – найти все файлы с именем file

Команды для получения системной информации:
date – вывести текущую дату и время
cal – вывести календарь на текущий месяц
uptime – показать текущий аптайм
w – показать пользователей онлайн
whoami – имя, под которым вы залогинены
finger user – показать информацию о user
uname -a – показать информацию о ядре
cat /proc/cpuinfo – информация ЦПУ
cat /proc/meminfo – информация о памяти
man command – показать мануал для command
df – показать инф. о использовании дисков
du – вывести ”вес” текущего каталога
free – использование памяти и swap
whereis app – возможное расположение программы app
which app – какая app будет запущена по умолчанию

Работа с архивацией данных:
tar cf file.tar files – создать tar-архив с именем file.tar содержащий files
tar xf file.tar – распаковать file.tar
tar czf file.tar.gz files – создать архив tar с сжатием Gzip
tar xzf file.tar.gz – распаковать tar с Gzip
tar cjf file.tar.bz2 – создать архив tar с сжатием Bzip2
tar xjf file.tar.bz2 – распаковать tar с Bzip2
gzip file – сжать file и переименовать в file.gz
gzip -d file.gz – разжать file.gz в file

Сеть:
ping host – пропинговать host и вывести результат
whois domain – получить информацию whois для domain
dig domain – получить DNS информацию domain
dig -x host – реверсивно искать host
wget file – скачать file
wget -c file – продолжить остановленную закачку

Установка пакетов:
Установка из исходников:
./configure
make
make install
dpkg -i pkg.deb – установить пакет (Debian)
rpm -Uvh pkg.rpm – установить пакет (RPM)
make -j8 — компилировать в 8 потоков.

Клавиатурные сочетания:
Ctrl+C – завершить текущую команду
Ctrl+Z – остановить текущую команду, продолжть с fg на переднем плане или bg в фоне
Ctrl+D – разлогиниться, тоже самое, что и exit(CTRL+D это совсем не тоже самое, что exit, это «конец файла». но при обычном приглашении действует примерно так-же.)
Ctrl+W – удалить одно слово в текущей строке
Ctrl+U – удалить строку
!! — повторить последнюю команду
exit – разлогиниться

Янв 142012
 

Восстановление отозванного сертификата openvpn

OpenSSL хранит статус каждого сертификата в ${CATOP}/index.txt, для OpenVPN это easy-rsa/keys/index.txt. На основе этого файла генерируется CRL (certificate revocation list).

Так выгялядят рабочий и отозванный сертификаты:
V       201120070444Z           22      unknown /C=RU/ST=Ru/L=Belgorod/O=FIT/CN=goodboy/emailAddress=admin@fabit.ru
R       201217190136Z   110830061053Z   23      unknown /C=RU/ST=Ru/L=Belgorod/O=FIT/CN=hmmboy/emailAddress=admin@fabit.ru
Для восстановления отозванного сертификата нужно отредактировать это файл. Заменить в строке соответствующей отозванному сетификату R на V и удалить третий столбец (это дата отзыва). Колонки разеделены табуляций, если нарушить это разделение, то можно похерить CA. Поэтому никаких пробелов и MS Word’ов.
После сохранения изменений нужно перегенерировать CRL. Возможно есть более гуманные способы, но приведенный ниже занял меньше всего времени по его поиску и возможности повторого использования. Скрипт revoke-full перегененрирует CRL, скопируем его в crl-regen и закомментируем строки ответственные за отзыв сертификата.
#!/bin/bash
CRL="crl.pem"
RT="revoke-test.pem"

#if [ $# -ne 1 ]; then
#    echo "usage: revoke-full <cert-name-base>";
#    exit 1
#fi

if [ "$KEY_DIR" ]; then
    cd "$KEY_DIR"
    rm -f "$RT" 

    # set defaults
    export KEY_CN=""
    export KEY_OU=""
    export KEY_NAME=""

#    # revoke key and generate a new CRL
#    $OPENSSL ca -revoke "$1.crt" -config "$KEY_CONFIG" 

    # generate a new CRL -- try to be compatible with
    # intermediate PKIs
    $OPENSSL ca -gencrl -out "$CRL" -config "$KEY_CONFIG"
    if [ -e export-ca.crt ]; then
        cat export-ca.crt "$CRL" >"$RT"
    else
        cat ca.crt "$CRL" >"$RT"
    fi

#    # verify the revocation
#    $OPENSSL verify -CAfile "$RT" -crl_check "$1.crt"
else
    echo 'Please source the vars script first (i.e. "source ./vars")'
    echo 'Make sure you have edited it to reflect your configuration.'
fi
Далее через скрипт list-crl можно поглядеть на отсутствие сертификата в списке отозванных. Так же помним о необходимости установить переменные среды через vars.
Дек 232011
 

Red Hat/Fedora Core/CentOS Linux

В Red Hat/Fedora Core/CentOS Linux- подобных наберите следующую команду чтобы получить список установленных программ

# rpm -qa | less

Debian Linux

В Debian Linux список установленных пакетов можно увидеть так:

# dpkg —get-selections

Ubuntu Linux

В Ubuntu Linux список установленных программ смотрим так:

# sudo dpkg —get-selections

FreeBSD

В FreeBSD установленные программы можно посмотреть так:

# pkg_info | less
# pkg_info apache

Используйте команду pkg_version чтобы показать общий список версий всех установленных пакетов в FreeBSD:

# pkg_version | less
# pkg_version | grep ‘lsof’

OpenBSD

В OpenBSD команда use pkg_info так же ведет себя как и в FreeBSD и покажет список установленных пакетов:

# pkg_info | less
# pkg_info apache