GiV Опубликовано 20 Октября 2003 Жалоба Поделиться Опубликовано 20 Октября 2003 • §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 и найти различия с вашим. Как только различия будут установлены и внесены в код, на который нужно заменить, заменяем. Если вам это показалось сложным, то обращайтесь к нам, поможем. Согласно правилу ясного кода итог изменений в результате замены нужно прокомментировать. Предлагаю делать это следующим образом: // НАЧАЛО имя_модификации // оригинальный код /* здесь идет оригинальный код, который мы заменяли */ здесь идет новый код // КОНЕЦ имя_модификации Вот собственно и все инструкции, которые могут встретиться вам, как в англоязычных, так и в русских руководствах по установке модификаций. Да, чуть не забыл, главная аксиома модификатора: Аксиома [просто аксиома]: после осуществления изменений в файле его нужно сохранить. Объяснять не буду, не глупые • §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 нужен для совместимости с тэгами предыдущей склейки; Ну вот, вроде все аспекты правильно установки модификаций рассмотрели. О вопросах обновления и удаления читайте в следующей подчасти (скоро). Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
mpv Опубликовано 24 Августа 2005 Жалоба Поделиться Опубликовано 24 Августа 2005 Правило №3 [правило ленивого админа]:[....]Правило №4 [правило ясного кода]:[....]Правило №5 [гляжу в оба]:[....]может, лучше, diff?man diffПравило №6 [правило забывчивого админа]:[...]может, лучше, cvs?что такое cvs или у админов IPB есть свои разработки, автоматизирующие эти два процесса? поделитесь. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.