LiveStreet Mod Installer



Приветствую. LS Mod Installer, как многие уже могли догадаться, служит для установки (а в будущем и удалении) модификаций, хаков и модулей для LiveStreet в полуавтоматическом режиме (всё же придется кликнуть на кнопочку). Я считаю, что данный модуль будет очень полезен в плане популяризации проекта LiveStreet ну и конечно же для повышения КПД даже тех, кто особо брезгует подобными «автоматами» (проходили это уже). В первую очередь модуль создан для сокращения времени танцев с бубном, подобным этому (на модификацию придется убить от получаса времени, что не есть хорошо), тут же предлагается альтернатива за < 1 мин.
На данный момент реализован рабочий минимум, а именно поиск строк в файлах на сервере, замена, либо добавление необходимых строк в полуавтоматическом режиме.
Для описания действий модифицирования служит валидный файл XML с командами.
Модуль бесплатен и защищен открытой лицензией LGPL.
Пока единственную проблему я вижу лишь в написании сторонними разрабротчиками файлов-установщиков для данного движка, хотя для начала я лично буду делать инсталляторы для добавляемых модификаций. А дальше будет видно. Планирую создать некую базу модификаций, доступную из админки вашего сайта и установки их в один клик.

Данная версия предназначена только для тестирования и общего обзора! Известны не критические ошибки. Пока не рекомендуется использовать его на рабочих проектах! Поэтому пока не выкладываю в разделе модулей.

Итак, если же вам понравится эта идея, то в будущем планируется реализовать:
— Возможность отката/удаления любой модификации.
— Создание/копирование/удаление файлов на сервере.
— Поддержка *.tar.gz пакетов с графикой и большим количеством файлов.
— Поддержка SQL запросов.
— Поддержка подгрузки отдельных массивных SQL файлов (возможно).
— Самостоятельный сервис для установки и полуавтоматического обновления модификаций в один клик, доступный прямо с вашего сайта.
— Проверка модификаций на соответствие с неким сертифицированием через собственный сервис и оповещение при установке.
— Улучшение работы парсера и обработки ошибок.
— Проверка на соответствие версии LiveStreet.
— Описание и reaadme файл от разработчика для уведомления пользователя.

А теперь всё зависит от вас и ваших отзывов.

Установка:
— Скопируйте все файлы из архива.

Всё :)
Далее идём на _http://ваш_сайт/mod/install

Скачать модуль

Ниже информация для разработчиков.

Общий шаблон XML файла модификации:

<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">

<modification>
	<id>ls_mod_installer</id>
	<name>LiveStreet Mod Installer</name>
	<version>0.1.90611</version>
	<lsversion>0.3.1</lsversion>
	...
</modification>


Спецификация XML документа
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">


Тег, указывающий, что ниже перечислены рабочие команды для модифицирования.
<modification></modification>


Системное ID модификации (для учёта и контроля)
<id></id>


Название модификации
<name></name>


Версия модификации
<version></version>


Поддерживаемая версия LiveStreet
<lsversion></lsversion>


Далее существующие на данный момент команды.

Объявление файла, с которым будет работать парсер
<file name="editit.php"></file>


Объявление о начале конкретного изменения файла.
<operation></operation>


Поиск определённой строки в файле, указанном в дерективе file выше. Поддерживает табуляцию и переносы строк.
<search position="..."><![CDATA[...]]></search>

Значения параметра position
replace — замена куска кода дерективы search на значение тега add (ниже)
before — запись перед искомой строкой дерективы search значения дерективы add
after — запись после искомой строки дерективы search значения дерективы add

Заменяемый/добавляемый код при дерективе operation. работает соместно с тегом search. Поддерживает табуляцию и переносы строк.
<add><![CDATA[...]]></add>


Рабочий пример модифицирования двух файлов тремя командами:
<?xml version="1.0"?>
<!DOCTYPE modification SYSTEM "http://lsmodinstaller.maxsvargal/xml/modification">

<modification>
        <id>invite_list</id>
        <name>Хак «Invite List»</name>
        <version>1.0</version>
        <lsversion>0.3.1</lsversion>

        <file name="test.php">
                <operation>
                        <search position="replace"><![CDATA[<?php Search me! ?>]]></search>
                        <add><![CDATA[<?php
                //replace this string!
                // or kill it
?>]]></add>
                </operation>
        </file>
	<file name="test2.php">
                <operation>
                        <search position="before"><![CDATA[php Search me2!!!]]></search>
                        <add><![CDATA[<?php//add this string before?>]]></add>
                </operation>
                <operation>
                        <search position="after"><![CDATA[php Search me3!!!]]></search>
                        <add><![CDATA[//add this string after this!]]></add>
                </operation>
        </file>
</modification>


XML синтаксис не будет меняться от версии к версии.

Ну и чтобы не быть совсем многословным, сделал полностью рабочий пример хака Invite List.

Спасибо DPX-Infinity за помощь в реализации.

ps. пока не могу перенести в соответствующий блог. Как только, так сразу.

UPD1: Забыл добавить комментарии основного файла парсера parseexecution.php Обновил.
UPD2: Обновление архива с модулем и способ установки.

18 комментариев

комментарий был удален
avatar
Извиняюсь. Отпишите мне в личку почему был удален мой комментарий. Спасибо.
avatar
отпишу здесь
как уже неоднократно писал — я буду удалять первые комменты от авторов топика. Если нужно, что то дополнить — можно отредактировать топик. Оставлять коммент для поднятия топика в прямой эфире не хорошо. И еще, стал минусовать все такие топики не зависимо от их содержания. Надо же как то с этим бороться? )
avatar
Спасибо, не знал. Теперь знаю)))
avatar
О! Класс!
Спасибо за такое решение! А то давно хотелось.
avatar
Не совсем понятно к кому вы обращаетесь. Я потерялся)
avatar
Ну как. Я отвечаю на комментарий — логично, что обращаюсь к человеку, написавшему комментарий? ;)
Просто самого залюбили случаи, когда кто-то написал топик (чаще всего, с вопросом или просьбой о помощи) и тут же сам на него ответил. Лезешь под кат, глянуть, что ему ответили (и, может, самому ответ узнать интересно), а видишь малозначащий комментарий в стиле «и ещё, а то лень было топик редактировать» или даже «кто-нибудь, помогите, хелп».
avatar
Тут просто суть была в том, что в пост этого ненужно было писать… ну да ладно…
avatar
О! Ну наконец-то!
И сразу одно «но» — а нафига config/config.route.php трогать, если с таким же успехом можно просто положить свой config.route.php с нужными строками в config/modules/имя_модуля/?

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

Я уже писал что это презентация и сделано «чтоб работало» ну и основной функционал. В будущем учту про шаблон (хотя я вспоминал об этом, но не стал особо заморачиваться). Я думаю в XML будет что-то типа
<file name="templates/skin/default/header.tlp">
, либо массово копировать для каждого шаблона:
<file name="templates/skin/all/header.tlp">
Над этим я ещё подумаю.
avatar
Собственно, я в своем инсталляторе тоже использую имя темы default, которое в процессе работы заменяется на имя текущего скина
avatar
Я заметил) Кстати изначально хотел интегрировать модуль в твою панель, а потом передумал) лучше когда всё независимо работает…
avatar
Я тоже думаю, что пока лучше так. А «интеграцию» можно на уровне меню сделать. Т.е. если Админпанель определяет, что установлен твой Мод, то в меню доп. пункты появляются. С одной стороны — работают модули независимо, с другой — инструментарий админа кучкуется в одном месте.
avatar
Ога, но это уже на твоё усмотрение… А пока продолжу разработку.
avatar
Обновил config.route.php, засунул его отдельно для модуля, исправил описание установки.
avadim +1
avatar
интересное начинание, только, как мне кажется, геморройное и трудное :)
  • ort
  • +2
avatar
Почему же? Гемморойное и трудное для меня — да)) А вот на практике — создателю модификации необходимо написать достаточно простые команды в XML, а пользователю просто подцепить этот файлик и установить, так что я готов пожертвовать своим геммороем))
avatar
Прошу написать здесь за что минусуете, поможем же друг другу!)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.