среда, 24 января 2018 г.

CentOS 7. Избавляемся от мусора в /var/log/messages (Created slice..., Stopping User...)

Создаем файл garbage.conf в /etc/rsyslog.d/ с таким содержанием:
if $programname == "systemd" and ($msg contains "Starting Session" or $msg contains "Started Session" or $msg contains "Created slice" or $msg contains "Starting User" or $msg contains "Removed slice User" or $msg contains "Stopping User") then stop

Перегружаем rsyslog:
# systemctl restart rsyslog

вторник, 23 января 2018 г.

Разворачиваем LAMP+Asterisk 15 на CentOS 7.

# yum update
# systemctl stop firewalld && systemctl disable firewalld
Правим SELINUX=disabled в /etc/sysconfig/selinux

# yum -y install mariadb-server mariadb
# systemctl enable mariadb.service
# systemctl start mariadb.service
# mysql_secure_installation

четверг, 3 августа 2017 г.

Настройка отправки почты через gmail с помощью php и msmtp.

В настройках аккаунта Google разрешаем доступ для "менее безопасных" приложений!
Ставим msmtp. Создаем файл конфига /usr/local/etc/msmtprc:
account default
host smtp.gmail.com
port 587
from user@gmail.com
user user@gmail.com
password my_password
auth on
tls on
tls_certcheck off
keepbcc on

Пишем в php.ini:
sendmail_path = "/usr/local/bin/msmtp -t"

Пример кода на PHP:
<?php
$BODY = "Body is here";

$to = 'user@mail.ru';
$subject = '=?utf-8?b?' . base64_encode("Subject is here") . '?=';
$message = "$BODY";.
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8'."\r\n";
$headers .= 'From: '.'=?utf-8?b?' . base64_encode("My Name") . '?='.' <user@gmail.com>'."\r\n";

if(!mail($to, $subject, $message, $headers)){
    die('error');
}
?>

вторник, 1 августа 2017 г.

Установка sipcapture сервер (HOMER) на FreeBSD.

Если не распознается логин/пароль при входе в UI, то проверяем две вещи:
1) доступность API, выполнив вызов http://ip_adress/homer/api/v1/test/. Если вызов не прошел, проверяем настройку mod_rewrite в Апаче.
2) наличие модуля php pdo_mysql. Без него не идут запросы в базу.

EEP поддерживает sngrep (надо собирать из портов с поддержкой EEP). Пример команды:
# sngrep port 5060 -H udp:192.168.2.216:9060 -d em1 -N -q

пятница, 19 мая 2017 г.

Установка chan_dongle на FreeBSD 10, Asterisk 13

Подключаем драйвера umodem и u3g.
Не забываем добавить загрузку в loader.conf.

Скачиваем chan_dongle для asterisk 13. Распаковываем.
Ставим autotools.
# pkg install autotools-20130627
Далее сносим внешний libiconv, если ставился (для mc, например). Для chan_dongle нужен родной.
# pkg delete -f libiconv-1.14_9
Переходим в папку распакованного chan_dongle.
Выполняем:
# aclocal
# autoconf
# automake -a
# ./configure --with-astversion=13.13.1 (например)
Открываем Makefile и комментируем последние 3 строки:
ifneq ($(wildcard .*.d),)
   include .*.d
endif

Далее:
# make install
# cp etc/dongle.conf /usr/local/etc/asterisk
Ставим обратно libiconv
# pkg install libiconv-1.14_10

Модем можно взбодрить командой AT^SYSCFG=2,2,3FFFFFFF,1,2.

По мотивам.
Использование.

Update:
Собираем компилятором gcc46
# make install gcc46-4.6.4_8,1
Далее в Makefile правим:
CC = gcc46
LD = gcc46

После подключения модема убеждаемся в наличие устройств cuaUx.x.
Включаем asterisk в группу dialer:
# pw groupmod dialer -m asterisk

Update2:
Для CentOS и Asterisk 15 берем отсюда https://github.com/wdoekes/asterisk-chan-dongle
# ./bootstrap
# DESTDIR="/usr/lib64/asterisk/modules" ./configure --with-astversion=15

вторник, 4 апреля 2017 г.

Генерация сертификата "Let`s Encrypt".

Для JIRA используем acme.sh.
Лежит в /root/.acme.sh.
CSR генерируем и заливаем по этой статье.
Создаем папку с именем домена в ~root/.acme.sh.
Сначала пересоздаем контейнер(старый предварительно удаляем).
#keytool -genkey -keysize 2048 -keyalg RSA -alias tomcat -keystore /home/jira/keystore
Генерируем CSR
#keytool -certreq -alias tomcat -keyalg RSA -file certreq.csr -keystore /home/jira/keystore
Кладем certreq.csr в созданную папку.
Подписываем сертификат из CSR.
#acme.sh  --signcsr  --csr /root/.acme.sh/домен/certreq.csr -w /root/.acme.sh/домен
Импортируем в контейнер сертификат CA
#keytool -import -tructcacert -alias rootca -file /root/.acme.sh/домен/ca.cer -keystore /home/jira/keystore
Импортируем личный сертификат (полную цепочку!)
#keytool -importcert -alias tomcat -file /root/.acme.sh/домен/fullchain.cer -keystore /home/jira/keystore
Алиас должен быть такой же, как при создании контейнера!
Проверяем сертификаты командой
#keytool -list -keystore /home/jira/keystore

Для report используем acme.sh в DNS режиме с другого сервера (radius).
CSR генерируем там же, RHEL4 не умеет в SHA-2.
#openssl req -nodes -newkey rsa:2048 -keyout rep.key -out rep.csr
#./acme.sh --dns --signcsr --csr rep.csr --log
#./acme.sh --renew -d rep.directcall.ru
Перенести CA и личный сертификаты, а так же ключ в /etc/httpd/conf/cert на report.

Update: Для clients используем apache mode:
# ./acme.sh --issue --apache -d mydomen.ru

Update2:
Для тикетинга тоже используем DNS-режим.
#rm /home/jira/keystore
#keytool -genkey -keysize 2048 -keyalg RSA -alias tomcat -keystore /home/jira/keystore
#keytool -certreq -alias tomcat -keyalg RSA -file certreq.csr -keystore /home/jira/keystore
#scp certreq.csr на радиус
Удаляем слово NEW из хидера и футера certreq.csr!
#./acme.sh --dns --signcsr --csr certreq.csr --log
#scp ca.cer fullchain.cer на JIRA
#keytool -import -alias rootca -file ca.cer -keystore /home/jira/keystore
#keytool -importcert -alias tomcat -file fullchain.cer -keystore /home/jira/keystore

Update3:
Ручной режим с аутентификацией через выкладывание файла на хостинг доступен в CertBot.
Тикетинг можно прямо с сервера, acme.sh в standalone режиме.

вторник, 28 февраля 2017 г.

Не освобождается место после удаления файла.

Ищем того, кто держит файл.
# lsof | grep deleted | grep catalina.out

Получаем id процесса.
java 2963 jira 1w REG 253,0 709437 1838640 /opt/atlassian/jira/logs/catalina.out (deleted)

Ищем ссылку на файл.
# ls -l /proc/2963/fd | grep catalina.out
l-wx------. 1 jira jira 64 Feb 28 16:34 1 -> /opt/atlassian/jira/logs/catalina.out (deleted)

Обнуляем файл.
# cat /dev/null > /proc/2963/fd/1