Перейти к публикации
iT4iT.CLUB

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией на 27.08.2015 во всех областях

  1. 1 балл
    При борьбе с всякими нечестивыми гражданами, мы пришли к тому, что надо бы нам бросать трубку при звонке за рубеж и извещать нас об этом. Ну подумал я, это дело не хитрое и влепил в план нумерации, в секцию с правилами исходящих звонков такую конструкцию: [mezdunarod] exten => _810.,1,Playback(cannot-complete-as-dialed) same => n,System(mail -s "${CALLERID(num)} => ${EXTEN} ALARM" ВАШ_ЕМАЙЛ) same => n,Hangup()Уточню, что если вы хотите массовую рассылку то указывайте через запятую емайлы. Если будете делать без отдельной секции, то всё будет выглядеть так: exten => _810.,1,Playback(cannot-complete-as-dialed) exten => _810.,2,System(mail -s "${CALLERID(num)} => ${EXTEN} ALARM" ВАШ_ЕМАЙЛ) exten => _810.,3,Hangup()В принципе можно второй вариант разместить и в секции с входящими, да и вообще вариантов масса. Всего хорошего и удачи в борьбе с вредителями.
  2. 1 балл
    Всё сделанное основано на статье http://habrahabr.ru/post/213669/ Имеем FreeBSD 9.2-STABLE с обновлёнными портами. Как обычно я пытался наскоком быстро сделать всё но не получилось. Так-что опишу свои действия ибо у каждого могут быть свои препоны как в путях и именах файлов так и в самом диалплане. Поехали. Устанавливаю. voip# whereis mysql-connector-odbc mysql-connector-odbc: /usr/ports/databases/mysql-connector-odbc voip# cd /usr/ports/databases/mysql-connector-odbc voip# make install clean voip# Правлю файл /usr/local/etc/odbcinst.ini [MySQL] Description = ODBC for MySQL Driver = /usr/local/lib/libmyodbc5.so Setup = /usr/local/lib/libodbc.so.2 FileUsage = 1Далее /usr/local/etc/odbc.ini [asterisk-connector] Description=MySQL connection to 'asterisk' database Driver=MySQL Server=localhost Database=БАЗА_АСТЕРИСКА UID=ЛОГИН_С_ПРАВАМИ_ПОДКЛЮЧЕНИЯ PWD=ПАРОЛЬ Port=3306 SOCKET=/tmp/mysql.sockОбращайте внимание на пути и имена библиотек, файлов. У меня FreeBSD 9.2-STABLE Проверяю voip# isql -v asterisk-connector +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> quit voip# Смотрю ошибки в файлах если не получилось. Продолжаю. Правлю файл /usr/local/etc/asterisk/res_odbc.conf добавляя в конец [asterisk2mysql] enabled => yes dsn => asterisk-connector pre-connect => yesи файл /usr/local/etc/asterisk/func_odbc.conf так-же добавляя в конец [FROMMOBILE] dsn=asterisk2mysql readsql=SELECT channel FROM cdr WHERE dst=${ARG1} ORDER BY calldate DESC LIMIT 1Дальше самое интересное, я выношу эксклюзивные настройки, голосовые меню в отдельный файл. Дабы не засорять и без того большой файл extensions.conf Тачу файл mobile.ru voip# cd /usr/local/etc/asterisk voip# touch mobile.ru voip# Шлёпаю в extensions.conf В самом верху врубаю новорождённый файл #include "mobile.ru"На входе, у меня это секция [default] отправляю номер 5696 к mobile.ru exten => 5696,1,Goto(mobile_ru,s,1)5696 Это номер на который ссылается внешний городской на шлюзе. Если всё отлично с АОН то вообще всё прекрасно. Ну и отправляюсь создавать код в файл mobile.ru. На него я потратил много времени, подгибая под себя и исправляя ошибки из оригинальной статьи, На выходе он у меня получился такой. [mobile_ru] exten => s,1,Answer() exten => s,2,MYSQL(Connect connid localhost ЛОГИН ПАРОЛЬ БАЗА) exten => s,3,MYSQL(Query resultid ${connid} SELECT `channel` FROM `cdr` WHERE `dst`='8${CALLERID(number)}' AND `disposition`="NO ANSWER" OR `dst`='8${CALLERID(number)}' AND `disposition`="BUSY" AND `billsec` < "4" ORDER BY `calldate` DESC LIMIT 1) sition`="BUSY" AND `billsec` < "4" ORDER BY `calldate` DESC LIMIT 1) exten => s,4,MYSQL(Fetch fetchid ${resultid} var) exten => s,5,MYSQL(Clear ${resultid}) exten => s,6,MYSQL(Disconnect ${connid}) exten => s,7,Set(CHAN=${SHELL(echo ${var} |tr -d '\n' |sed -e 's/.*\/\(.*\)\-.*/\1/g' |tr -d '\n')}) exten => s,8,Set(i=0) exten => s,9,Set(COUNTER=${LEN(${CHAN})}) exten => s,10,While($[${i} < ${COUNTER}]) exten => s,11,Playback(/usr/local/etc/asterisk/IT/${CHAN:${i}:1}) exten => s,12,Set(i=$[${i} + 1]) exten => s,13,EndWhile() exten => s,14,Goto(office,${CHAN},1) exten => s,15,Hangup()Разберём его по порядку. 1) Поднимаем трубку 2) Подключаемся к базе mysql 3) Выполняем запрос (тут я искал строки с номером вызывающего абонента в которых присутствовало-бы ANSWER, NO ANSWER, BUSY. Да и обратите внимание на '8${CALLERID(number)}', у меня LDK300 не отдаёт полностью АОН вызывающего абонента и пришлось подставлять костыли таким макаром.) 4) Получаем результат пишем в var 5) Освобождаем память от запроса 6) Отключаемся от БД 7) Убираем всё лишнее в результате. 8) Индекс для цикла ( Тут на любителя, мне понравилось, что вызывающему абоненту говорится номер внутренний того кто его вызывал, если кому не нравится можете убрать соответствующие строки.) 9) Получаем длину внутреннего номера который нужно произнести 10) Пока индекс меньше длины номера 11) Произносим текущую цифру номера (Укажите путь где есть файлы у вас с медиа файлами озвучки цифр, у меня это оказался /usr/local/etc/asterisk/IT) 12) Увеличиваем индекс на один 13) Заканчиваем цикл 14) Соединяем абонентов (Я отправил в секцию [office] так как у меня там собраны include всех секций в диалплане, вы куда хотите туда посылайте) 15) Кладём трубку ( У меня если поиск не выполнялся успешно, а именно внутреннего номера небыло найдено, то звонок чудным образом начинал уходить по кругу на номер 5696, и asterisk падал. А если трубку класть то при таком повороте вещей вам говорят, что такого номера нет. Типа вам никто не звонил. ) Ну вот как-то так. Рестартим Астериск, тестим звонки Пробуйте, сделаете что-то новое напишите как и что, буду благодарен :). Да и вообще пишите вопросы если, что не понятно.
  3. 1 балл
    Соединяем два устройства небезысвестной фирмы через тырнет. Простенько без наворотов. Ваялось всё на cisco 2911 System Bootstrap, Version 15.0(1r)M16, RELEASE SOFTWARE (fc1). С лицухами такими: Technology Package License Information for Module:'c2900' ----------------------------------------------------------------- Technology Technology-package Technology-package Current Type Next reboot ------------------------------------------------------------------ ipbase ipbasek9 Permanent ipbasek9 security securityk9 Permanent securityk9 uc None None None data None None NoneCISCO № 1 Объявляем политику и описываем её. (config)#crypto isakmp policy 1 encr aes 256 authentication pre-share group 2 lifetime 3600Создаём ключ аутентификации вместе с ключевой строкой (config)#crypto isakmp key ОЧЕНЬСЛОЖНЫЙКЛЮЧ address АДРЕСНАЗНАЧЕНИЯНастраиваем окно шлюза (config)#crypto ipsec security-association replay window-size 128Настраиваем IPSEC transform set политику (config)#crypto ipsec transform-set ИМЯНАШЕЙПОЛИТИКИ esp-aes 256 esp-sha-hmac mode transport requireОбозначаем время жизни (config)#crypto isakmp keepalive 10 10Чистим DF биты для инкапсулированных пакетов (config)#crypto ipsec df-bit clearВаяем карту, можно идти и другим путём, но я ваяю карту. Такой я упоротый. (config)#crypto map ИМЯНАШЕЙКАРТЫ 200 ipsec-isakmp set peer АДРЕСНАЗНАЧЕНИЯ set security-association lifetime seconds 21600 set transform-set ИМЯНАШЕЙПОЛИТИКИ set pfs group2 match address НОМЕРACCESSЛИСТАСоздаём интерфейс (config)#interface Tunnel0 ip address 172.16.0.1 255.255.255.252 ip virtual-reassembly in ip tcp adjust-mss 1396 tunnel source АДРЕСНАШВНЕШНИЙ tunnel mode ipip tunnel destination АДРЕСНАЗНАЧЕНИЯВешаем крипто на внешний интерфейс (config)#interface ИМЯВНЕШНЕГОИНТЕРФЕЙСА crypto map ИМЯНАШЕЙКАРТЫСоздаём лист доступа (config)#access-list НОМЕРACCESSЛИСТА permit ip host АДРЕСНАШВНЕШНИЙ host АДРЕСНАЗНАЧЕНИЯ (config)#access-list НОМЕРACCESSЛИСТА permit ip host АДРЕСНАЗНАЧЕНИЯ host АДРЕСНАШВНЕШНИЙКидаем рельсы (config)#ip route ВНУТРЕННЯЯСЕТЬУДАЛЁННАЯ МАСКАСЕТИУДАЛЁНОЙ Tunnel0В принципе всё на первом, ну а на втором делаем эдентичные настройки кроме, естественно, ип адреса на интерфейсе тунеля. Там пишем 172.16.0.2 адресок и радуемся. Если что-то не получилось, предполагаю, что что-то сделано не так как написано тут или сделано кое что ещё. Надеюсь ничего не забыл и не перепутал, со мной такое бывает. Enjoy!
  4. 1 балл
    Ну, стоит и это на хранение положить, дабы потом быстрее было вытаскивать. В принципе бекапить всё и вся более менее важное, должен каждый хоть чуточку уважающий себя админ. И им это будет не интересно, но как я уже сказал на главной своего блога "Всё опубликованное является написанным для памяти и не претендует на исключительность". Будем складывать дамп мускуля на отдельно стоящий и настроенный FreeNAS с NFS шарой. Запишу как делал на Linux и FreeBSD. Начнём с не любимого мной Debian. Тачу файл скрипта. # touch /root/backup.shНазначаем привилегии. chmod 540 /root/backup.sh chown root:root /root/backup.shЧитать и исполнять его может только root. Нефиг остальным там делать. Создаём директорию куда будем монтировать #mkdir /mnt/archНаполняем его содержимым. #!/bin/sh n=$(date +%Y%m%d%H%M) cd /home/tmpbkp mysqldump -uroot -pСУПЕРПАРОЛЬ mail > $n.mail.sql mount.nfs КРАСИВЫЙИП:/mnt/rm1/arch/mail /mnt/arch mv /home/tmpbkp/$n.mail.sql /mnt/arch/$n.mail.sql umount /mnt/archВ принципе всё понятно, и тут нечего разбирать. Кому надо спросите. Пишем в кронтаб автозапуск. #crontab -e 1 01 * * * /root/backup.shВ принципе всё, перейду к любимому дьяволёнку. Почти ничем не отличаются манипуляции, кроме. Я на фре, спасибо моему старшему товарищу приучившему меня к этому, создаю отдельную дирректорию для скриптов. Тачу файл там. #touch /usr/local/scripts/backup.shДаю права #chmod 540 /usr/local/scripts/backup.sh #chown root:wheel /usr/local/scripts/backup.shНаполняю его содержимым #!/bin/sh n=$(date +%Y%m%d%H%M) cd /usr/home/vit/bacup mysqldump -uroot -pСУПЕРПАРОЛЬ telefon > $n.telefon.dump.sql mount -t nfs -o 'vers=3' КРАСИВЫЙИП:/mnt/rm1/arch/stat /mnt/arch mv /usr/home/vit/bacup/$n.telefon.dump.sql /mnt/arch/$n.telefon.dump.sql umount /mnt/archПишем в кронтаб запуск #ee /etc/crontab 1 01 * * * root /usr/local/scripts/backup.shНу как-то так. Да, и не забываем о блокировке баз при снятии дампа, думаю для больших баз нужно по изучать "man mysqldump". Enjoy
×
×
  • Создать...