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 комментария
нет проверки на входные переменные из реквеста — можно вызвать ошибки выполнения
в SQL запросах сплошные sql injections — необходимо использовать плейсхолдеры
Но этот момент проработаю. И это всё?)))
достаточно угнать пароль администратора и подставлять параметры руками в реквест, например, при удалении модификации
т.е. давать возможность похачить сайт и стянуть БД — это мало?
Пришли к выводу:
SQL запросы как таковыми являются дырой и_ничего_не_сделать.
При этом существуют команды модификации/изменения/создания файлов и было бы более логично залить шелл, чем ковырять SQL.
Далее. Я просто перечислю несколько названий: SMF, Joomla, Drupal… продолжать? Я уже не говорю про то, что я честно спиздил чуть более, чем полностью спецификацию модификаций SimpleMachines.
у тебя в коде буквально следующее: select bla from bla where bla=$_POST['bla'] — вот это и есть дыра, теперь доступно объяснил?
зы. а вообще там берутся параметры ТОЛЬКО из XML. А там всё сводится к тому, что я говорил выше.
так и делал =( Ладна, буду капать.
но, наверно, это перебор будет, достаточно, если просто будет в списке, но без возможности удаления
но это так — соображения
Создаю файл mymod.xml, все там пишу, в т.ч. и копирование нужных файлов:
А дальше? Я должен исходные файлы зазиповать в mymod.zip и положить рядом с mymod.xml? Или mymod.xml тоже надо в зип? Или можно не зиповать, а просто рядом все сложить? Че со всем этим добром делать-то? Чета искал по твоим топикам — не нашел.
ActionMymod.class.php должен быть в корне zip архива. Туда же в корень ложится xml файл с именем install.xml
Пример:
Чтобы отделить описание модуля от команд для его установки.
1) У тя, как я погляжу, щас идет так: сначала выполняются SQL-инструкции, потом копирование файлов, потом удаление, потом другие операции с файлами. ИМХО, лучше было бы, если б все операции выполнялись в том порядке, в каком они в инсталл-файле обозначены.
2) Предложил бы дополнения к спецификации:
* тег <description> — описание модуля (щас у тя для этого, как я понимаю <readme>, но о нем ниже)
* тег <readme> — доработать слегка, добавив атрибуты continue=«text» и cancel=«text». Текст из тега обязательно выводится перед установкой модуля, с кнопками continue и cancel (если тексты для кнопок не заданы, то выводится тексты по умолчанию), и установка продолжается только если юзер кликнул continue
* тег <finalization> — текст, который выводится в случае успешной установки модуля.
Но при этом этот модуль пока мало кому интересен, поэтому пока не занимаюсь.
По поводу тегов — начал реализовывать. То, что уже сделано на данный момент:
v0.6.90730
— Исправлена ошибка, обрезающая большие файлы при повторной обработке файла на чтение/запись/чтение.
— Оптимизирован код.
— Изменен тип поля БД модуля version таблицы _modifications на varchar.
— Константы вынесены в файл модуля config/modules/mod/config.php
— Тег readme переименован в description, изменения внесены в спецификацию.
Твоя мечта исполнена?))