lang: en | ru
MOD_ JDC
(JavaScript DataBase Communication)


Документация (в разработке)
Сборка
Текущая версия модуля тестировалась на платформе GNU/Linux, Apache 2.х MPM-prefork. Совместимость с Apache2 архитектуры MPM-worker, а так же иных ОС не гарантируется. Для сборки модуля из исходных кодов убедитесь, что у Вас установлено приложение apxs2. Обычно оно устанавливается с пакетом apache2-prefork-dev.
Загрузите пакет с исходным кодом модуля и выполните следующие действия:
$
$
#
tar zxf mod_jdc-0.x.tar.gz
cd mod_jdc-0.x
apxs2 -i -c mod_jdc.c
Если всё прошло удачно - модуль скомпилирован и находится в каталоге библиотек Apache.
Настройка
После того, как модуль установлен в нужное место, необходимо заставить apache его загружать.
В конфигурационном файле сервера добавьте строку:
LoadModule jdc_module /usr/lib/apache2/modules/mod_jdc.so
и перезапустите сервер:
#
apache2ctl restart
После того как сервер перезагружен, осталось только назначить новый модуль обработчиком файлов-пулов подключений к БД. Для этого в каталоге сайта создайте файл .htaccess со следующим содержимым:
<Files "*.jdc">
    SetHandler mod-jdc
</Files>
Здесь мы обозначили, что в этом каталоге все файлы с расширением jdc обрабатываются эти модулем.
«Пулы» подключения
«Пул» подключения — это особым образом сформированный XML файл, который является своего рода шлюзом доступа клиентского приложения JavaScript к БД. В нём описываются параметры подключения и правила доступа пользователей к ресурсам.
Ниже приведён возможный вариант файла:
<?xml version="1.0" encoding="UTF-8"?>
<connection>
    <database driver="pgsql">
        <connstr>dbname=test user=admin password=passwd host=localhost port=5432</connstr>
        <lifetime>60</lifetime>
        <authtablename>test_users</authtablename>
        <responsetype>json</responsetype>
        <debug>on</debug>
    </database>
    <access>
        <table name="people">
            <rule type="S">
                <group>-1</group>
            </rule>
            <rule type="IUBDB">
                <grouponly>5</grouponly>
                <group>3</group>
            </rule>
        </table>
    </access>
</connection>
Описание полей представлено ниже:
ПолеПараметрОписание
<connection>Обязательное. Корень документа
<database>Обязательное. Секция описания соединения с БД
driverОбязательное. Имя драйвера БД
<connstr>Обязательное. Строка подключения к БД. Зависит от типа СУБД
<lifetime>Не обязательное. Время хранения соединения открытым. По-умолчанию 30 сек.
<authtablename>Не обязательное. Имя таблицы авторизации пользователей
<responsetype>Не обязательное. Формат ответа - JSON или XML. По-умолчанию - JSON
<debug>Не обязательное. Используется для отладки во время разработки сайта (в ответе возвращается описание ошибок). По-умолчанию отключено
<access>Обязательное. Секция описания прав доступа к данным
<table>Обязательное. Множественное. Секция описания конкретной таблицы
nameОбязательное. Имя таблицы
<rule>Обязательное. Множественное. Секция описания определённого правила для таблицы
typeОбязательное. Список разрешённых команд *
<group>
или
<grouponly>
Обязательное. Множественное. ID группы, которой разрешён доступ к этому правилу **
*Каждое определённое правило описывает список возможных операций для представленных в нём групп пользователей. Это стандартные команды SQL: SELECT, INSERT, UPDATE и DELETE. Соответственно, они представлены первыми буквами S, I, U и D. Так же добавлены два дополнительных типа: UPDATE_BYSELF и DELETE_BYSELF, с кодами UB и UD соответственно. Эти типы отличаются от общих UPDATE и DELETE тем, что они могут быть выполнены только к тем записям в таблице, владельцем которых пользователь является.
Т.е. если мы хотим установить правило, разрешающее пользователям добавлять записи, и удалять только свои, необходимо в правиле прописать тип <rule type="IDB">.
**В полях <group> и <grouponly> указывается идентификатор группы пользователя (из таблицы авторизации), которому разрешено данное правило. Код группы "-1" обозначает доступ для всех, в том числе для неаутентифицированных пользователей. Разница между полями <group> и <grouponly> в том, что <grouponly> даёт доступ к правилу только указанной группе, а <group> - указанной и всем группам с более низким идентификатором. Т.е. запись <group>3</group> описывает диапазон групп 0-3.
Таблицы
При разработке сайта с использованием mod_jdc, к таблицам данных выдвигается два требования:
1. В каждой таблице, с которой предполагается работа с помощью данного модуля, должно присутствовать целочисленное поле с именем jdc_uid, в котором автоматически записывается идентификатор пользователя, создавшего или изменившего запись.
2. Таблица авторизации, которая описывается в "пуле" подключения, должна иметь обязательный набор полей:
Имя поляТип данныхОписание
jdc_uidserial (PRIMARY KEY)Автоинкрементное целочисленное поле. Идентификатор пользователя.
jdc_loginvarchar(32) (UNIQUE NOT NULL)Уникальное, не нулевое поле. Логин, текст по которому происходит аутентификация пользователя.
jdc_passwdvarchar(64) (NOT NULL)Не нулевое поле. MD5 хэш-код пароля пользователя.
jdc_gidinteger (NOT NULL)Не нулевое целочисленное поле. Идентификатор группы.
Идея и реализация проекта — Ленский Алексей aka PM.
2008. e-mail