Файл конфигурации LinkExchange
Конфигурационный файл LinkExchange (linkexchange.cfg) служит для определения площадки и клиентов в ней, объектов форматирования и дополнительных опций. Формат имеет синтаксис в стиле INI. Каждый клиент или объект форматирования определяется в своем собственном разделе [client-N] или [formatter-N] соответственно, где N - порядковый номер объекта. Дополнительные опции определяются в разделе [options].
Пример конфигурационного файла:
[options] host = example.com [client-1] type = sape user = user12345 db_driver.type = shelve db_driver.filename = /path/to/sape-XXX.db [client-2] type = linkfeed user = user12345 db_driver.type = shelve db_driver.filename = /path/to/linkfeed-XXX.db [formatter-1] type = list count = 2 class_ = linx prefix = "- " suffix = ". " [formatter-2] type = inline count = 2 class_ = linx delimiter = " | " prolog = "| " epilog = " |" [formatter-3] type = list count = none class_ = linx prefix = "+ " suffix = ". "
Между именем параметра и знаком =, а также между знаком = и значением допускается наличие одного или несколько пробелов. Строковые значения могут быть заключены в двойные кавычки "". Для обозначения unicode-строки перед первой кавычкой необходимо поставить букву u. Числовые значения указываются в виде десятичного числа; булево-значения - true, false, on, off; значение None-типа - none.
Раздел [options]
Здесь указываются опции, которые используются при подключении библиотеки к фреймфоркам, и зависят от конкретного фреймворка.
Общие опции для всех фреймворков
- config_encoding
- Кодировка файла для определения unicode-строк. По умолчанию UTF-8.
- host
- Принудительно задет доменное имя, которое используется клиентами для получения ссылок. По умолчанию доменное имя определяется по HTTP-запросу.
- rearrange_map
- Задает правила перестановки блоков ссылок. Правило имеет вид i1:i2-o1:o2, где i1 и i2 - начальный и конечный индекс исходного массива блоков ссылок, o1 и o2 - начальный и конечный индекс выходного массива. Правила перечисляются через запятую. Данная возможность позволяет выводить блоки на разных страницах в разных местах. В шаблоне страницы можно определить большее количество мест для блоков ссылок чем их реальное количество (что определяется количеством объектов форматирования), и при помощи rearrange_map разбрасывать блоки по разным местам. Конкретная позиция каждого блока зависит от URL страницы.
Раздел [client-N]
Этот раздел описывает конфигурацию клиента системы купли-продажи ссылок. N - порядковый номер клиента, начиная с 1. Здесь обязательно должен быть определен параметр type.
- type
- Этот параметр задает тип клиента (точка входа setuptools), по которому определяется класс будущего объекта. На данный момент имеются такие клиенты: sape, sape_context, linkfeed.
Остальные параметры зависят от типа клиента.
Клиент sape
Клиент системы Sape.ru для обычных (не контекстных) ссылок. Имеет следующие параметры:
- user
- Хеш-код пользователя Sape. Указываться на странице при добавлении новой площадки в системе Sape.ru (совпадает с именем папки для размещения официального клиента). Обязательный параметр.
- db_driver.*
- Параметры драйвера базы данных. Подробности смотрите ниже. Обязательно должен быть указан db_driver.type, остальное зависит от типа драйвера.
- db_lifetime
- Время жизни базы данных в секундах. Если последнее обновление БД было больше чем указанное количество секунд назад, то выполняется ее обновление. По умолчанию 3600 секунд. Значение none отключает автоматическое обновление БД.
- db_reloadtime
- При ошибке обновления БД не предпринимать никаких попыток обновления на протяжении указанного в этом параметре промежутка времени. По умолчанию 600 секунд.
- socket_timeout
- Максимальное время ожидания ответа от удаленного сервера в секундах. По умолчанию 6 секунд.
- force_show_code
- Если true, всегда вставлять код проверки, иначе только при обращении бота (определяется по куки). По умолчанию true.
- use_xml
- Значение true включает использование формата XML при обновлении БД, в противном случаи используется формат сериализации PHP. Если использование формата XML включено, то URL файла БД выбирается из списка xml_server_list, и соответственно для разбора файла используется XML-парзер. Если же используется формат сериализации PHP, то URL файла БД выбирается из списка server_list, а для разбора файла используется модуль phpserialize.
Клиент sape_context
Клиент системы Sape.ru для контекстных ссылок. Имеет следующие параметры:
- user
- Тоже что и у клиента sape.
- db_driver.*
- Тоже что и у клиента sape.
- db_lifetime
- Тоже что и у клиента sape.
- db_reloadtime
- Тоже что и у клиента sape.
- socket_timeout
- Тоже что и у клиента sape.
- force_show_code
- Если true, всегда вставлять код проверки и теги <sape_index>, иначе только при обращении бота (определяется по куки). По умолчанию false.
Клиент linkfeed
Клиент системы LinkFeed.ru. Имеет следующие параметры:
- user
- Хеш-код пользователя LinkFeed. Указываться на странице при добавлении новой площадки в системе LinkFeed.ru (совпадает с именем папки для размещения официального клиента). Обязательный параметр.
- db_driver.*
- Тоже что и у клиента sape.
- db_lifetime
- Тоже что и у клиента sape.
- db_reloadtime
- Тоже что и у клиента sape.
- socket_timeout
- Тоже что и у клиента sape.
- force_show_code
- Если true, всегда вставлять код проверки, иначе только при обращении бота (определяется по IP). По умолчанию true.
- use_xml
- Тоже что и у клиента sape.
Параметры драйвера базы данных
- db_driver.type
- Тип драйвера (точка входа setuptools), по которому определяется класс объекта. На данный момент есть такие драйверы: mem, shelve.
Остальные параметры драйвера БД зависят от типа драйвера.
Драйвер БД mem
Хранит базу данных в памяти в виде словаря значений. Не имеет параметров.
Драйвер БД shelve
Использует стандартный модуль shelve. Хранит данные в DBM-базе данных. Имеет следующие параметры:
- db_driver.filename
- Имя файла базы данных. Обязательный параметр. Если передана строка содержащая 'XXX', то конечное имя файла будет filename.replace('XXX', host), если последовательность 'XXX' не встречается, то имя файла будет filename + host, где host - доменное имя сайта. Можно также передавать в качестве значения filename функцию, тогда имя файла будет filename(host).
- db_driver.max_lock_time
- Максимальное время блокировки БД в секундах. БД блокируется при записи, чтобы предотвратить одновременный доступ с разных потоков/процессов. При превышении максимального времени блокировки блокировка снимается. По умолчанию 600 секунд.
- db_driver.no_excl
- Значение true запрещает использование флага O_EXCL при создании файла блокировки. По умолчанию false. Есть смысл включить этот параметр если файл БД расположен на сетевом диске, где O_EXCL не поддерживается.
- db_driver.db_module
- Принудительно задает используемый DBM-модуль. Возможные значения: dbhash, gdbm, dbm (не все модули доступы на всех платформах). По умолчанию выбирается первый доступный модуль.
Раздел [formatter-N]
Этот раздел описывает конфигурацию объекта форматирования. Объекты форматирования используются для разбиения ссылок на блоки и их форматирования. N - порядковый номер объекта форматирования, начиная с 1. Здесь обязательно должны быть определены параметры type и count.
- type
- Этот параметр задает тип (класс) объекта форматирования (точка входа setuptools), На данный момент имеются такие классы форматирования: inline, list.
- count
- Количество ссылок в блоке. Значение none означает забрать все оставшиеся ссылки.
Остальные параметры зависят от класса форматирования.
Класс форматирования inline
Данный класс оформляет блок ссылок в виде элемента DIV с перечисленными в нем ссылками. Имеет следующие параметры:
- delimiter
- Текст разделяющий ссылки.
- prefix
- Текст, который должен быть в начале каждой ссылки.
- suffix
- Текст, который должен быть в конце каждой ссылки.
- prolog
- Текст сразу после начального тега DIV и перед первой ссылкой. Не добавляется, если нет ни одной ссылки.
- epilog
- Текст сразу после последней ссылки и перед конечным тегом DIV. Не добавляется, если нет ни одной ссылки.
- id
- Значение для атрибута id элемента DIV.
- class_
- Значение для атрибута class элемента DIV когда в блоке есть ссылки.
- class_for_empty
- Значение для атрибута class элемента DIV когда в блоке нет ссылок.
Класс форматирования list
Оформляет блок ссылок в виде элемента UL с перечисленными в нем ссылками, каждая ссылка заключается в элемент LI. Либо как пустой элемент, указанный в параметре tag_for_empty, если нет ссылок. Имеет следующие параметры:
- prefix
- Текст, который должен быть в начале каждой ссылки.
- suffix
- Текст, который должен быть в конце каждой ссылки.
- id
- Значение для атрибута id элемента UL или пустого элемента.
- class_
- Значение для атрибута class элемента UL когда в блоке есть ссылки.
- class_for_empty
- Значение для атрибута class пустого элемента когда в блоке нет ссылок.
- tag_for_empty
- Тег используемый в блоке без ссылок. По умолчанию SPAN.
