LiveStreet Mod Installer v0.5 RC



v0.5.90623
— Класс полностью переписан в соответствии с логикой и идеологией модулей LiveStreet. Так же новый код более оптимизирован.
— Добавлена возможность устанавливать модификацию из ZIP архива, которая будет распакована на сервере и установлена из файла install.xml (требуется модуль PHP zlib на вашем сервере).
— Реализована возможность копирования и удаления файлов В связи с добавлением функционала работы с ZIP архивами. См. спецификацию.
— На странице «О системе» проверяется версия инсталлятора и своевременно уведомляет вас о выходе новых версий.
— Исправлена ошибка, при которой невозможно было увидеть список модификаций, если не было установлено ни одной модификации (движок выдавал критическую ошибку).
— Исправлена и обновлена локализация.
— Исправлены мелкие недочеты в обработке ошибок.
— Исправлены мелкие ошибки в шаблонах.

Установка: скопировать все файлы в корень.
Примечание: необходимо установить права на запись для папок uploads/mod/ и uploads/mod/temp/

Планируется в ближайшем будущем:
— Подключить к системе уже разрабатываемый репозиторий хаков и модулей.
— Проверить на ошибки.
— Выпустить релиз.

На сим в данной версии реализовано всё, что планировалось в далекой версии 0.1

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

Полная спецификация

ps. прошу рецензировать и проверить на ошибки, у кого есть возможность.
И еще просьба отписаться ort'а, т.к. модуль был максимально переписан согласно его пожеланиям, но я вполне мог что-то упустить из вида…

33 комментария

avatar
отпишусь :)
нет проверки на входные переменные из реквеста — можно вызвать ошибки выполнения
в SQL запросах сплошные sql injections — необходимо использовать плейсхолдеры
  • ort
  • 0
avatar
Расчет ведется на приличные SQL запросы и модификации, скаченные только у меня или репозиториев (логика linux) =))))
Но этот момент проработаю. И это всё?)))
avatar
вопрос не в этом
достаточно угнать пароль администратора и подставлять параметры руками в реквест, например, при удалении модификации
И это всё?
т.е. давать возможность похачить сайт и стянуть БД — это мало?
avatar
Я уже объяснил ситуацию.
avatar
И вообще как вы видите разбор входящего SQL массива запроса буквально по винтикам?
avatar
Пообщался со знакомыми программистами.
Пришли к выводу:
SQL запросы как таковыми являются дырой и_ничего_не_сделать.
При этом существуют команды модификации/изменения/создания файлов и было бы более логично залить шелл, чем ковырять SQL.

Далее. Я просто перечислю несколько названий: SMF, Joomla, Drupal… продолжать? Я уже не говорю про то, что я честно спиздил чуть более, чем полностью спецификацию модификаций SimpleMachines.
avatar
к чему это всё?
у тебя в коде буквально следующее: select bla from bla where bla=$_POST['bla'] — вот это и есть дыра, теперь доступно объяснил?
avatar
Да, с этим я уже разобрался. Если ты из-за этого не аппрувишь в каталоге, мне перезалить?

зы. а вообще там берутся параметры ТОЛЬКО из XML. А там всё сводится к тому, что я говорил выше.
avatar
по поводу плейсолдеров, у меня почему-то не принимало массив, капал-капал так и не докапал, буду капать ещё)
avatar
Возможно, это поможет: www.dklab.ru/lib/DbSimple/manual.html :)
avatar
«се данные берутся из ассоциативного массива.»
так и делал =( Ладна, буду капать.
avatar
слу, еще на заметку: было б логично, если б твой модуль сразу же себя и прописывал в список. а то ставишь его, смотришь список установленных — пусто. но как же пусто, если сам-то точно установлен? :)
avatar
И сам себя мог удалять? Глупо как-то))
avatar
прикольно, конечно, если будет «самоликвидация» :)
но, наверно, это перебор будет, достаточно, если просто будет в списке, но без возможности удаления

но это так — соображения
avatar
Не вижу в этом смысла)
avatar
И сделать кнопку «самоудаление»? :-)
avatar
ога, kill them all!
avatar
Не надо кАпать, лучше копАть :-))
avatar
MaxSvargal, решил освежить в памяти, чо да как твой модуль делает. С самим шаблоне все понятно. Но что-то не найду самых элементарных вещей. Вот хочу я сделать инсталляшку для модуля. Ничего модифицировать мне не надо, надо просто скопировать несколько файлов, например:
classes/actions/ActionMymod.class.php
templates/skin/default/actions/ActionMymod/index.tpl


Создаю файл mymod.xml, все там пишу, в т.ч. и копирование нужных файлов:
<copyfile name="classes/actions/ActionMymod.class.php" destination="classes/actions/ActionMymod.class.php"></copyfile>
<copyfile name="templates/skin/default/actions/ActionMymod/index.tpl" destination="templates/skin/default/actions/ActionMymod/index.tpl"></copyfile>

А дальше? Я должен исходные файлы зазиповать в mymod.zip и положить рядом с mymod.xml? Или mymod.xml тоже надо в зип? Или можно не зиповать, а просто рядом все сложить? Че со всем этим добром делать-то? Чета искал по твоим топикам — не нашел.
avatar
<copyfile name="ActionMymod.class.php" destination="classes/actions/ActionMymod.class.php"></copyfile>


ActionMymod.class.php должен быть в корне zip архива. Туда же в корень ложится xml файл с именем install.xml

Пример: files.getdropbox.com/u/931817/ls/zipinstall.zip
avatar
Да, и еще: мне кажтеся, что было б логичней разбить секцию <modification> на две подсекции. В одной — описание модуля, в другой — описание установки. Т.е. примерно так:
<modification>
  <module>
    <id>mymode</id>
    <name>MyCoolMod</name>
    ...
  </module>
  <install>
    <copyfile name="..." destination="..."></copyfile>
    <file name="...">
      ...
    </file>
    ...
  </install>
</modification>

avatar
Ммм нет. Всё логично, имхо. Да и нафига лишние телодвижения?
avatar
Да и нафига лишние телодвижения?

Чтобы отделить описание модуля от команд для его установки.
avatar
Я брал за шаблон уже существующий годами синтаксис, не вижу смысла его менять. Хотя по сути нужно исправить пять строк в одном куске кода.
avatar
Еще соображения:
1) У тя, как я погляжу, щас идет так: сначала выполняются SQL-инструкции, потом копирование файлов, потом удаление, потом другие операции с файлами. ИМХО, лучше было бы, если б все операции выполнялись в том порядке, в каком они в инсталл-файле обозначены.

2) Предложил бы дополнения к спецификации:
* тег <description> — описание модуля (щас у тя для этого, как я понимаю <readme>, но о нем ниже)
* тег <readme> — доработать слегка, добавив атрибуты continue=«text» и cancel=«text». Текст из тега обязательно выводится перед установкой модуля, с кнопками continue и cancel (если тексты для кнопок не заданы, то выводится тексты по умолчанию), и установка продолжается только если юзер кликнул continue
* тег <finalization> — текст, который выводится в случае успешной установки модуля.
avatar
Maybe. А вообще хотел переделывать систему в плане сначала проверять все инструкции, а только потом их выполнять после полной проверки и подтверждения.

Но при этом этот модуль пока мало кому интересен, поэтому пока не занимаюсь.
avatar
По поводу выполнения «попорядку» оно так и есть, по порядку…
avatar
Кстати тут абсолютно всёравно в каком порядке будут выполняться операции, т.к. они выполняются моментально буквально за секунду.

По поводу тегов — начал реализовывать. То, что уже сделано на данный момент:
v0.6.90730
— Исправлена ошибка, обрезающая большие файлы при повторной обработке файла на чтение/запись/чтение.
— Оптимизирован код.
— Изменен тип поля БД модуля version таблицы _modifications на varchar.
— Константы вынесены в файл модуля config/modules/mod/config.php
— Тег readme переименован в description, изменения внесены в спецификацию.
avatar
кстати на сайте доступна 0.5, последняя.
avatar
Т.к. это то что сделано, но ещё не выпущено.
avatar
изменения внесены в спецификацию

lsmodinstaller.maxsvargal.com/specification.html?
avatar
Я ещё туда не написал… Как выйдет 0.6, так сразу обновится спецификация.
avatar
Вот теперь написал и там :)
Твоя мечта исполнена?))
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.