ОМСКАЯ ГРУППА ПОЛЬЗОВАТЕЛЕЙ LINUX http://omsklug.com Свобода - это ответственность. Вот почему все её так боятся. Бернард Шоу Fri, 15 Aug 2014 09:48:17 +0000 en hourly 1 http://wordpress.org/?v=3.2.1 Установка КонсультантПлюс в Ubuntu Linux 12.04 http://omsklug.com/2014/08/consultantplus-at-ubuntu-linux/ http://omsklug.com/2014/08/consultantplus-at-ubuntu-linux/#comments Fri, 15 Aug 2014 09:48:17 +0000 linuxmasterz http://omsklug.com/?p=1734 Общие слова

Есть такая база, правовая база данных КонсультантПлюс, каждый IT-специалист знает это произведение российской компьютерной мысли и наверное устанавливал не раз. Конечно, можно пользоваться только online-версией этой замечательной правовой базы данных, но зачем? Ведь есть возможность получить эту компьютерную программу на руки, подписав договор с региональным представителем (региональным информационным центром) и выплачивая небольшие деньги. Именно от них, от региональных представителей, можно получить волшебный файл-демон лицензирования conslin, который позволяет провести-таки регистрацию правовой базы данных КонсультантПлюс (ведь мы же пользуемся только легальным программным обеспечением, не так ли?) и файл с инструкцией по установке: linux.rtf. Нет уверенности в том, что файл с инструкцией по установке можно публиковать публично, так как в нём не указаны условия его распространения, но там довольно банальные вещи, кроме некоторых секретных элементов, которые включены в пределах разумного цитирования в настоящую инструкцию.

Начальная установка

Просто ставим с mini.iso систему Ubuntu Linux 12.04, куда доустанавливаем только самые нужные нам компоненты. Где взять mini.iso? Конечно же здесь:

https://help.ubuntu.com/community/Installation/MinimalCD

Установка проста и не замысловата. Минимальная система, без каких-либо посторонних сервисов. Единственное, что важно, по окончанию установки необходимо выбрать из огромного репозитория свободного программного обеспечения именно те пакеты, которые вам действительно понадобятся:

sudo apt-get install openssh-server samba4 wine xvfb

openssh-server – для удалённого доступа к операционной системе.

samba4 – для удалённой работы с правовой базой данных КонсультантПлюс.

wine – тот самый неэмулятор Wine Is Not Emulator, который позволит нам запускать на сервере неродные для Linux, исполнимые файлы системы КонсультантПлюс с целью регистрации этого программного продукта, регистрации рабочих станций, обновления правовой базы данных КонсультантПлюс.

xvfb – ещё одна программа неэмуляции, это самый настоящий X-сервер, но умеющий работать без устройств отображения и устройств ввода-вывода. Казалось бы, зачем такое нужно? А вот нужно, например, сейчас, когда нет необходимости ставить настоящий X-сервер на постоянную основу, а лишь пользоваться им спорадически. Ведь все же знают, что, за редкими исключениями, сервер с X-сервер – совсем никакой не сервер.

Такие сервисы, как правовая база данных КонсультантПлюс, удобно держать на сервере виртуальных машин на базе настоящего промышленного гипервизора Kernel-based Virtual Machine (KVM). Для создания образа жесткого диска виртуальной машины рекомендуется 10-гигабайтный “резиновый” образ qcow2 или qed (который умеет расширять свой размер, в зависимости от наполнения данными, но можно сделать и фиксированного объема), который по-настоящему занимает на сервере виртуальных машин изначально чуть более 1 гигабайта. Файлы же правовой базы данных не рекомендуется, а обязательно следует разместить на “резиновом” разделе с максимальным объемом не менее 30 гигабайт, что следует из практики использования, когда изначально объем всех файлов составлял около 9 гигабайт, а после года работы системы – около 14 гигабайт, учитывая, что подключены только федеральные базы законодательства без отраслевых вариантов и регионального законодательства. Оперативной памяти виртуальной машины для обычной работы системы КонсультантПлюс достаточно 256 мегабайт, но, выяснилось, что для обновления системы необходимо не менее 512 мегабайт, так как при недостатке памяти жуткий комплекс из wine и cons.exe вываливается в переполнение стека. Все указанные выше показатели применимы и к реальному аппаратному обеспечению (за исключением “резиновости” разделов и невозможности увеличить оперативную память оперативно).

Предварительные действия

Создаем раздел на диске для файлов системы КонсультантПлюс с помощью программы fdisk (где X – буква диска):

sudo fdisk /dev/sdX

Форматируем раздел, создавая на на нашем диске для файлов системы КонсультантПлюс файловую систему ext4 (где X – буква диска, а Y – цифра раздела):

sudo mkfs.ext4 /dev/sdXY

Узнаём UUID раздела диска для файлов системы КонсультантПлюс:

ls -la /dev/disk/by-uuid/

Создаём точку монтирования (подключения) файловой системы:

sudo mkdir /var/lib/cons

Монтируем (подключаем) в нашу систему раздел диска в подготовленную нами выше директорию через файл описания точек монтирования fstab:

sudo nano /etc/fstab

прописывая в нем запись монтирования раздела диска:

UUID=73bec7a9-a1d0-5c3f-9244-0cde01363eb4 /var/lib/cons            ext4    relatime,nodiratime,commit=120        0       2

где:

73bec7a9-a1d0-5c3f-9244-0cde01363eb4 – пример UUID раздела диска для монтирования;

/var/lib/cons – точка монтирования (подключения) раздела диска

ext4 – тип файловой системы, который мы указали при форматировании подключаемого раздела

relatime,nodiratime,commit=120 – параметры, ускоряющие работу файловой системы, путем уменьшения частоты записи на диск служебной информации.

0 – параметр, чтобы раздел не обрабатывался программой dump, которая по умолчанию и не установлена

2 – параметр, который заставлять fsck проверять раздел последним (можно поставить 0, чтобы вообще не проверять, но зачем?)

Применяем внесённые изменения:

sudo mount -a

Если диск виртуальный, то применяем ещё и дополнительные настройки для ускорения диска (это можно сделать даже в действующей системе, на “ходу”):

sudo nano /etc/rc.local

где добавляем через sudo -s то, что наш диск не крутится и может использовать любое ядро процессора для поток ввода-вывода, ведь у нас одно ядро в виртуальной машине и выбирать собственно не из чего (X – буква диска):

echo 0 > /sys/block/vdX/queue/rotational &
 
echo 0 > /sys/block/vdX/queue/rq_affinity &

Указанные выше параметры просто применить и в сессии “суперпользователя” через:

sudo -s

но действовать это будет только до перезагрузки.

Создаём осмысленное имя пользователя, от которого у нас будет работать главный пользователь КонсультантПлюс и собственно будут запускаться фоновые процессы обслуживания:

sudo adduser cons

Создаём имя пользователя, от которого у нас будет работать все остальные пользователи базы данных и у которых будут права только на чтение общего ресурса samba4:

sudo adduser consuser

Подготовка директории с базой данных

Каким-либо образом получаем доступ к дистрибутиву и копируем содержимое диска КонсультантПлюс в заранее подготовленную директорию /var/lib/cons (которая является, как мы помним, корнем специального раздела диска или отдельного диска для файлов правовой системы КонсультантПлюс):

sudo cp -R * /var/lib/cons/*

Присваиваем все файлы в директории /var/lib/cons пользователю и группе cons:

sudo chown -R /var/lib/cons/*

Узнаем одну из тайн сообщества КонсультантПлюс, которая была почерпнута в секретном linux.rtf. Директория ADM должна иметь атрибуты rwxrwsr-x, т.е. для пользователя чтение-запись-доступ и для группы чтение-запись-доступ + SGID (бит показывает, что создаваемые в директории файлы будут принадлежать той же группе, что и каталог, а не группе пользователя, который создаёт в директории файл):

sudo chmod 2770 /var/lib/cons/ADM

Что же лежит и будет лежать в директории /var/lib/cons/ADM? Да там же:

CONS.ADM, в котором хранится информация о лицензионности вашей системы КонсультантПлюс;

MBPxxxxxx.ADM, в котором хранится информация о авторизованных клиентских компьютерах (xxxxxx – номер поставки).

Оба файла имеют права rwxrwxr-x (775). Если права будут другими, то на клиентских машинах будет ошибка о занятости системы КонсультантПлюс некими иными пользователями. Бывает, когда некорректно проходят операции обновления, переиндексации, добавления новых клиентских компьютеров, права сбиваются на rwx—— (700)

Для возможности запуска cons.exe на клиентских компьютерах в неLinux-системах почему-то пришлось выставлять права rwxr-xr-x (755), а было rwxr-x— (750):

sudo chmod 755 /var/lob/cons/cons.exe

Подготовка общего ресурса SAMBA4

Редактируем файл настройки SAMBA /etc/samba/smb.conf:

В глобальной секции прописываем сетевую группу, режим авторизации, немного магии для ускорения чтения/записи на ресурсы SAMBA:

workgroup = THEFIRM
security = user
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=16384 SO_SNDBUF=16384

Закоментируйте ненужные нам секции:

 

[printers]
 
[print$]

 

Прописываем секцию общего ресурса SAMBA:

[CONS]
path = /var/lib/cons
browseable = yes
read only = no
guest ok = no
create mask = 0664
directory mask = 0775
veto oplock files = /*.BIS/*.ADM/
#kernel oplocks = no
level2 oplocks = no
use sendfile = yes
log level = 0

Создаем пользователей ресурса SAMBA:

 

sudo smbpasswd -a cons
 
sudo smbpasswd -a consuser

 

Включаем пользователей ресурса SAMBA:

 

sudo smbpasswd -e cons
 
sudo smbpasswd -e consuser

 

Регистрация комплекта и клиентских компьютеров

Копируем секретный демон лицензирования conslin в сервер, обычно в директорию /usr/local/bin/ и прописываем запуск его при старте сервера в /etc/rc.local до команды exit 0:

/usr/local/bin/conslin &

Можно конечно сделать демон /etc/init.d/conslin, но… стоит ли напрягаться? Помним, что & обязателен для того, чтобы conslin исполнялся при старте в фоне и загрузка продолжалась далее, а то мало ли что, это же злобный проприетарный модуль, что там внутри – неизвестно, зависнуть он может в любой момент и делать может что угодно, хотя есть информация, может работать по полгода и проблем не создавать (тьфу-тьфу). При старте демон conslin открывает TCP-порт 3333 на всех сетевых интерфейсах сервера.

Подключаемся с Вашего компьютера администратора удалённо с пробросом Х-сессии на сервер для регистрации комплекта:

ssh -X cons@192.168.1.50 wine /var/lib/cons/cons.exe /adm /linux /reg

Звоним или пишем региональному представителю КонсультантПлюс, говорим полученные цифры от программы, пишем в загрузившееся окно цифры от представителя, радуемся регистрации.

Подключаемся удалённо с Вашего компьютера администратора с пробросом X-сессии на сервер с базой данных для регистрации клиентских компьютеров:

ssh -X cons@192.168.1.50 wine /var/lib/cons/cons.exe /adm /linux

где:

192.168.1.50 – IP адрес сервера правовой базы данных КонсультантПлюс;

/adm – запуск в режиме администрирования;

/linux – запуск на Linux-системе.

Программная оболочка КонсультантПлюс загружается и мы идём в Меню/Сервис/Регистрация станций.

Запускаем на клиентском компьютере cons.exe, так же идём в меню Меню/Сервис/Регистрация станций.

Происходит магия лицензирования – смотрим на прогрессбар на комьютерах, жмём как на клиентской машине, так и на запущенной на Вашем компьютере оболочке КонсультантПлюс кнопки “ОК”. Регистрация должна быть произведена произведена. Клиентская машина записана на сервере как авторизованная для подключения и использования базы данных.

Что можно делать вручную?

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

Обновлять базу данных через локальную директорию для обновлений (если у вас всё очень плохо с Интернетом):

ssh -X cons@192.168.1.50 wine cons.exe /adm /linux /receive /base* /yes

Обновлять базу данных через сеть Интернет:

ssh -X cons@192.168.1.50 wine cons.exe /adm /linux /receive_inet /base* /yes

Тестировать базу данных на неисправности и ошибки:

ssh -X cons@192.168.1.50 wine cons.exe /adm /linux /basetest /base* /yes

 

Индексировать файлы базы данных (это необходимо, когда теряется возможность нажимать на ссылки в программе, пишется фальшивое вообщение о том. что якобы “в данном комплекте не зарегистрирована эта возможность”):

ssh -X cons@192.168.1.50 wine cons.exe /adm /linux /reindex0 /base* /yes

Создаём скрипт автоматического обновления

Создаём файл /usr/local/bin/cons-update.sh со следующим содержимым:

 

#!/bin/bash
LOGFILE=/var/log/cons-update.log   # Log destination path
CONSDIR=/var/lib/cons/  #ConsultantPlus path
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
 
# Checking existance of log
if [ ! -f $LOGFILE ]; then
touch $LOGFILE
chown root:cons $LOGFILE
chmod 664 $LOGFILE
fi
echo "`date +%Y%m%d%H%M%S` ConsultantPlus is updating..." >> $LOGFILE
sudo -H -u cons xvfb-run -s '-screen 0 1024x768x24' wine Z:\\var\\lib\\cons\\cons.exe /adm /linux /adm /linux /receive_inet /base* /yes | iconv -f CP866 >> $LOGFILE
chmod 664 $CONSDIR/ADM/CONS.ADM
echo "`date +%Y%m%d%H%M%S` ConsultantPlus is ready to use..." >> $LOGFILE
exit 0

 

Не забываем сделать его исполнимым:

chmod +x /usr/local/bin/cons-update.sh

чтобы скрипт стал исполнимым. И сделать через sudo crontab -e запись:

0 6 * * 1 /usr/local/bin/cons-update.sh

чтобы база обновлялась один раз в неделю, а именно в понедельник, в 6 OMST (UTC+7) или 3 MSK (UTC+4) часов. Время и период подсказали сотрудники регионального информационного центра КонсультантПлюс, говорят, что нагрузка на сервера с обновлениями минимальна в это время, а чаще делать обновление не имеет смысла.

В процессе подготовки скрипта была раскрыта тайна, что оказывается, на самом деле, vr??????.res файл – исполнимый и его можно запускать через wine. И он тоже будет работать. Но злоупотреблять этим не надо, так как он постоянно обновляется и его версии тихонечко растут.

Также узнаем тайну авторов КонсультантПлюс: программа настолько стара, что использует для вывода лога работы кодировку CP866. Поэтому и сделана обработка данных лога через iconv. Логи CONS_ERR.TXT, CONS_INET_LISTFILES.TXT, CONS_INET.TXT,  CONS_LOG.TXT ведутся в кодировке CP1251, что более логично, но просит вопроса, почему же не прогрессивный UTF-8. Если это не тайна или вы можете объяснить, почему именно так, а не иначе – пишем в комментарии.

Выводы

Вот так вот несложно и незамысловато мы получили практически автономную правовую базу КонсультантПлюс в Ubuntu Linux 12.04, которая сама обновляется и работает без участия человека. Подключаться к базе можно как с Linux-клиентов, так и с других операционных систем, просто стартуя исполнимый модуль cons.exe.

]]>
http://omsklug.com/2014/08/consultantplus-at-ubuntu-linux/feed/ 0
Вводный курс GNU/Linux LFS101x от Linux Foundation http://omsklug.com/2014/07/lfs101x/ http://omsklug.com/2014/07/lfs101x/#comments Thu, 31 Jul 2014 06:17:26 +0000 linuxmasterz http://omsklug.com/?p=1729

Щелкните здесь для просмотра встроенного видео.

Вводный курс по операционной системе GNU/Linux LFS101x от организации Linux Foundation доступен для бесплатного прохождения на онлайн-платформе обучения edX. Ранее цена курса Introduction to Linux составляла 2400 USD. Курс предназначен для программистов под эту платформу и покажет различные инструментарий и техники, обычно используемые специалистами. По желанию можно заплатить 250 USD за сертификат курса. Начало курса 2014-08-01. Расчитывайте на 40-70 часов.

Регистрируемся! Учимся! Используем свои знания!

http://bit.ly/lfs101x

]]>
http://omsklug.com/2014/07/lfs101x/feed/ 0
Омские линуксоиды на Омском городском пикнике 2014 http://omsklug.com/2014/06/linux-at-omsk-local-picnic-2/ http://omsklug.com/2014/06/linux-at-omsk-local-picnic-2/#comments Mon, 30 Jun 2014 14:36:45 +0000 linuxmasterz http://omsklug.com/?p=1713 2014-07-05 с 12.00 ч. в Омске на полянке у д. 4 по ул. Берёзовая в ходе очередного Омского городского пикника (http://picnicomsk.ru) будут участвовать и омские линуксоиды. Приходите! Освободите себя и свой компьютер!

Что будет на нашей площадке:
Безвозмездная раздача свободного ПО.
Раздача и трансляция свободной музыки (jamendo.com, musopen.org),
Раздача и трансляция свободного видео (Elephant Dream, Big Buck Bunny, Sintel, Tears of Steel).
Свободные компьютерные игры (Supertuxkart, SuperTux, XMoto, lbreakout2, teeworlds).
Консультации по свободному ПО, по использованию свободных медиаматериалов, по использованию лицензий Creative Commons для медиаматериалов, GNU GPL, GNU FDL.
Разнузданная криптовечеринка (OpenPGP): для участия желательно отправить нам на e-mail post@omsklug.com или любыми иными средствами связи отпечаток вашего ключа, после чего прийти на криптовечеринку со своим отпечатком ключа и документом, удостоверяющим личность.

Организаторы Омского городского пикника просят пожертвовать совсем немного денег тут:

http://2014.picnicomsk.ru/#donation

]]>
http://omsklug.com/2014/06/linux-at-omsk-local-picnic-2/feed/ 0
Найстройка DNS сервера на базе Ubuntu 12.04 http://omsklug.com/2014/05/dns-server-bind-ubuntu-12-04/ http://omsklug.com/2014/05/dns-server-bind-ubuntu-12-04/#comments Thu, 01 May 2014 09:59:44 +0000 Plus http://omsklug.com/?p=1690 Все началось с установки kolab. Все ставилось, но при запуске setup-kolap вылетала ошибка:
Warning: hostname mail is not a fully qualified host and domain name

Решил настраивать DNS сервер, решил сделать на этой же машине.
Итак примтупим. Для начала необходимо поставить собственно сам dns:

sudo apt-get install bind9

Перейдем к настройке. Первым делом “поковыряем” файл named.conf.options:

Перейдем к настройке. Первым делом “поковыряем” файл named.conf.options
acl “lan” {
192.168.0.1/24;
};
options {
directory “/var/cache/bind”;
allow-query { any; };
version “MCRO DNS Master Server”;
auth-nxdomain no;
listen-on-v6 { none; };
notify yes;
recursion yes;
forward first;
forwarders {
8.8.8.8;
};
listen-on port 53 {
127.0.0.1;
192.168.254.2;
};
};

Остальные параметры оставляем по умолчанию.

forwarders – Параметр указывающий на какие сервера переадресовывать запросы, в случае отсутствия записей;
listen-on – Параметр указывающий на каких интерфейсах слушать 53 порт;
forward first - Параметр задает пересылку только первого запроса;
auth-nxdomain no – Параметр для совместимости RFC1035;
allow-query { any; }; - Параметр отвечающий за то- от кого принимать запросы, мы их принимаем от всех;
recursion - Параметр разрешает или запрещает рекурсивные запросы ( yes /no);
notify — Параметр указывает уведомлять или не уведомлять slave сервера об изминениях в зоне (yes/no);
version «Super DNS server»; -Параметр указывающий уровень болтливости сервера, вместо названия сервера выдаст Super DNS server;
acl “lan” { 192.168.0.1/24; } - Параметр задает группу подсетей;(можно написать что-то свое).


zone "omsklug.com" {
type master;
file "/etc/bind/omsklug.com";
};
zone "254.168.192.in-addr.arpa." {
type master;
file "/etc/bind/127.0.0.rev";
};

Файл omsklug.com отвечает за прямой просмотр, 127.0.0.rev за обратный соответственно.

Теперь необходимо создать эти файлы. Делаем /etc/bind/omsklug.com

$TTL 86400
@ IN SOA ns1.omsklug.com. post.omsklug.com (
2014050101 ; Serial
1d ; Refresh
12h ; Retry
1w ; Expire
3h ; Minimum
);
@ IN NS ns.omsklug.com.
ns1 IN A 127.0.0.1
@ IN A 127.0.0.1
mail IN A 192.168.254.3
www IN CNAME @

Во второй строке ns1.omsklug.com – имя корневого мастер-сервера зоны omsklug.com;
post.omsklug.com – e-mail адрес администратора зоны, пишется без “@”;
2014050101 ; Serial – серийный номер файла зоны, состоит из даты создания последние символы 01, указыавют на количество редактирований зоны;
1d ; Refresh – Период обновления;
12h ; Retry – Повтор каждые 12 часов;
1w ; Expire – Время хранения информаци;
3h ; Minimum – Время хранения TTL записи;
@ IN NS ns.omsklug.com. – Запись указывающая имя сервера, ответственного за зону;
ns1 IN A 127.0.0.1 – Запись указывающая ip адрес сервера, ответственного за зону omsklug.com;
@ IN A 127.0.0.1 – Запись указывающая ip адресс сервера, обслуживающего omsklug.com;
mail IN A 192.168.254.3 – Запись указывающая ip адрес сервера в лок.сети обслуживающего поддомен mail.omsklug.com;
www IN CNAME @ – Запись указывающая на переадресацию запросов, т.е. адреса omsklug.com и www.omsklug.com обслуживает один и тот же сервер, в данном случае сам dns сервер.

Далее настроим файл зоны обратного просмотра: /etc/bind/127.0.0.rev

$TTL 86400
@ IN SOA omsklug.com. root.omsklug.com (
2014050101 ; Serial
1d ; Refresh
12h ; Retry
1w ; Expire
3h ; Minimum
);

@ IN NS omsklug.com.
1 PTR omsklug.com.
3 PTR mail.omsklug.com.

Запись - 1 PTR omsklug.com. – указывает что зону omsklug.com обслуживает адрес 127.0.0.1
Запись – 3 PTR mail.omsklug.com. – указывает что поддомен mail.omsklug.com обслуживает адрес 192.168.254.3
Далее перезапускаем службу командой
sudo service bind9 restart

Проверку можно провести командой nslookup.
Вот и все:) Всем удачи, может что-то упустил, пишите поправим, дополним;).

]]>
http://omsklug.com/2014/05/dns-server-bind-ubuntu-12-04/feed/ 0
Document Freedom Day 2014 в Омске http://omsklug.com/2014/03/document-freedom-day-2014/ http://omsklug.com/2014/03/document-freedom-day-2014/#comments Sun, 23 Mar 2014 18:37:15 +0000 linuxmasterz http://omsklug.com/?p=1668 Document Freedom Day from Free Software Foundation Europe e.V.

2014-03-29 в 10.00 OMST (с утра) Омская группа пользователей Linux (OmskLUG) проводит День свободы форматов данных в Омском IT Loft (г. Омск, ул. Учебная, д. 83).

С 2008 года ежегодно во всем мире в последнюю среду марта проводится День свободы форматов данных (http://documentfreedom.org/). В 2014 году – это 26 марта (мы же перенесли на субботу, будний день – неудачное время). Это мероприятие направлено на повышение информированности общества об открытых стандартах и форматах.

Несколько докладов о свободных форматах данных в кругу единомышленников:

“Свободные форматы данных – как спасение человечества”
“Свободное железо”
“Свободные медиаресурсы”

Планирование акций по внедрению свободных форматов данных. Приходите со своими историями успеха, когда и как вас спасли свободные форматы данных и вообще свободный медиаконтент.

В ходе мероприятия, во время кофебрейка, после мероприятия будет “криптовечеринка” (KSP, Key Signing Party): приносите свои отпечатки публичных ключей  (а лучше отправьте их координатору на post@omsklug.com) и какой-нибудь документ, который удостоверяет, что вы есть. Что такое KSP? Вот: https://db.tt/86bW7biW

Если желаете поучаствовать в качестве организаторов, то оставляйте комментарии на сайте http://www.omsklug.com , пишите на почту post@omsklug.com, забегайте в нашу jabber-конференцию: omsklug@conference.jabber.ru

Для успешного проникновения на территорию IT Loft необходима регистрация и тапочки (ну или можете храбро ходить без обуви, если посмеете):

http://bit.ly/dfd2014

Если же проникнуть вам не удастся, то есть вариант посмотреть трансляцию мероприятия тут: http://www.omsklug.com/tv

]]>
http://omsklug.com/2014/03/document-freedom-day-2014/feed/ 2
Вторая троллинуксовка в Омске http://omsklug.com/2014/02/trolleybus-linux-meeting-2/ http://omsklug.com/2014/02/trolleybus-linux-meeting-2/#comments Sun, 23 Feb 2014 18:30:43 +0000 linuxmasterz http://omsklug.com/?p=1658

Утро

В морозное утро 22 февраля 2014 года омские линуксоиды выдвинулись на начальную точку движения в небольшом путешествии по Омску на WiFiизированном троллейбусе маршрута №4, а именно на остановку общественного транспорта «Железнодорожный вокзал». Это уже не первый случай такого «хождения в народ». Что-то подобное мы уже делали в 2011 году.

Собралось чуть более трёх человек. Если бы собрались в 11.00, то сразу бы выехали, но…. Получилось так, что ждали следующего троллейбуса до 12.10 часов, мёрзли на остановке, грелись в тамбуре железнодорожного вокзала, почему-то не привлекая внимания охраны.

В троллейбусе

Только присели, раскрыли ноутбуки, как некий пожилой господин стал активно интересоваться, чем же мы тут занимаемся, за что он был одарен брошюрой про GNU/Linux. Потом были девушки, студенты, ну и кондуктору выдали брошюрку, чтобы знали в троллейбусном парке, что тут делали омские линуксоиды. Было холодно, чертовски холодно, особенно ближе к полу, так как троллейбус был не совсем новый. Но в целом было весело, что смягчало температурный дискомфорт. Удивительно, что не каждый кондуктор знает, есть ли WiFi в троллейбусе или нет. Вообще, в том троллейбусе, на котором следовали в Нефтянники, не было каких-либо опозновательных знаков про WiFi, может это и к лучшему.

Тесты

Интернеты в WiFi-роутере были обычные. 200-300 ms задержки и 500-1200 килобит в секунду по скоростям (меряли кошерной iperf). Адрес роутера 192.168.1.1. Блокировки сайтов обычные, от основного провайдера. Порты, кроме 80 и 443, прекрасно пропускает, что серьёзный плюс, так как SSH и VPN жизненно важен для более-менее продвинутого линуксоида.

Сюрприз

Во время использования интернетов в троллейбусе, подошёл некий неизвестный школьник и давай показывать, что 3G-роутер совершенно беззащитен: имя учётной записи admin и пароль админки внезапно совпадали. Представители сообщества в интернетах предлагали залить в 3G-роутер улучшенную и безопасную прошивку OpenWRT, но не стали так делать. Хотя… Ведь есть же cjdns, да? Или i2p? Не, ну правда. Почему бы и нет? Скриншотики сохранили. Интернет раздавал Huawei B681 HSPA+ 4G Wireless gateway router. Молодцы, хороший выбор, не совсем плохая железка.

Фотосессия

Вторая троллинуксовка в Омске
Вторая троллинуксовка в Омске
]]>
http://omsklug.com/2014/02/trolleybus-linux-meeting-2/feed/ 0
Настройка ejabberd сервер + mysql + pyticq транспорт http://omsklug.com/2014/02/ejabberd-server-mysql-pyticq-transport/ http://omsklug.com/2014/02/ejabberd-server-mysql-pyticq-transport/#comments Sun, 09 Feb 2014 13:34:08 +0000 Plus http://omsklug.com/?p=1521 Обычная история про то, как я устанавливал обычный корпоративный сервер для общения между сотрудниками, так и через внешние аккаунты некогда популярных сетей общения.

1. Базовые настройки

Настройки /etc/ejabberd/ejabberd.cfg почти все стандартны, за исключением указанных ниже:

override_local.

Укажем логин администратора (у jabber-сервера свой администратор, не путать с системным) и имя сервера:
%% Admin user {acl, admin, {user, "info", "omsklug.com"}}.
%% Hostname {hosts, ["omsklug.com"]}.

Раскомментируем настройки транспорта icq:
%% Jabber ICQ Transport
{5555, ejabberd_service,
[{ip, {127, 0, 0, 1}},
{access, all},
{shaper_rule, fast},
{hosts, ["icq.omsklug.com", "sms.omsklug.com"],
[{password, "secret"}]}
]},

Если используется внутренняя база тогда раскоментируем:
%%{auth_method, internal}.

Если же используется база mysql, тогда открываем вот это:
{auth_method, odbc}.

Далее настроим доступ к Базе данных, предварительно её создав и настроить пользователя к ней:
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "ejabberd"}}.

Включаем настройку локализации:
{language, "ru"}.

Разрешаем регистрацию пользователей:
{access, register, [{allow, all}]}.

далее нужно подключить модули к mysql:
Меняем значения:
mod_last на mod_last_odbc
mod_offline на mod_offline_odbc
mod_privacy на mod_privacy_odbc
mod_private на mod_private_odbc
mod_roster на mod_roster_odbc
mod_vcard на mod_vcard_odbc

Сохраняем и закрываем /etc/ejabberd/ejabberd.cfg

2. Настройка базы MySQL для ejabberd

Теперь настройка mysql базы: нужно грамотно загрузить дамп пустой базы, поэтому берем его тут:
https://github.com/processone/ejabberd/blob/2.1.x/src/odbc/mysql.sql
После всех операций перезапускаем правильно необходимые сервисы ejabberd и mysqld:

sudo /etc/rc.d/ejabberd stop sudo /etc/rc.d/mysqld restart sudo /etc/rc.d/ejabberd start

3. Создание общего списка контактов сервера

В общем на этом можно было бы и остановиться, если бы не одно но. По умолчанию список контактов (ростер на терминологии jabber) нового пользователя пуст. Это вполне нормально для личного использования или для работы с публичными серверами – пользователь сам выбирает с кем общаться, но абсолютно неприемлемо для корпоративной среды, где список контактов заранее определен. Было бы неплохо, чтобы новый пользователь автоматически попадал в этот список и автоматически получал его в свой клиент. К счастью сделать это совсем несложно. В /etc/ejabberd/ejabberd.cfg найдем и раскомментируем следующую строку:

{mod_shared_roster, []},

Сохраняем файл, перезапускаем сервис. Теперь в веб-админке в разделе Virtual Hosts – имя вашего сервера появился пункт Группа общих контактов. Создаем такую группу и настраиваем. Для того, чтобы в группу автоматически попадали все пользователи в поле Члены укажите @all@, а в поле Видимые группы укажите название вашей группы, которое вы ввели при ее создании.

ВНИМАНИЕ!!!
Для Debian GNU/Linux надо установить клиент к БД. Готовый годный пакет -  здесь
Подробное описание конфига /etc/ejabberd/ejabberd.cfg можно посмотреть тут: http://blog.scaytrase.ru/linux/330/
Ещё один неплохой мануал: http://forum.odmins-it.ru/index.php?topic=170.0

4. Настройка транспорта ICQ

Далее переходим к настройке необходимого нам pyticq:
Здесь всё проще некуда:

<pyicqt>
<!-- The JabberID of the transport. -->
<jid>icq.hostname.server</jid>
<!-- The component JID of the transport. Unless you're doing clustering, leave this alone -->
<!-- <compjid>icq1</compjid> -->
<!-- The IP address of the main Jabberd server -->
<mainServer>127.0.0.1</mainServer> - адрес сервера
<!-- The JID of the main Jabber server -->
<mainServerJID>icq.adress.ru</mainServerJID> - имя сервера с транспортом
<!-- The website of the Jabber service -->
<website>http://adress.ru/</website> - адрес странички
<!-- The website of the transport service -->
<!-- <transportWebsite></transportWebsite> -->
<!-- The support room on your server -->
<!-- <supportRoom></supportRoom> -->
<supportJid>jid@adress.ru</supportJid>
<!-- The TCP port to connect to the Jabber server on -->
<!-- (this is the default for Jabberd2) -->
<port>5555</port> - порт указанный в транспорте конфига ejabberd.cfg
<!-- The TCP port that the web admin interface will answer on -->
<!-- (uncomment to enable) -->
<!-- <webport>12345</webport> -->
<webport>8022</webport>
<!-- The authentication token to use when connecting to the Jabber server -->
<secret>secret</secret>
<!-- The default language to use (for error/status messages) -->
<lang>ru</lang>
<!-- Default one-byte message encoding to use -->
<encoding>cp1251</encoding>
<!-- The hostname of the ICQ server you wish to connect to -->
<icqServer>login.icq.com</icqServer>
<!-- The port of the ICQ server you wish to connect to -->
<icqPort>5190</icqPort>

можно еще отредактировать блок:

<admins>
<jid>admin@jid</jid>
<!--<jid>admin@host.com</jid>-->
</admins>

Остальное оставляем по умолчанию. У нас получился XMPP-сервер (Jabber), проникнутый духом корпоративности и порядка. В будущем подумаем о других транспортах XMPP. В комментариях – пишите, какие транспорты IM-сетей вас интересуют.

]]>
http://omsklug.com/2014/02/ejabberd-server-mysql-pyticq-transport/feed/ 0
Как освежить отношения с партнёром по e-mail http://omsklug.com/2013/09/face-email-header-creation-and-usage/ http://omsklug.com/2013/09/face-email-header-creation-and-usage/#comments Wed, 25 Sep 2013 08:22:31 +0000 Shroom http://omsklug.com/?p=1558 .local p {text-align: justify!important; text-justify: inter-word!important;} .local a {color: rgb(16, 8, 96)!important;} .local a:visited {color: Gray!important;} .local a:hover {text-decoration: underline; color: Blue!important;} .local code {font-family: Monospace,Courier!important;}

Всё, что вы хотели знать о заголовке (X-)Face, но боялись спросить

Статья рассказывает о заголовочных полях сообщений электронной почты X-Face и Face, о способах их генерации и внедрения в письмо. Также затронуты темы фильтрации изображений с помощью утилит из пакетов netpbm и ImageMagick.

Что такое e-mail message headers?

Заголовки (вернее, заголовочные поля) сообщений e-mail — это служебные поля данных, расположенные непосредственно перед телом сообщения и содержащие (как минимум) информацию об отправителе, дате отправки, получателе и пути следования письма. Физически они представляют собой строки, начинающиеся с зарезервированного служебного слова и заканчивающиеся переводом строки. От тела письма заголовок отделяется пустой строкой. В принципе, всё это давно было о писано в RFC 822 («Internet Message Format»), который к данному моменту окончательно устарел и был в своё время заменён на RFC 2822, который тоже уже устарел и был заменён на более новый RFC 5322.

Однако, если мы внимательно почитаем эти документы, то не найдём в них упоминаний ни о каких полях (X-)Face. В общем-то, это и правильно, поскольку RFC дают лишь то, что необходимо и достаточно для организации той или иной информационной инфраструктуры. А те поля, о которых пойдёт речь дальше, являются расширениями.

Для чего нужны поля (X-)Face?

Если очень коротко, то в этих полях может содержаться портрет отправителя письма или какой-нибудь логотип. Например, в Claws Mail это выглядит примерно так:


Пример отображения поля Face в почтовом клиенте Claws Mail

А теперь о том, как обстоят дела на самом деле…

А на самом деле о полноценном изображении речи в принципе не идёт. Во-первых, сам по себе размер картинки 48×48 точек не предполагает каких-либо эстетических изысков, поэтому портретное сходство будет веcьма общим. Во-вторых, ограничение на количество цветов делает задачу передачи этого самого сходства весьма нетривиальной. Например, формат X-Face определяет возможность передачи только чёрно-белой картинки. Поле Face может содержать уже цветную картинку, но количество цветов в ней, скорее всего, не будет превышать 30, поскольку есть очень жёсткие ограничения на объём информации.

Однако, нет поводов для беспокойства. Автор формата X-Face Джеймс Эштон на своей страничке буквально говорит о том, что «сделанные тщательно, с использованием дизеринга, [чёрно-белые] изображения лиц на удивление узнаваемы, даже с их небольшим размером». На самом деле никто не запрещает вместо портрета использовать скан личной подписи или какой-нибудь символ. А может быть и пару-тройку слов. Тем более, что изображение может быть цветным… Однако, описание подобных нетривиальных способов использования полей (X-)Face выходит за рамки данной статьи.

Способы создания картинок для поля Face

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

Итак, для начала рассмотрим, какие ограничения накладываются на изображение для поля Face. Во-первых, это картинка в формате PNG. Во-вторых, размер изображения остаётся таким же, как и в X-Face и составляет 48×48 точек. В-третьих, размер файла жёстко ограничен сверху. Человек, предложивший использовать новый формат поля, Ларс Магне Ингебригтсен (по совместительству — автор программы Gnus) даёт довольно подробный расчёт размера этого самого png-файла, исходя из ограничений на размер поля по RFC, BASE64-кодирования и наличия дополнительной служебной информации. В сухом остатке получаем 725 байт максимум… Да, я тоже сначала подумал, что это невозможно. Однако, сейчас мы с вами узнаем, как же можно упихать в эти жалкие 700 байт какую-нибудь прикольную картинку.

Авторский способ

Собственно, Ларс предлагает конвертировать любую картинку в формат Face примерно вот так:

djpeg face.jpg | ppmnorm | pnmscale -width 48 -height 48 | ppmquant 7 | pnmtopng > face.png

Единственный параметр, который здесь можно менять, — это количество цветов, до которого ограничивается палитра выходного изображения (параметр для команды ppmquant). И то, в большинстве случаев менять его можно только в меньшую сторону, что отнюдь не способствует повышению эстетической ценности результата. Есть, правда, более гибкая команда — pnmquant, которой кроме количества уровней квантования можно также задавать алгоритмы, по которым будет производиться уменьшение цветов и предварительная фильтация. Тем не менее, результат оставляет желать лучшего:


Результат работы утилит из пакета netpbm

Если хотите побаловаться с этими утилитами самостоятельно, их можно найти в пакетах netpbm и libjpeg-progs.

Продвинутый способ

Для его использования нам понадобится откровенно тяжёлый (во всех смыслах) пакет ImageMagick. Однако, и качество результата будет значительно выше. Сразу же замечу, что чем меньше в исходном изображении мелких деталей и различимых цветов, чем больше крупных областей, залитых одним цветом, и чем ближе его размер к нужному нам 48×48 точек, тем меньше будет размер полученной картинки в байтах и тем больше у неё будет сходства с оригиналом.

Однако, ближе к делу! Вот пример командной строки, которая из картинки 225×269 (19Кб) делает картинку объёмом всего 722 байта (обратите внимание, что передпараметрами стоит одиночный знак «–», а не двойной «– –»):

convert face_big.jpg -filter gaussian -define filter:blur=0.75 -resize 48x48 -gravity center -extent 48x48 -unsharp 0x1 -normalize -quantize RGB +dither -colors 32 -posterize 6 -strip face.png

Если, как было указано выше, большого количества мелких деталей нет (или линейный размер исходного изображения не более, чем в 3-4 раза превышает целевой), то параметры -filter gaussian -define filter:blur=0.75 можно опустить. Они используются в качестве ВЧ-фильтра для исключения «шумовой» информации, которая будет практически неразличима в маленьком формате, но приведёт к увеличению объёма файла.

Параметр -resize 48x48 используется для изменения размера, а -gravity center -extent 48x48для центрирования изображения внутри квадрата 48×48. То есть, если картинка изначально квадратная, её можно не центрировать.

Команды -unsharp 0x1 -normalize позволяют несколько увеличить резкость после уменьшения размера и повысить контрастность и насыщенность за счёт нормализации цветов (это процесс растягивания гистограммы изображения с переводом 2% самых тёмных точек в чёрный цвет и 1% самых светлых — в белый).

Далее пойдёт некоторое количество магии, которая, собственно, и позволяет выкинуть бóльшую часть избыточности. Параметр -quantize RGB задаёт цветовое пространство для дальнейших преобразования палитры. Параметр +dither отключает (как это ни покажется странным со значком «+») дизеринг (процесс, который вносит искусственно сформированный шум, скрывая резкие переходы цветов и существенно увеличивая при этом размер файла). Параметр -colors 32 ограничивает палитру изображения 32 цветами (5 бит на пиксель). В данном случае 32 цвета — это отнюдь не догма, а отправная точка. Если объём результирующего файла оказался меньше 650 байт, можно попробовать повысить качество, ограничив палитру не 32, а 64 цветами (6 бит на пиксель). Если же по какой-то причине размер превысил жёсткое ограничение в 725 байт, количество цветов придётся уменьшить. Наконец, параметр -posterize 6 используется для дополнительного уменьшения количества цветов и увеличения площадей, залитых одним цветом, что способствует лучшему сжатию. Заметьте, что если поменять местами параметры -posterize и -colors, выигрыш в объёме будет не столь заметен. Это объясняется тем, что такая последовательность сначала пытается покрыть рисунок сеткой изолиний для выявления областей примерно одинакового цвета, а потом уменьшает количество цветов. Это приводит к тому, что найденные смежные области после сокращения палитры в общем случае не будут иметь один и тот же цвет, что приведёт к худшему сжатию. Но если сначала уменьшить количество цветов, а затем выявлять области с похожими цветами, эта стратегия даст значительный прирост количества связных областей, залитых одним и тем же цветом.

Из вышеизложенного следует логичный вопрос: если мы уменьшили количество цветов постеризацией, почему бы дополнительно не снизить количество бит на пиксель до 4 (использовать 16-цветную палитру)? Давайте проверим:

convert face_big.jpg -filter gaussian -define filter:blur=0.75 -resize 48x48 -gravity center -extent 48x48 -unsharp 0x1 -normalize -quantize RGB +dither -colors 32 -posterize 6 -colors 16 -strip face.png


Пример файла, полученного на выходе утилиты convert из пакета ImageMagick

Получили файл объёмом 683 байта (против 722 с 32 цветами). Весьма неплохо. Если хочется попытаться чуть-чуть улучшить качество, можно постеризовать изображение не до 6, а до 7 или 8 оттенков. Однако, это не всегда приводит к заметному улучшению, зато практически всегда увеличивает размер файла. Если же размер всё ещё больше 725 байт, можно попробовать использовать -posterize 5 (4 и ниже не рекомендую, поскольку это приведёт к серьёзным искажениям). Если и это не помогло, вероятно, следует выбрать другую картинку.

Да, кстати… Чуть не забыл! Параметр -strip не стóит недооценивать, даже несмотря на то, что он идёт последним. Он выполняет весьма важную в данном контексте функцию: убирает мета-информацию из файла. А это как минимум дата создания и модификации, которые занимают ещё пару-тройку десятков драгоценных байтов.

Использование

Теперь вернёмся к тому, ради чего, собственно, всё это и затевалось. То есть, к почтовым клиентам, которые поддерживают отображение полей (X-)Face.

  • Claws Mail отображает эти заголовки самостоятельно, без помощи плагинов.
  • Gnus, естественно, показывает (X-)Face, поскольку автор программы решил «доработать» старый формат поля именно для этого софта.
  • Thunderbird может показывать их с помощью плагинов; к данному моменту, вероятно, в живых остались только Mnenhy и Display Contact Photo.
  • KMail тоже умеет (вероятно, достаточно давно).
  • Balsa не афиширует эту возможность, хотя Ларс Ингебригтсен считает, что там вроде бы всё в порядке.
  • The Bat! считает, что это поле не является стандартным и, кроме того, проще прикрепить фотографию к контакту в адресной книге; соответственно, изображение не показывает (хотя был плагин для X-Face).

Если отображение заголовков обычно не является проблемой, то вставить заголовок в письмо не всегда является тривиальной задачей. Хорошо, если почтовый клиент позволяет хотя бы просто добавлять свои строки в дополнительные поля. Тогда можно пропустить полученный png-файл через утилиту base64 и вставить получившийся мусор закодированный файл в поле ввода, предоставленное клиентом. Но есть и такие, которые позволяют сгенерировать (X-)Face для каждого аккаунта автоматически. В качестве примера рассмотрим процедуру добавления поля Face в двух почтовых клиентах.

Claws Mail

Здесь всё просто. Всего-то нужно

  1. в главном меню программы выбрать пункт «Настройки…»,
  2. далее выбрать «Редактировать учётные записи…»,
  3. в появившемся окне выбрать нужную учётку (если их несколько, естественно, при необходимости придётся повторить процедуру для каждой),
  4. \item нажать на кнопку «Изменить»,
  5. в появившемся окне в списке слева выбрать пункт «Отправить»,
  6. установить чекбокс «Добавить заданный заголовок» и нажать на кнопку «Изменить»,
  7. в открывшемся окне в поле «Заголовок» выбрать «Face»,
  8. для заполнения поля «Значение» нажать кнопку «Просмотр» и выбрать подготовленный по вышеописанной процедуре png-файл,
  9. если не было ругани, нажать кнопку «Добавить»,
  10. закрыть все открытые окна настроек кнопкой «OK» (или «Закрыть»).

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

Thunderbird

Сначала хотелось бы сказать большое спасибо alexandrorodrigez’у (OmskLUG) за то, что он нашёл время и энергию для определения работающего способа вставки и отображения заголовка (X-)Face для Thunderbird.

Итак, что нужно делать:

  1. зайти в Config Editor (Tools → Options → Advanced → General → Config Editor);
  2. добавить поля mail.identity.idN.headers (где N — номер почтового ящика) со значением «X-Face, Face» (без кавычек, естественно); безусловно, если это поле уже существует, то «X-Face, Face» нужно добавить через запятую к существующему списку значений};
  3. создать поле mail.identity.idN.header.X-Face и в качестве значения скопировать в него строку вашего 1-битного изображения, или
  4. создать поле mail.identity.idN.header.Face и в качестве значения скопировать в него base64-encoded строку вашего цветного изображения;
  5. закрыть Config Editor

Для проверки посылаем письмо с того аккаунта, который мы только что модифицировали. Если никаких специальных плагинов не подключено, в полученном письме увидим в числе прочих заполненное нами поле (X-)Face. Если же стоит, например, указанный выше плагин Display Contact Photo, рядом с обычными заголовками появится картинка. Примерно вот так:


Пример отбражения поля Face в почтовом клиенте Thunderbird

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


Спасибо за внимание!

Как обычно, полный текст этой статьи можно совершенно свободно скачать отсюда в формате PDF.

]]>
http://omsklug.com/2013/09/face-email-header-creation-and-usage/feed/ 0
Веб-регистрация пользователей ejabberd http://omsklug.com/2013/09/jabber-registration-interface/ http://omsklug.com/2013/09/jabber-registration-interface/#comments Thu, 12 Sep 2013 20:10:39 +0000 Plus http://omsklug.com/?p=1535

Итак имеется, настроенный ejabberd с базой данных на mysql. Необходимо сделать регистрацию через веб интерфейс. После долгих поисков модуля ejabberd для организации веб-регистрации клиентов, не нашлось ничего подходящего. По этому пришлось обратиться за помощью к php и mysql.

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

В качестве примера у нас это… Форма knopka.php:

<!DOCTYPE html>
<html>
<meta charset=”utf-8″/>
<head>
<script type=”text/javascript” src=”http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js”></script>
<script type=”text/javascript” src=”js/bootstrap.js”></script>
<link rel=”stylesheet” type=”text/css” href=”css/bootstrap.css”>
<link rel=”stylesheet” href=”css/reset.css”>
<link rel=”stylesheet” href=”css/animate.css”>
<link rel=”stylesheet” href=”css/styles.css”>
<title>Регистрация Jabber</title>

</head>
<body>
<button type=”button” onclick=”openModal();”>Регистрация Jabber</button>
<!– Modal –>
<div id=”myModal” tabindex=”-1″ role=”dialog” aria-labelledby=”myModalLabel” aria-hidden=”true”>
<div id=”container”>
<form action=”user.php” method=”post”>

<label for=”name”>Имя учетной записи:</label>
<p>
<input name=”login” type=”name” size=”15″ maxlength=”15″>
</p>
<label for=”username”>Пароль:</label>
<p><a href=”#”>Запишите пароль!</a>

<input name=”password” type=”password” size=”15″ maxlength=”15″>

<div id=”lower”>

<input type=”checkbox”><label for=”checkbox”>Я принимаю условия регистрации.</label>

<input type=”submit” name=”submit” value=”Регистрация”>
</div>
</form>
</div>
</div>

<!–div>
</div–>

<script type=”text/javascript”>
function openModal(){
$(‘#myModal’).modal(‘show’);
}
</script>
</body>
</html>

Думаю тут все понятно и не требует дополнительных пояснений.

след файл mysql.php с параметрами подключения к базе:

<?php
$db = mysql_connect (“localhost”,”root”,”1″);
if($db)
mysql_select_db (“test”,$db);
else
{
echo “ошибка подключения к БД”;
}
?>

И третий файл user.php, который отвечает за помещение данных в базу.

<?php
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == ”) { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password ==”) { unset($password);} }
//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную
if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт
{
exit (“Вы ввели не всю информацию, вернитесь назад и заполните все поля!”);
}
//если логин и пароль введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести
$login = stripslashes($login);
$login = htmlspecialchars($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);
// подключаемся к базе
include (“mysql.php”);// файл mysql.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь 
// проверка на существование пользователя с таким же логином
$result = mysql_query(“SELECT id FROM users WHERE username=’$login’”,$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {
exit (“Извините, введённый вами логин уже зарегистрирован. Введите другой логин.”);
}
// если такого нет, то сохраняем данные
$result2 = mysql_query (“INSERT INTO users (login,password) VALUES(‘$login’,'$password’)”);
// Проверяем, есть ли ошибки
if ($result2==’TRUE’)
{
echo “Вы успешно зарегистрированы! Теперь вы можете зайти под своим JID. “;
header(“Location: http://localhost”);
}
else {
echo “Ошибка! Вы не зарегистрированы.”;
}
?>

Ну и конечно же нужно помнить что базу и таблицу выбираем именно как таблицу пользователей в базе mysql ejabberd, “user”.

В качестве оформления можете воспользоваться css framework или накидать дизайн самостоятельно.

css.tar - в архиве файлы с формой и оформлением.

]]>
http://omsklug.com/2013/09/jabber-registration-interface/feed/ 0
Software Freedom Day 2013 в Омске http://omsklug.com/2013/09/sfd2013announce/ http://omsklug.com/2013/09/sfd2013announce/#comments Thu, 12 Sep 2013 19:58:39 +0000 linuxmasterz http://omsklug.com/?p=1540 Software Freedom Day LogoВРЕМЯ, МЕСТО

2013-09-21 в 14.00 ч. в 101 аудитории первого корпуса Омского государственного университета им. Ф.М. Достоевского (г. Омск, пр. Мира, д. 55А) пройдёт международный День свободы программного обеспечения (Software Freedom Day). Если не сможете прийти, будет трансляция в Интернет всего действа вот тут http://www.omsklug.com/tv. Проходить всё будет где-то здесь:

карта подходов к первому корпусу ОмГУ © Участники OpenStreetMap

РЕГИСТРАЦИЯ

Просьба, в случае участия, зарегистрироваться вот здесь:

http://bit.ly/SFD2013Omsk

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

ДОКЛАДЫ

Планируются доклады на следующие темы:

  • Итоги свободного программного обеспечения в 2013 (Алексей Тараканов)
  • Безопасный Интернет
  • История успеха: от MySQL к MariaDB (Станислав Емец)
  • CMS Drupal от HTML до социальных сетей (Иван Абраменко)
  • Проект “Мандолина” (Максим Приходай)

ПЕРЕРЫВЫ И ПОСЛЕ…

А честно говоря, это ещё и обычный Linux Install Fest, когда можно установить и получить безвозмездно понравившийся дистрибутив свободного программного обеспечения с помощью активистов OmskLUG (омских линуксоидов), не только GNU/Linux, но и иное свободное ПО, проконсультироваться по тому или иному вопросу о свободном программном обеспечении. Планируется криптовечеринка, поэтому готовьте свои PGP-ключи.

ПОМОЩЬ

Помогите в распространении информации о мероприятии, отправьте ссылку на этот анонс своим знакомым через ваши любимые социальные сети, микроблоги и прочие вебдваноли. Распечатайте это объявление: http://bit.ly/sfd2013omskannounce и поместите на достаточно видное место у себя в грустном офисе, в модном подъезде, на лобовом стекле вашего автомобиля. Мы были бы рады вашему рвению к продвижению свободного программного обеспечения.

ССЫЛКИ

http://bit.ly/sfd2013omskannounce - ссылка на объявление о мероприятии

http://bit.ly/sfd2013omskannouncev – ссылка на объявление о мероприятии (вертикальное)

http://bit.ly/SFD2013Omsk – ссылка на форму регистрации на мероприятие

Хештег для twitter: #sfd2013omsk

До встречи на SFD 2013!

]]>
http://omsklug.com/2013/09/sfd2013announce/feed/ 1