Нас невозможно сбить с пути - нам пофигу куда идти.

PianoBooster - обучение игре на клавишных инструментах.

Искал софтину, которая помогала бы освоиться с нотами, нашел классную штуку для обучения игры на клавишах по нотам - PianoBooster.

Грузишь мидишку - она рисует нотный стан, гонит музыку и позволяет/заставляет в правильное время жать правильные кнопочки, как мартышку. Если все делаешь правильно, то получаешь банан, в виде нормально звучащей композиции.

Для нормального использования, таки требуется MIDI клава, т.к. с обычной клавой как-то вообще не ассоциируется у меня.

Нашел отсюда.

0
Your rating: Нет

Копирование системы с ZFS по сети

Возникла задачка, скопировать систему с виртуальной машины на железную. Т.к. система была поставлена полность на ZFS, то соответственно, переносить захотелось силами ZFS.

Все оказалось достаточно просто. Загружаем получателя с установочного диска, входим в LiveCD, поднимаем сеть,

подготавливаем диск к загрузке

dd if=/boot/zfsboot of=/dev/ada0 count=1
dd if=/boot/zfsboot of=/dev/ada0 skip=1 seek=1024

создаем пул

zpool create -f zroot ada0

Запускаем netcat на прослушку и передачу данных в zfs

nc -l 8080 | zfs receive -vdF zpool

На рабочей машине делаем снепшот всего пула

zfs snapshot -r zroot@transfer

и запускаем zfs на отправку данных через неткат

zfs send -Rv zroot@transfer | nc new_pc_ip 8080

Некоторое время ждем, и если все хорошо, то перегружаемся.

0
Your rating: Нет

Подключаю DKIM подпись к доменной почте на exim

Продолжаю учиться играть в почту.

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

Идейно есть две вещи DomainKey и DKIM.

Если я правильно понял, то это очень похожие вещи, но сейчас, вроде, чаще используется DKIM.

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

Все настраивал по статье "Exim + DKIM на примере FreeBSD 8.2", но как обычно вышло все не без затыков.

Момент первый - куда втыкать.

 Эти строки нужно вставить в секцию remote_smtp транспорта, а не протокола:

  dkim_domain           = DKIM_DOMAIN
  dkim_selector         = YouSelectorName
  dkim_private_key      = DKIM_PRIVATE_KEY

Гуглится легко, но таки время.

Момент второй - как прописывать публичный ключ в DNS.

Т.к. ключ достаточно длинный, нужно его разбивать на несколько строк, т.е. у меня это выглядело так:

0
Your rating: Нет

Учусь использовать Sieve для фильтрации почты на сервере

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

Вроде статей много, как это сделать, но все они упускают 2-а момента:

  1. У пользователся обязательно должен быть так называемый основной скрипт, который все остальные скрипты запускает. В основном, его обзывают ".dovecot.sieve"  и лежит он в корне пользовательского каталога почты. Его содержимое простое до ужаса:
    require ["include"];
    include :personal "my_file_script";

    Соответственно, все файлики со скриптами нужно перечислить, без этого ничего не запустится, сколько бы клевых скриптов не было создано.
  2. Когда пытался из ThunderBird сделать правила, то проблема встала с папочками с русскими именами, ну как обычно. Я пытался использовать не их русское имя, а брать имя из свойства папки, т.е. что-то типа "%26BBgEQQRFBD4ENARPBEkEOAQ1-", что оказалось, хоть и волне логично, но совершенно не верно. Нужно было указывать имя папки русскими буковками, разделяя папочка точками.

После этого, вроде уже нормально все зашуршало.

0
Your rating: Нет

Asterisk: Лимитирование звонков по каналу.

Т.к. некоторые SIP/VoIP провайдеры далют халяву с некоторыми ограничениями (на пример sipnet) на количество звонков и их общую продолжительность, захотелось этим воспользоваться, но при этом не попадать на деньги.

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

1. Учет звонков.

Учитываем только отвеченные

[macro-count_dial_from_trunk]
exten => s,1,NoOp(${CDR(duration)} ${CDR(billsec)})

; Enable call limit control ?
exten => s,n,GotoIf($[${DB(trunk/${NAME_TRUNK}/day/limit-enable)} = 1 ]?:noanswer)
exten => s,n,GotoIf($[${DIALSTATUS} = ANSWER ]?:noanswer)

exten => s,n,Set(foo=${CUT(CDR(dstchannel),,1)})
exten => s,n,Set(foo=${CUT(foo,/,2)})

exten => s,n,GotoIf($[${ISNULL(${DB(trunk/${foo}/day/call-time)})}]?:continue_call-time)
exten => s,n,Set(DB(trunk/${foo}/day/call-time)=0)
exten => s,n(continue_call-time),Set(DB(trunk/${foo}/day/call-time)=$[${DB(trunk/${foo}/day/call-time)}+${CDR(billsec)}])

exten => s,n,GotoIf($[${ISNULL(${DB(trunk/${foo}/day/call)})}]?:continue_call)
exten => s,n,Set(DB(trunk/${foo}/day/call)=0)
exten => s,n(continue_call),Set(DB(trunk/${foo}/day/call)=$[ ${DB(trunk/${foo}/day/call)} + 1 ])

exten => s,n(noanswer),Verbose(4,Call count:${DB(trunk/${foo}/day/call)} - time(s):${DB(trunk/${foo}/day/call-time)})

2. Проверка превышения лимита

0
Your rating: Нет

Оповещение пользователей Asterisk о звонке на почту и jabber

Захотелось извещать пользователей Asterisk о поступающих им звонках. Наваял такой макрос:

[macro-notice_by_call]
exten => s,1,Verbose(4,Starting notification macros)
exten => s,n,Set(TIME_STRING=${STRFTIME($EPOCH,,%d %B %Y -  %T)})
exten => s,n,Set(SUBJECT_STRING=You call from ${CALLERID(name)} (${CALLERID(number)}))
exten => s,n,Set(MESSAGE_STRING=You call from ${CALLERID(name)} (${CALLERID(number)}). Time: ${TIME_STRING})

exten => s,n,GotoIf($[${ISNULL(${DB(abonent/${MACRO_EXTEN}/notyfication_jabber)})}]?skip_jabber_notification)
exten => s,n,GotoIf($[${DB(abonent/${MACRO_EXTEN}/notyfication_jabber)}=0]?skip_jabber_notification)
exten => s,n,jabbersend(asterisk,${DB(abonent/${MACRO_EXTEN}/jabber)},${MESSAGE_STRING})
${STRFTIME($EPOCH,,${TIME_STRING})})
exten => s,n(skip_jabber_notification),NoOp(No need jabber notification)
 
exten => s,n,GotoIf($[${ISNULL(${DB(abonent/${MACRO_EXTEN}/notyfication_email)})}]?skip_email_notification)
exten => s,n,GotoIf($[${DB(abonent/${MACRO_EXTEN}/notyfication_email)}=0]?skip_email_notification)
exten => s,n,system(echo "${MESSAGE_STRING}" | mail -s "${SUBJECT_STRING}" ${DB(abonent/${MACRO_EXTEN}/email)});
exten => s,n(skip_email_notification),NoOp(No need email notification)

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

0
Your rating: Нет

Играюсь в анонимность в сети

Пока разбирался с OpenVPN и с чем его едят, узнал что он очень популярен для поднятия VPNа с целью скрытия своего IP адреса.

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

Из того что понравилось:

VPN Gate

цитата с хабра:

VPN Gate — академический эксперимент Проект представляет собой интернет-сервис как научных исследований в Высшей Школе Университета Цукуба, Япония. Цель данного исследования заключается в расширении знаний «Глобальные Распределенные открытый ретранслятор Сервера VPN».

Как говорит автор, целью проекта было помочь пользователям в странах, где действует государственная цензура интернет-трафика. VPN Gate так же бесплатен и открыт для всех желающих, как и Tor. С момента запуска в пятницу всего за пять дней сервисом воспользовались 77 тыс. пользователей, сгенерировав около четырёх терабайт трафика, так что спрос на бесплатные VPN явно присутствует.

0
Your rating: Нет

Учусь пользоваться OpenVPN

Начал разбираться, чем и как лучше поднимать шифрованные тунели. Один из вариантов OpenVPN.

На вскидку плюсы и минусы:

Плюсы:

  • по описаниям, надежное шифрование
  • использование одного порта для работы или UDP или TCP, может работать через прокси сервер
  • автоматически поддерживает соединение, т.е. не надо контролировать обрывы связи
  • позволяет управлять роутингом клиентов
  • разные механизмы авторизации: логин/пароль, ключи, сертификаты X.509
  • кросплатформенность
  • открытость
  • возможность поиграться в PKI
  • возможность как P2P (маршрутизируемого) соединения, так и моста (при необходимости прокинуть не IP трафик или прохождения широковещательных пакетов)

Минусы:

  • Отдельный продукт, который необходимо устанавливать, а не работает "искаропки", что требует определенных привилегий
  • Не совсем привычная настройка
  • не получилось повесить один сервер на разные порты (возможно, руки кривые)

По сертификатам X.509

Создаем/получаем корневой доверенный сертификат, с помощью которого, подписываем сертификаты клиентов и серверов.

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

Клиент и сервер определяются по их личным сертификатам, ключам и именам в сертификате (Common Name).

0
Your rating: Нет

VPN через ssh на FreeBSD

Обычно объединял сети через тунели между FreeBSD шлюзы через gif-интерфейсы. Легко, просто, быстро, удобно.

Но захотелось прикрутить к этому шифрование. IPSEC не понравился, т.к. нужно много ставить и настраивать, а тут все компоненты есть в коробке.

Последовательность:

  1. Настраиваем sshd: разрешаем тунелирование и вход от root только по ключу.
  2. Создаем ключи и копируем на сервер.
  3. Настраиваем тунель и автоматизируем процес.

Настраиваем sshd: разрешаем тунелирование и вход от root только по ключу

в /etc/ssh/sshd_config добавляем

# For SSH tunel
PermitTunnel yes
PermitRootLogin without-password
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Создаем ключи и копируем на сервер

На клиенте создаем ключ и публичный ключ копируем на сервер.

На клиенте

ssh-keygen -t rsa -b 4096
# cat /root/.ssh/id_rsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"

На сервере помещаем ключ нужному пользователю:

cat authorized_keys >> /root/.ssh/authorized_keys

После этого на клиенте запускаем

ssh -w5:5 -f -CT -o ServerAliveInterval=10 root@server "ifconfig tun5 10.0.1.1 10.0.1.2" && ifconfig tun5 10.0.1.2 10.0.1.1

Прописываем роутинги и далее, все должно быть хорошо.

0
Your rating: Нет

Поездка до Питера

ЧТо-то гугель подглючивает или сайт, придется убрать карту под кат.

0
Your rating: Нет
Ленты новостей