Asterisk заметки с хабра

Отправка уведомлений о пропущенных звонках из Asterisk
Asterisk: режим DND на BLF клавише
Индикация работы режима DnD на BLF клавише в Asterisk
Затачиваем Astesrisk для работы с BLF Cisco
Индикация состояния абонента в очереди на телефоне с BLF кнопками
Мониторинг состояния Asterisk с помощью MonAst
Как сделать будильник при помощи Asterisk, FreeBSD и наличии небольшого количества свободного времени
Переадресация для Asterisk
Оценка работы операторов на Asterisk
Автоматическая генерация Dial Patterns для Asterisk из DEF-кодов сотовых операторов
Попытка обойтись без регулярных выражений для номеров телефонов собственного региона
AEL в asterisk
Быстрое развертывание телефонной сети на Asterisk+Cisco
Openfire+Miranda+Asterisk+Active Directory+щепотка php,bash,C# или как звонить из Miranda, используя обычные телефоны
Панель телефонии для 1С
Digium G100 / G200 E1/T1/PRI маршрутизатор
Отчет о пропущенных за день звонках на почту
Интеграция мобильного телефона с корпоративной IP-АТС с помощью Aastra Mobile Client
Связь Elastix c Panasonic TDE 200 и платой v SIPGW16 по SIP
Домашний сервер: прокси для SIP
Система автоконфигурации для VoIP устройств на коленке
Запрос номера из реестра «Россвязи»

Падение Microsoft Exchange Transport .

Симптомы
Большой размер mail.que. Процесс EdgeTransport съедает всю оперативную память.

Файл mail.que располагается в папке:
%EXCHANGE_PATH%\TransportRoles\data\Queue
и представляет из себя файл базы данных очереди сообщений для промежуточного хранения данных перед их доставкой. При быстром росте файла появляется множество файлов вида:
trn0000XXX.log

one
Лечение

Set-TransportServer mail -PipelineTracingEnabled $False
Set-TransportConfig -MaxDumpsterSizePerStorageGroup 100MB -MaxDumpsterTime 7.00:00:00

Для диагностики также можно воспользоваться

Get-Message -Queue "Unreachable" | Export-Message -Path "c:\UNR\"
Get-Message -Queue "Remote Delivery Queue" | Export-Message -Path “c:\DLVR\”

Добавление фотографий в GAL Exchange и AD PowerShell

Cкрипт для массовой загрузки-ресайза фотографий.

Выполнять в консоли PShell exchange

[PS] C:\Windows\system32>cd C:\photos
[PS] C:\photos>.\BatchConverter.ps1 -InputFolder .\Input -OutputFolder .\Output
Converting C:\photos\Input\ivanov.jpg
USER ivanov
[PS] C:\photos>

Что делает скрипт:
Ищет файлы с расширением =».jpg»,».jpeg»,».bmp»,».tif»,».tiff»,».gif»,».png» по пути C:\photos\input (Имя файла == логину пользователя)
Ресайзит их до размера 96*96 пикселей (Максимальный размер для AD)
Загружает фото в AD

param($InputFolder,$OutputFolder,$Quality);
if (!$InputFolder -or !$OutputFolder)
{
    throw "НЕ введены параметры инпут-оутпут папок";
}
if (!(Test-Path $InputFolder))
{
    throw "InputFolder нет папки";
}
if (!(Test-Path $OutputFolder))
{
    throw "OutputFolder нет папки";
}
$FullOutputFolderPath = (Get-Item $OutputFolder).FullName
if (!$Quality)
{
    $Quality = 100;
}
$Items = Get-ChildItem $InputFolder
if ($Items.Count -eq 0)
{
    throw "No items in folder"
}
[array]$ValidExt=".jpg",".jpeg",".bmp",".tif",".tiff",".gif",".png"
foreach ($Item in $Items)
{
    if ($ValidExt -contains $Item.Extension)
    {
        Write-Output "Converting $($Item.FullName)"
        .\convert.exe -quality $Quality -depth 8 -strip -thumbnail 96x96^ -gravity Center -crop 96x96+0+0 $Item.FullName "$($FullOutputFolderPath)\$($Item.BaseName).jpg"
        Write-Output "USER $($Item.BaseName)"
        Import-RecipientDataProperty -Identity "$($Item.BaseName)" -Picture -FileData ([Byte[]]$(Get-Content -Path "$($FullOutputFolderPath)\$($Item.BaseName).jpg" -Encoding Byte -ReadCount 0))
    }
}

Планшет в качестве магнитолы. Тюнинг Hyunday Terracan

Сегодня мой друг, Сергей Кушеев (Immortal) выложил мануал, мимо которорого я не мог пройти мимо, с его разрешения выкладываю….

Пациент: Hyunday Terracan 2002 года
Диагноз: отсутствие музыки, штатная магнитолла умерла от старости.
Лечение:

планшет DNS E78- 3790 руб.
усб кабель — 150 руб.
адаптер 12в — 5в 2100 мач 2 шт. — 400 руб.
усилитель автомобильный 4-х канальный 4х40 Вт — 600 руб.
ELM327 Bluetooth OBD2 V1.5 Car Diagnostic Interface — 13$ — 450 руб.
E4000+2832U USB DVB-T TV Receiver Stick — White + Black — 18$ — 600 руб. (в качестве fm радио с программой SDR Touch)
usb хаб с внешним питанием — 370 руб.
micro sd карта памяти — 1100

Итого мы имеем расходы в сумме: 7460

что мы имеем: Читать далее

Asterisk 11 Centos 6.5 Установка

Образ используемый для установки
CentOS-6.5-x86_64-minimal.iso   md5 0d9dc37b5dd4befa1c440d2174e88a87

VM под астериск
IP 192.168.0.33/24
GW 192.168.0.1
DNS 192.168.0.2,192.168.0.22
Суффиксы DNS поиска iamroot.ru

[root@ast-01 ~]# uname -r
2.6.32-431.el6.x86_64
[root@ast-01 ~]# yum update –y
[root@ast-01 ~]# sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
[root@ast-01 ~]# yum install -y make wget openssl-devel ncurses-devel newt-devel libxml2-devel kernel-devel gcc gcc-c++ sqlite-devel libuuid-devel nano perl
[root@ast-01 jansson-2.5]# cd ../
[root@ast-01 src]# wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
[root@ast-01 src]# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
[root@ast-01 src]# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz
[root@ast-01 src]# tar zxvf dahdi-linux-complete*
[root@ast-01 src]# tar zxvf libpri*
[root@ast-01 src]# tar zxvf asterisk*
[root@ast-01 src]# reboot
[root@ast-01 src]# cd /usr/src/dahdi-linux-complete* && make && make install && makeconfig
[root@ast-01 src]# chkconfig --add dahdi
[root@ast-01 src]# cd /usr/src/libpri* && make && make install
[root@ast-01 libpri-1.4.14]# cd /usr/src/asterisk*
[root@ast-01 asterisk-11.7.0]#./configure --libdir=/usr/lib64 && make menuselect && make && make install
[root@ast-01 asterisk-11.7.0]# make samples
[root@ast-01 asterisk-11.7.0]# yum install doxygen -y && make progdocs
[root@ast-01 asterisk-11.7.0]# make config
[root@ast-01 asterisk-11.7.0]# service dahdi start
[root@ast-01 asterisk-11.7.0]# service asterisk start
[root@ast-01 asterisk-11.7.0]# asterisk -r
Privilege escalation protection disabled!
See https://wiki.asterisk.org/wiki/x/1gKfAQ for more details.
Asterisk 11.7.0, Copyright (C) 1999 - 2013 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
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 11.7.0 currently running on ast-01 (pid = 29706)
ast-01*CLI>

[root@ast-01 src]# cd /usr/src/
[root@ast-01 src]# yum install -y python iptables
[root@ast-01 src]# wget sourceforge.net/projects/fail2ban/files/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2/download
[root@ast-01 src]# tar jxf fail2ban-0.8.4.tar.bz2
[root@ast-01 src]# cd fail2ban-0.8.4
[root@ast-01 fail2ban-0.8.4]# python setup.py install
[root@ast-01 fail2ban-0.8.4]# cp /usr/src/fail2ban-0.8.4/files/redhat-initd /etc/init.d/fail2ban
[root@ast-01 fail2ban-0.8.4]# chmod 755 /etc/init.d/fail2ban
[root@ast-01 files]# touch /etc/fail2ban/filter.d/asterisk.conf
[root@ast-01 files]# cat /etc/fail2ban/filter.d/asterisk.conf
# Fail2Ban configuration file
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
#before = common.conf
[Definition]
#_daemon = asterisk
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P\S+)
# Values: TEXT
#
failregex = NOTICE.* .*: Registration from '.*' failed for '' - Wrong password
NOTICE.* .*: Registration from '.*' failed for '' - No matching peer found
NOTICE.* .*: Registration from '.*' failed for '' - Username/auth name mismatch
NOTICE.* .*: Registration from '.*' failed for '' - Device does not match ACL
NOTICE.* .*: Registration from '.*' failed for '' - Peer is not supposed to register
NOTICE.* .*: Registration from '.*' failed for '' - ACL error (permit/deny)
NOTICE.* .*: Registration from '.*' failed for '' - Device does not match ACL
NOTICE.* failed to authenticate as '.*'$
NOTICE.* .*: No registration for peer '.*' \(from \)
NOTICE.* .*: Host failed MD5 authentication for '.*' (.*)
NOTICE.* .*: Failed to authenticate user .*@.*
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex = 192.168.0.0/24 #указываем наш IP с которого не будет проходить блок
------------------------------------------------
[root@ast-01 files]#cat /etc/fail2ban/jail.conf
------------------------------------------------
…
[asterisk-iptables]

enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, protocol=all]
sendmail-whois[name=ASTERISK, dest=root, sender=fail2ban@localhost]
logpath = /var/log/messages
maxretry = 5
bantime = 259200
ignoreip=192.168.0.0/24
-----------------------------------------------------
[root@ast-01 files]# nano /etc/asterisk/logger.conf
-----------------------------------------------------
...
[general]
dateformat=%F %T

syslog.local0 => notice
...
-----------------------------------------------
[root@ast-01 files]#service iptables start
[root@ast-01 files]#service fail2ban start

Аудит заполнения полей AD Powershell

$base = "OU=OOO_MYCOMPANY,DC=iamroot,DC=ru"
$properties = "telephoneNumber","mail","displayName","company","department","manager","title","l","thumbnailPhoto"
Get-ADUser -Filter * -SearchBase $base -Properties $properties | Foreach {
 $user = $_
 if($miss = $properties | Where {!$user."$_"}) {
  "{0} - {1}" -f ($miss -join ","),$user.name
 }
 else {
  "OK - {0}" -f $user.name
 }
} | Sort |  Out-String > c:\BAD_USER_LIST.txt

AD Заполнение отдела пользователя по имени OU/Создание группы безопасности по имени OU

clear
$Connect = "LDAP://dc3/DC=iamroot,DC=ru"
$ads = [adsi] $Connect
$ads = New-Object System.DirectoryServices.DirectorySearcher([ADSI]"")
$ads.PageSize = 25000
$ads.Filter = "(&(objectCategory=OrganizationalUnit))"
$ads.SearchScope = "Subtree"
$ads.PropertiesToLoad.AddRange(@("name", "distinguishedName","canonicalName")) 

$ads.FindAll() | %{
   $OU=$_.Properties["canonicalname"]
   $departments=$_.Properties["name"]
   If ($OU –match "OOO_MYCOMPANY") {
  	 If ($OU –match "Москва") {
 	  $pref="MSK_"
 	  }
	 If ($OU –match "Ростов-на-дону") {
 	  $pref="RST_"
 	  }
	 If ($OU –match "Екатеринбург") {
 	  $pref="EKB_"
 	  }
	 If ($OU –match "Санкт-петербург") {
 	  $pref="SPB_"
 	  }
	 If ($OU –match "Новосибирск") {
 	  $pref="NSK_"
 	  }
	 If ($OU –match "Региональные") {
 	  $pref="RP_"
 	  }
	 If ($OU –match "Самара") {
 	  $pref="SMR_"
 	  }
  	 new-QADGroup -name "$pref$departments" -ParentContainer "$OU" 
  	 Get-QADUser -searchRoot "$OU" -searchScope 'OneLevel' | `
  	 Set-QADUser -Description "$departments" -Department "$departments" 
   }
}

Куда сходить с друзьями в Петербурге

Маленький полезный списочек

Театры:

1. Смарттеатр, Владимирский проспект, 19, www.spb-smartstudio.ru
2. Театр «Бродячая Собачка», проспект Стачек, 59, www.puppettheatre.spb.ru
3. Большой театр кукол, улица Некрасова, 10, www.puppets.ru/index.php Читать далее