Установка ejabberd с пользователями и историей в MySQL

Немного пред истории.
Перед тем как наткнуться на замечательный и гибкий сервер ejabberd, я пытался и использовать http://ru.wikipedia.org/wiki/Openfire . Этот сервер предназначен, на мой взгляд, предназначен специально для админов-дебилов. Потому как ничего, кроме красивой админки и пары не работающих плагинов, в нём нет. Плюс ко всему эта вечно жрущая оперативку java и несовместимость или частичная совместимость со всеми клиентами кроме Spark.

Ну-с приступим!
OS Debian
установим пакеты

1
apt-get install erlang-tools erlang-dev ejabberd

по умолчанию в нём нет модуля который взаимодействует с mysql, поэтому нам надо его установить
Скачиваем и ставим

1
2
3
4
root@debian:~/source# svn checkout http://svn.process-one.net/ejabberd-modules/mysql/trunk/ mysql
root@debian:~/source# cd mysql/
root@debian:~/source/mysql# ./build.sh
root@debian:~/source/mysql# cp ./ebin/*.beam  /usr/lib/ejabberd/ebin/

теперь скачиваем патчим собираем и устанавливаем плагин mod_archive

1
2
3
4
5
6
root@debian:~/source# svn checkout http://svn.process-one.net/ejabberd-modules
root@debian:~/source# wget http://zakachkin.ru/patch_mod_archive.diff
root@debian:~/source# cd ejabberd-modules/mod_archive/trunk/src/
root@debian:~/source/ejabberd-modules/mod_archive/trunk/src# patch -p0 < ../../../../patch_mod_archive.diff
root@debian:~/source/ejabberd-modules/mod_archive/trunk/src# cd .. && ./build.sh
root@debian:~/source/ejabberd-modules/mod_archive/trunk# cp ./ebin/*.beam  /usr/lib/ejabberd/ebin/

если не пропатчить то вы не сможете просматривать переписку пользователя в веб.
и так мы всё установили теперь приступим к конфигурации.
http://zakachkin.ru/jabber.sql Здесь лежит дамп базы который уже включает в себя таблички для модуля archive.
теперь открываем файл /etc/ejabberd/ejabberd.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
{acl, admin, {user, "adminname", "yyyy.ru"}}.
{hosts, ["yyyy.ru"]}.
{loglevel, 4}.

{listen,
 [
  {5222, ejabberd_c2s, [
                        {access, c2s},
                        {shaper, c2s_shaper},
                        {max_stanza_size, 65536},
                        starttls, {certfile, "/etc/ejabberd/ejabberd.pem"}
                       ]},


  {5269, ejabberd_s2s_in, [
                           {shaper, s2s_shaper},
                           {max_stanza_size, 131072}
                          ]},

{5280, ejabberd_http, [
                         {request_handlers,
                         [
                         {["archive"], mod_archive_webview}
                         ]},
                         http_bind,
                         http_poll,
                         web_admin
                        ]}

 ]}.

{max_fsm_queue, 1000}.

{s2s_use_starttls, true}.

{s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.

{auth_method, odbc}.
{odbc_server, {mysql, "localhost", 3306, "jabber", "jabber", "passsql"}}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{acl, local, {user_regexp, ""}}.
{access, max_user_sessions, [{10, all}]}.
{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
               {allow, all}]}.
{access, c2s_shaper, [{none, admin},
                      {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, register, [{deny, all}]}.
{access, pubsub_createnode, [{allow, all}]}.
{language, "ru"}.
{modules,
 [

  {mod_archive_odbc, [{database_type, "mysql"},
                      {default_auto_save, true},
                      {enforce_default_auto_save, true},
                      {default_expire, infinity},
                      {enforce_min_expire, 0},
                      {enforce_max_expire, infinity},
                      {replication_expire, 31536000},
                      {session_duration, 1800},
                      {wipeout_interval, 86400}]},
  %%{mod_archive_webview, []},
  {mod_adhoc,    []},
  {mod_announce, [{access, announce}]}, % requires mod_adhoc
  {mod_caps,     []},
  {mod_configure,[]}, % requires mod_adhoc
  {mod_admin_extra, []},
  {mod_disco,    []},
  {mod_irc,      []},
  {mod_last_odbc,     []},
  {mod_muc,      [
                  {access, muc},
                  {access_create, muc},
                  {access_persistent, muc},
                  {access_admin, muc_admin},
                  {max_users, 500}
                 ]},
  {mod_offline_odbc,  [{access_max_user_messages, max_user_offline_messages}]},
  {mod_privacy,  []},
  {mod_private,  []},
  {mod_proxy65,  [
                  {access, local},
                  {shaper, c2s_shaper}
                 ]},
  {mod_pubsub,   [ % requires mod_caps
                  {access_createnode, pubsub_createnode},
                  {pep_sendlast_offline, false},
                  {last_item_cache, false},
                  {plugins, ["flat", "hometree", "pep"]}  % pep requires mod_caps
                 ]},
  {mod_register, [
                  {welcome_message, {"Welcome!",
                                     "Welcome to a Jabber service powered by Debian. "
                                     "For information about Jabber visit "
                                     "http://www.jabber.org"}},


                  {access, register}
                 ]},
  {mod_roster_odbc,   []},
  {mod_stats,    []},
  {mod_time,     []},
  {mod_vcard_odbc,    [{search, true},
  {matches, infinity},
  {allow_return_all, true}]},
  {mod_version,  []}
 ]}.

Это все что осталось не за комментированным.
Если вдруг что поправите сами в зависимости от своих потребностей.
Регистрируем админа в sql.

1
ejabberdctl register adminname yyyy.ru pass

Ну вот и все.
http://hostname:5280/admin админка
http://hostname:5280/archive архив
Удачи вам!

4 коммент. Далее...

Сборка vlc для захвата изображения c blackmagic intensity pro

У нас есть машинка

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 42
model name      : Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
stepping        : 7
cpu MHz         : 3292.599
cache size      : 6144 KB
physical id     : 0
siblings        : 4
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt aes xsave avx lahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid
bogomips        : 6585.19
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
cat /proc/meminfo
MemTotal:        3972728 kB
MemFree:         3476552 kB
Buffers:           55384 kB
Cached:           159520 kB
SwapCached:            0 kB
Active:           221832 kB
Inactive:         138400 kB
Active(anon):     145340 kB
Inactive(anon):      128 kB
Active(file):      76492 kB
Inactive(file):   138272 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       7756792 kB
SwapFree:        7756792 kB
Dirty:                12 kB
Writeback:             0 kB
AnonPages:        145176 kB
Mapped:            16812 kB
Shmem:               140 kB
Slab:              29016 kB
SReclaimable:      22156 kB
SUnreclaim:         6860 kB
KernelStack:        2632 kB
PageTables:         2408 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9743156 kB
Committed_AS:     435904 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      151336 kB
VmallocChunk:   34359584376 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        8192 kB
DirectMap2M:     4102144 kB

с дебианом на борту

подключим репозитарий http://www.deb-multimedia.org/ и установим следующие пакеты

1
apt-get install zlib1g-dev libfaac0 libfaac-dev libmp3lame0 libmp3lame-dev libxvidcore4 libxvidcore4-dev libpopt-dev libbz2-dev libncurses5-dev libpcap0.8-dev cmake libreadline-dev subversion vim g++ yasm libssl-dev libjpeg-dev libtheora-dev build-essential git-core autoconf libtool libhal-dev libmad0-dev libpostproc-dev libgcrypt11-dev gettext liba52-0.7.4-dev libdvbpsi-dev lua5.1 liblua5.1-0-dev libfaad-dev libasound2-dev

подключим ещё один репозитарий http://backports-master.debian.org/Instructions/
и установим пакет

1
apt-get -t squeeze-backports install yasm

Для удобства создадим директорию и перейдём в неё

1
2
mkdir /usr/src/build
cd /usr/src/build

скачиваем туда пакет DeckLink_SDK он нам нужен для сращивания с vlc
и Blackmagic_Desktop_Video_Linux в этом пакете содержится модуль ядра.

1
2
wget http://www.blackmagicdesign.com/media/3914076/Blackmagic_DeckLink_SDK_9.5.zip
wget http://www.blackmagicdesign.com/media/4631288/Blackmagic_Desktop_Video_Linux_9.5.3.tar.gz

распаковываем и переносим директорию с заголовками в /usr/include/blacmagic

1
2
 unzip Blackmagic_DeckLink_SDK_9.5.zip
cp Blackmagic\ DeckLink\ SDK\ 9.5/Linux/include/ /usr/include/blackmagic -r

установим модуль ядра

1
2
tar xvfz Blackmagic_Desktop_Video_Linux_9.5.3.tar.gz
dpkg -i desktopvideo-9.5.3-amd64.deb

далее пойдёт ругань что не установлены пакеты, просто доставляем их.
далее подгружаем модуль и смотрим dmesg

1
2
3
modprobe blackmagic
dmesg
[350955.900826] blackmagic: Successfully loaded device "blackmagic0" [pci@0000:01:00.0]

Это сообщение говорит что вы пуська и всё сделали верно!
далее скачиваем необходимые сырцы для сборки vlc

1
2
3
git clone git://git.videolan.org/x264.git
git clone git://source.ffmpeg.org/ffmpeg.git
git clone git://git.videolan.org/vlc.git

приступаем к сборке и установке всего хозяйства

1
cd x264/ && ./configure --enable-shared && make && make install && cd ../ffmpeg/ && ./configure --enable-s --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-pthreads --enable-encoder=mpeg4 --enable-encoder=aac --enable-encoder=ac3 --enable-pic && make && make install && cd ../vlc/ && ./bootstrap && ./configure  --enable-faad --enable-merge-ffmpeg --disable-xcb --disable-qt --disable-skins2 --enable-dvbpsi --with-decklink-sdk=/usr/include/blackmagic/ --with-pic && make && make install

поскольку я не люблю указывать префиксы при конфигурировании все либы встали в /usr/local/lib но система об этом не знает надо ей об этом сообщить

1
2
echo '/usr/local' >> /etc/ld.so.conf
ldconfig

всё можем захватывать изображение с карты blackmagic и кодировать

1
/usr/local/bin/vlc -I dummy decklink:// --decklink-video-connection=hdmi --decklink-card-index=0 --decklink-mode=Hi50 --decklink-aspect-ratio=16:9 --sout '#transcode{venc=x264{me=hex,aq-mode=0,cabac=no,mbtree=no,mixed-refs=no,subme=1,level=,keyint=300,crf=25,ref=1,b-adapt=0,lookahead=0,bpyramid=none,bframes=3,weightp=0,merange=24,partitions=none,qpmin=26,qpmax=40,trellis=0,vbv-bufsize=2500,vbv-maxrate=5000,threads=0},vcodec=h264,vb=2500,fps=autodetected,width=720,acodec=mpga,ab=64,sfilter=marq:logo,audio-sync}:std{access=udp{ttl=10},mux=ts,dst=224.4.5.1:9961}' -vvv

дополнительные опции захвата мы можем получить при помощи справки

1
2
3
4
5
6
7
8
vlc -H|grep decklink
      --decklink-card-index <целое [-2147483648 .. 2147483647]>
      --decklink-mode <строка>
      --decklink-audio-connection {embedded,aesebu,analog}
      --decklink-audio-rate <целое [-2147483648 .. 2147483647]>
      --decklink-audio-channels <целое [-2147483648 .. 2147483647]>
      --decklink-video-connection {sdi,hdmi,opticalsdi,component,composite,svideo}
      --decklink-aspect-ratio <строка>

я думаю эти параметры не нуждаються в разьяснениях.
на этом всё!
Вещайте и будте любимы!


Abills описание параметров скрипта billd

проверка существующей связи
checkppp — Проверка ppp линка на FreeBSD NASe и отключение в случае отсутствия в мониторинге
checkmpd — Проверка mpd линка на FreeBSD NASe и отключение в случае отсутствия в мониторинге
check_cisco_cid — проверка Cisco сида
checkpppd — Проверка ppp линка на Linux NASe и отключение в случае отсутствия в мониторинге
check_pptpd — Проверка активности PoToP Linux
checkmikro — Проверка линка на Mikrotik NASe и отключение в случае отсутствия в мониторинге
Проверка скорости
checkspeed — проверка и изменение скорости на FreeBSD и Linux NAS. Аргументы NAS_IDS=xx
SHOW_SPEED=1 — Показать текущую скорость
checkspeed_mikro — проверка и изменение скорости на Mikrotik. Аргументы NAS_IDS=xx
SHOW_CUR_SPEED — Показать текущую скорость пользователей

Проверка Alive
checklines — Проверить живо ли соединение
NAS_IDS=… — Выполнить действия для NAS
Пример использования

1
 /usr/abills/libexec/billd checkpppd NAS_IDS="номер NAS из столбца ID в меню /Система/Сервер доступа"

P.S. Я не гарантирую работу данных параметров. Я всего лишь сделал описание-)


установка настройка phpvirtualbox

Предположим у вас уже установлена Virtualbox, а так же Extension Pack к нему
правим (или создаём) файл /etc/default/virtualbox

1
2
VBOXWEB_USER='Имя пользователя от которого запущены машины'
VBOXWEB_HOST=127.0.0.1

далее запускаем сервис у меня в ArchLinux он такой

1
/etc/rc.d/rc.vboxweb-service start

если не вылезло

1
:: Starting VirtualBox web service    [DONE]

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

Включаем необходимые функции php
/etc/php/php.ini

1
2
extension=json.so
extension=soap.so

если данных приблуд нету — установите воспользовавшись менеджером пакетов своей OS.

скачаем интерфейс phpvirtualbox
далее выполняем следующие действия

1
2
3
4
unzip phpvirtualbox-4.0-6.zip
cp phpvirtualbox-4.0-6 /srv/http/www/phpvirtualbox
cd /srv/http/www/phpvirtualbox
cp ./config.php-example ./config.php

откроем config.php и раскоментируем 1 опцию
и включим русский

1
2
var $language = 'ru_ru';
var $noAuth = true;

поскольку пролиться будем средствами nginx
запоролим директорию

1
2
3
4
5
6
location /phpvirtualbox {
            root   /srv/http/www;
            auth_basic haha;
            auth_basic_user_file /srv/http/www/phpvirtualbox/.htpass;
            index  index.html;
        }

создадим файл с паролями

1
htpasswd -cbd /srv/http/www/phpvirtualbox/.htpass $USER $PASSWD

отключим авторизацию virtualbox

1
VBoxManage setproperty websrvauthlibrary null

собсно всё!


Настройка accel-pptp в качестве клиента

И так начнём. коротко и по делу.
берём сырцы

1
[xxx@zakachkin ~]$ wget http://downloads.sourceforge.net/project/accel-pptp/accel-pptp/accel-pptp-0.8.5.tar.bz2

распакуем и перейдем в директорию.

1
[xxx@zakachkin ~]$ tar xvjf accel-pptp-0.8.5.tar.bz2
1
[xxx@zakachkin ~]$ cd accel-pptp-0.8.5

сконфигурим, соберём, установим.

1
[xxx@zakachkin ~]$ make
1
[xxx@zakachkin ~]$ sudo make client_install

скопируем дефолтный конфиг куда надо

1
[xxx@zakachkin ~]$ sudo cp example/etc/ppp/peers/pptp_test /etc/ppp/peers/providername

и правим конфиг под наши нужды

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
plugin "pptp.so"
pptp_server $vpn.server.prova
#pptp_phone 12345
name test
remotename pptp
file /etc/ppp/options.pptp
ipparam test
#debug
#dump
mtu 1436
mru 1436
lcp-echo-interval 20
lcp-echo-failure  3
defaultroute
user $Логин
password $пароль

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

1
[xxx@zakachkin ~]$ sudo modprobe pptp

поключимся!

1
[xxx@zakachkin ~]$ sudo pon providername

упсссссссс не работает…
закоментируем параметр lock в файле /etc/ppp/options и в /etc/ppp/options.pptp
пробуем

1
[xxx@zakachkin ~]$ sudo pon providername

да здравствует тырнет!


Сборка ядер с kernel.org в CentOS 5

Ставим зависимости:

1
2
3
4
5
6
7
yum install -y ncurses-devel gcc make rpm-build redhat-rpm-config


cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.2.tar.bz2
tar -xf linux-2.6.33.2.tar.bz2
cd linux-2.6.33.2

Копируем конфиг от активного ядра и если нужно вносим коррективы:

1
cp /boot/config-`uname -r` .config

Запускаем конфигуратор:

1
make menuconfig

Выбираем там следующую опцию (иначе не загрузится он на CentOS):

1
General setup ---> enable deprecated sysfs features which may confuse old userspace

Создаем папки для сохранения результирующего rpm файла:

1
2
mkdir -p /usr/src/redhat/SRPMS
mkdir -p /usr/src/redhat/RPMS/{i386,x86_64}

Стандартный make rpm не собирает initrd автоматически и не добавляет ядро в grub.conf, поэтому надо наложить патчик

1
vi scripts/package/mkspec

И в самый низ добавляем следующее:

1
2
3
4
5
6
7
echo "%post"
echo "/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install "$KERNELRELEASE" || exit \$?"
echo ""

echo "%preun"
echo "/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove "$KERNELRELEASE" || exit \$?"
echo ""

Собираем ядро (заодно контролируем время сборки):

1
time make rpm

И ставим:

1
rpm -ihv /usr/src/redhat/RPMS/i386/kernel-2.6.33.2.i386.rpm

слизано с http://phpsuxx.blogspot.com/2010/02/kernelorg-centos-5.html


Лень — двигатель прогресса!

Случилось так, что заебался я при добавлении сайтов каждый раз лезть в конфиги веб-серверов и добавлять virtualserver, а так же создавать директории.
Что делать? не ставить же вебмин?? да и в один клик там все рано ничё не выйдет..
и решил я написать вот такой скрипт

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

derictory=/srv/http
config_apache=/etc/httpd/conf/extra/httpd-nginx.conf
nginx=/etc/nginx/conf/sites-enabled
site=$1
port=$2
probe_apache=`cat $config_apache|grep Listen=$port|wc -l`
probe_file=`ls -l $nginx|grep $site|wc -l`

mkdir $derictory/$site
chown http.http $derictory/$site

if [ $probe_apache = "1" ]; then
    echo "Порт существует выберете другой"
fi

if [ $probe_apache = "0" ]; then
    echo "Listen=$port" >> $config_apache
    echo "<VirtualHost 127.0.0.1:$port>" >> $config_apache
    echo DocumentRoot \"$derictory/$site\" >> $config_apache
    echo "</VirtualHost>"  >> $config_apache
fi

if [ $probe_file = "1" ]; then
    echo Сайт уже есть
fi

if [ $probe_file = "0" ]; then
echo -e "server {
    listen       80;
    server_name  $site;
    root $derictory/$site;

    location ~* \.(jpg|gif|png|css|js|rar|zip|iso|ico)$ {
    root $derictory/$site;
} \n

    location / {
        proxy_pass http://127.0.0.1:$port/;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$remote_addr;
        root   $derictory/$site;
        index  index.php;
    }

    error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        root   html;
    }
}\n" > $nginx/$site

fi

Пользоваться так

1
[root@zakachkin kuku]# /path/to/script/sitecreate sitename.ru 2157

sitename.ru = имя сайта
2157 = порт apacha на котором он взаимодействует с nginx


Товарищи не пЫсайте в компот!

Если вы попали на эту страницу не желая того — значит это судьба-)) (шутка)
Просто мы перезжаем на новую платформу. скоро все нужные вам сайты сново заработают.


Добавление repository в Vyatta

1
2
3
4
5
6
7
8
9
10
~>configure
~>set system package repository community components main
~>set system package repository community distribution stable
~>set system package repository community url http://packages.vyatta.com/vyatta
~>set system package repository lenny components "main contrib"
~>set system package repository lenny distribution lenny
~>set system package repository lenny url http://mirrors.kernel.org/debian
~>commit
~>save
~>exit

Пробуем поставить

1
2
~>sudo apt-get update
~>sudo apt-get install xinetd

И да будет счастье!


Gentoo система для онанистов…

Сегодня, а вернее вчера ночью, сосед отдал свой старый комп целку с частотой 1.7 ггц. (хлам редкостный). Я как дурак загнал туда диск с гентой… И понял что этот дистрибутив только для тех у кого куча свободного времени… нет возможно на 8ми ядерных системах всё будет в 10ки раз быстрее, но у меня таких систем нету.
в продолжении темы я буду приводить примерное время сборки наиболее важных служб на системе
Проц: целка 1.7 ггц
опера: 512 MB
_______________________________________________________________________________________


Copyright © 2010 Дедкина избушка. Копирование запрещено
Thanx: Alltimber