Перейти к контенту

Школа начинающего IPB строителя


GiV

Рекомендуемые сообщения

§0 Предисловие

В прошлой статье мы с вами ознакомились с основными файлами IPB, узнали их предназначение в работе самого движка и границы применимости при модификации. Материал был очень объемный, по этому в сегодняшней части Школы мы отойдем от написания модификаций и вплотную рассмотрим процесс установки оных.

 

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

 

Небольшое замечание:

данная часть школы разделна на две подчасти (первая об установке модификаций, вторая об удалении и обновлении), в связи с большим количеством материала.

 

§1 Концепция установки модификаций

За основу этой части Школы взята замечательная статья Концепция установки хаков для vBulletin с Сервера сетевых администраторов

 

§1.1 Основные этапы установки модификации

Приведу список самых основных действий выполняемых при установке модификации:

 

- Внесение изменений в базу форума.

- Модифицирование файлов.

- Изменение шаблонов стиля.

- Закачка новых файлов на сервер.

 

Теперь о каждом этапе подробнее. Но сначала я приведу первое правило установки модификаций:

 

Правило №1 [правило экономии времени]: любой ценящий свое время администратор форума все изменения осуществляет на копии форума, находящегося на локальном сервере.

 

Почему? Все просто, если в процессе установки модификации, что-то пойдет не так то это может привести к печальным последствиям, вплоть до полной неработоспособности форума или очистки базы. Откат назад потребует времени и трафика. При работе с локальной копией форума мы

во-первых, не ставим под угрозу функциональность главного форума

во-вторых, можем устанавливать модификацию сколь угодно долго

в-третьих, изменив на локальной копии и добившись полной работоспособности, мы просто закачиваем измененные файлы на сервер.

 

§1.2 Этап внесения изменений в базу форума

Внесение изменений в базу данных подразумевает добавление новых полей в таблицу и/или добавление новых таблиц, также может содержать инструкции по добавлению новых записей.

 

В инструкции по установке этот этап обычно выделяется как "Execute SQL query" [выполните SQL запрос]. Далее следует список sql - запросов необходимых для выполнения. В основном запросы начинаются со слов ALTER, INSERT, CREATE, но могут быть и другие слова, например, DELETE и UPDATE.

 

Раз уж заговорили о запросах, то самое время ввести второе правило:

 

Правило №2 [правило бдительного админа]: будь начеку при появлении запросов удаления, изменения и добавления записей в таблице ibf_members

 

Чем же так опасны DELETE, UPDATE и INSERT запросы для таблицы ibf_members?

DELETE - запросы, могут удалить учетную запись пользователя с форума (например, вашу).

UPDATE - запросы, могут изменить принадлежность к группе того или иного пользователя (например, злоумышленника переместить в группу администраторов).

INSERT - запросы, могут добавить нового пользователя (того же злоумышленника) без регистрации.

 

Что делать если найден такой запрос? Обратиться к нам!

 

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

 

Очевидно, что не все модификации требуют изменения в базе.

 

§1.3 Этап модифицирования файлов

Это самый ответственный момент, как правило, все хаки требуют внесения изменений в оригинальные файлы, исключением являются лишь те которые работают как отдельная программа используя API оригинального скрипта.

 

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

 

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

 

Объяснять не буду, так как все очевидно.

 

Теперь об инструкциях:

Open filename.php | Открыть filename.php - подразумевает открытие указанного файла для последующего редактирования.

 

Find | Найдите - нужно найти в файле указанный отрывок идущий после этих слов. Как правило, он состоит из нескольких строк. Поэтому всегда в начале ищите первую строку. Затем проверяете, не существует ли данная строка 2 или больше раз. Если существует еще вхождение, то сверяйте найденный код с указанным в инструкции, пока не найдете кусок точь-в-точь совпадающий с приведенным в инструкции.

 

Add below, under that, after that | Вставьте после - это означает что после найденного отрывка (тот который указан в Find) нужно вставить приведенный код.

Настал черед четвертого правила:

 

Правило №4 [правило ясного кода]: любое изменение в файле обязательно комментируйте с указанием названия устанавливаемой модификации.

 

Придумайте свой стиль комментирования хаков.

Комментировать в PHP можно 3 способами:

1. используя двойной слэш // - все что за ними и до конца строки считаются комментариями

2. используя # - аналогичен двойному слэшу

3. /* комментарий */ - могут быть многострочными.

 

Комментировать можно так:

// НАЧАЛО имя_модификации
здесь код модификации
// КОНЕЦ имя_модификации

Что нам это дает? Мы всегда сможем удалить модификацию или обновить её до более новой версии.

 

Едем дальше.

Add before | Добавить перед - тоже что и в предыдущем пункте только код нужно добавлять не ниже а выше указанного отрывка.

 

Replace with | Заменить на - необходимо заменить найденный отрывок указанным.

 

Говоря о заменах в файлах нужно привести пятое правило:

 

Правило №5 [гляжу в оба]: прежде чем заменять кусок кода убедись, что это он действительно совпадает с кодом, которым вам предлагают заменить

 

Зачем? Вполне возможен случай, что версия, для которой писалась модификация, отличается от вашей, или же отрывок был изменен при установке другой модификации. Именно тут всегда и возникают все проблемы и крики о помощи, что скрипт не работает соответствующим образом.

Если глазомер подводит, то на помощь нам может прийти программа типа AraxisMerge. Если код, приведенный в инструкции, совпадает полностью с тем что у вас, то можно заменять, иначе надо найти тот же код в стандартной поставке IPB и найти различия с вашим. Как только различия будут установлены и внесены в код, на который нужно заменить, заменяем.

 

Если вам это показалось сложным, то обращайтесь к нам, поможем.

 

Согласно правилу ясного кода итог изменений в результате замены нужно прокомментировать. Предлагаю делать это следующим образом:

// НАЧАЛО имя_модификации
// оригинальный код
/*
здесь идет оригинальный код, который мы заменяли 
*/
здесь идет новый код
// КОНЕЦ имя_модификации

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

 

Да, чуть не забыл, главная аксиома модификатора:

 

Аксиома [просто аксиома]: после осуществления изменений в файле его нужно сохранить.

 

Объяснять не буду, не глупые :D

 

§1.4 Этап изменения шаблонов стиля

Ну о шаблонах у нас будет разговор краткий. Все так же как и с модификацией файлов. Но есть тут одно но, оформим его как правило:

 

Правило №6 [правило забывчивого админа]: если у Вас несколько стилей на форуме, то изменения в шаблонах следует производить для всех стилей

 

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

 

§1.5 Этап закачки новых файлов на сервер

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

Главное следите за тем в какие директории закачиваете файлы, лучше перепроверить, чем потом тратить время на поиск ошибки.

 

§2 И еще о правильной установке модификаций

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

 

Итак в чем же суть журналирования установки модификаций? Вы ведете журнальный файл, вписывая в него, по меньшей мере название модификации, версию, дату установки. Не вобраняется вписывать изменения в базе данных, в виде выполненных SQL-запросов, модифицированные файлы и другую полезную информацию.

 

Для чего это стоит делать? Память не резиновая, и упомнить что и когда ставилось, тем более если ставилось много чего, достаточно сложно. Вот тут на помощь нам и приходит этот файл. Необходимость вспомнить, что за модификации установлены, возникает обычно при переходе на новые версии IPB, а также при удалении модификации.

 

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

 

Приведу пример своего лог-файла модификаций:

________________

Форум ibresource:

11.09.2003

Движок: IPB 1.1.1

Модификация: подсветка PHP кода

SQL: нет

Файлы: Topics.php | Бэкап в ibresource/11.09.2003

Примечания: Модификация закомментирована как PHP Parser; 13.10.2003 выловил баг с '<>' изменил функцию парсинга;

________________

Форум soft-forum:

20.09.2003

Движок: vB 3.0.0 b6

Модификация: склейка сообщений

SQL: нет

Файлы: functions_postbit.php, newreply.php | Бэкап в s-f/11.09.2003

Примечания: Модификация закомментирована как merge posts; в _postbit.php второй preg_replace нужен для совместимости с тэгами предыдущей склейки;

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • 1 год спустя...
Правило №3 [правило ленивого админа]:

[....]

Правило №4 [правило ясного кода]:

[....]

Правило №5 [гляжу в оба]:

[....]

может, лучше, diff?

man diff

Правило №6 [правило забывчивого админа]:

[...]

может, лучше, cvs?

что такое cvs

 

или у админов IPB есть свои разработки, автоматизирующие эти два процесса? поделитесь.

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.