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

Школа начинающего 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 есть свои разработки, автоматизирующие эти два процесса? поделитесь.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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