Защита дополнений в деталях




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

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

Следом авторам платных дополнений разослали инструкцию о том, каким образом встроить подобную защиту в собственные дополнения. Стоит отметить, что с первого раза сделать по инструкции (несмотря на простоту) не получилось в силу особенностей применяемого варианта сборки пакета. Пришлось разбираться досконально и выяснять, как и что в MODX работает, чтобы сделать это “правильно” и надежно.

Прежде чем продолжить, стоит ознакомиться с специальным методом сборки пакетов – «Сборка transport-пакета без установки MODX». Инструкция написана в далеком 2015 году, однако описанный метод работает до сих пор. Отличие в том, что подход не требует установки MODX для сборки пакета, т.е. сборку запустить можно откуда угодно, имея только исходники пакета и xPDO.

Детали внутри.



Немного теории о защите

Для начала разберемся, как работает механизм защиты.

В репозитории пакетов, в нашем случае modstore.pro, когда добавляется платный компонент и туда загружается собранный архив с конкретной версией, для пакета и загруженной версии создается некий пароль. Этот пароль доступен через API. Чтобы получить пароль, в запросе передаётся email, ключ для доступа к пакетам репозитория, название пакета и версия. С помощью этого пароля при последующей сборке пакет зашифруется. После сборки зашифрованный пакет опять загружается в репозиторий, при этом просто заменяется архив, без поднятия версии. Когда пользователь будет устанавливать пакет, в момент установки этот пароль будет заново запрашиваться и содержимое элементов пакета расшифруется. Если же устанавливать такой пакет без подключения к провайдеру или без наличия оплаты для ключа, расшифровка будет невозможна.

Теперь разберемся, что же сделать, чтобы зашифровать пакет, однако перед этим разберемся, как работают пакеты в MODX в момент установки.

Как устроены пакеты MODX

Хоть с виду это кажется высшей математикой, но пакеты в MODX устроены примитивно. Главный исполняемый файл пакета – это `manifest.php`. В этом файле хранится мета-информация (список изменений, лицензия, зависимости) и массив отдельных транспортных объектов (vehicles) с инструкциями по установке и ссылками на файлы с содержимым этих объектов.

В коде MODX описано 3 типа таких объектов и каждый отличается характером поведения в момент установки и владеет дополнительными возможностями.

xPDOObjectVehicle

Стандартный и часто используемый тип. Этот тип описывает объекты MODX, которые будут созданы в системе. С помощью xPDOObjectVehicle в пакет упаковываются категории, снипеты, чанки, ресурсы и другие объекты MODX, которые наследуют класс xPDOObject.

xPDOFileVehicle

Этот тип используется реже. Тип сильно проще xPDOObjectVehicle и указывает, что файл из пакета будет помещен в указанный каталог в MODX в момент установки.

xPDOScriptVehicle

Редко востребован, но иногда полезен. Похож на xPDOFileVehicle, но вместо копирования файла исполняет файл, как PHP скрипт.

Элементы массива `manifest-vehicles` выполняются в той последовательности, в которой перечислены в этом массиве. Это крайне важно для понимания механизма внедрения защиты и мы к этому вернемся чуть позже.

Скрипт сборки

Скрипт сборки, пожалуй, неизведанная область, даже для уже состоявшихся авторов дополнений (особенно тех, кто слепо копирует modExtra и подобные решения). Сразу оговорюсь, что считаю такие инструменты полезными и экономящими время, но только если эти инструменты использовать вдумчиво и предварительно разобравшись в том, что они делают.

Скрипт сборки выполняет простую задачу – собирает необходимые элементы, упаковывает каждый в транспортный объект, записывает содержимое элементов в файлы, описывает в файле-манифесте порядок установки и архивирует в итоговый пакет.

Вот простой сборщик пакета, который при установке копирует файл robots.txt из пакета в корень сайта.

...
// создаем объект пакета
// передаем в конструктор объект xPDO
// название и версию пакета
// и путь, куда будет сохранен архив с собранным пакетом
$package = new xPDOTransport($xpdo, 'robots-1.0.0-pl', __DIR__ . '/../_pkg/');

// добавляем в пакет транспортный объект (vehicle) типа Файл 
// в массиве с параметрами описываем путь, где лежит исходный файл
// и путь, куда файл должен быть перемещен из пакета в момент установки
$package->put(new xPDOFileVehicle, [
    'vehicle_class' => xPDOFileVehicle::class,
    'object' => [
        'source' => __DIR__ . '/robots.txt',
        'target' => "return MODX_BASE_PATH;"
    ]
]);

// упаковываем пакет в архив
$package->pack()

В коде опущены инициализации переменных и подключения классов, но логика умещается в десяток строк. Разобраться не сложно.

Шифровальщик

Теперь вернемся к нашей непосредственной задаче – шифрованию. Для целей шифрования элементов пакета вместе с инструкцией представляется специальный класс – EncryptedVehicle. Сразу скажу, что класс Василия, и авторство я присваивать не собираюсь.

Класс наследует базовый класс транспортного объекта xPDOObjectVehicle и переопределяет методы `put`, `install` и `uninstall`, добавляя функции по шифрованию и расшифровке содержимого элементов. Как ключ для шифровки/дешифровки используется пароль, выдаваемый modstore.pro через специальное API.

Этот класс – это по сути четвертый тип транспортного объекта, который может использоваться для описания элементов в пакете. Таким образом, если хотим зашифровать содержимое, то при добавлении элемента в пакет используем этот класс. Вот пример:

$package->put($object, [
    'vehicle_class' => EncryptedVehicle::class,
    ...
]);

Будьте внимательны, зашифровать можно только объекты MODX, потому что `EncryptedVehicle` наследует `xPDOObjectVehicle`, файлы и скрипты, добавленные через классы `xPDOFileVehicle` и `xPDOScriptVehicle` останутся без шифрования.

Получение пароля для шифровальщика

Отдельно стоит описать получение пароля для шифровальщика со стороны modstore.pro. Дело в том, что в инструкции описывается способ, который использует код из MODX, что в моем случае не подходит, так как пакет собирается только с использованием xPDO, без установки и использования кода MODX.

Чтобы получить пароль, требуется на адрес `https://modstore.pro/extras/package/encode` отправить запрос POST с информацией о пакете и токенами авторизации. Опытным путем был получен минимальный список параметров, которые требуется отправлять в репозиторий для получения пакета:

$this->params = [
    'api_key' => '1h54gdtrr354',
    'username' => 'ivan@klimchuk.com',
    'http_host' => 'alroniks.com',
    'package' => 'foobar',
    'version' => '1.0.0-pl',
    'vehicle_version' => '2.0.0'
];

В ответ на запрос придет ответ с ошибкой, если информация не верная, или с паролем. Запросы отправляются и приходят в ответ в формате XML, так что стоит так же позаботиться о конвертации этого формата. В случае, когда используется код MODX, это уже реализовано.

Когда пароль получен, требуется в скрипте сборки, перед первым использованием класса-шифровальщика, добавить константу `PKG_ENCODE_KEY`, которой присвоить полученный пароль. Эта константа будет использоваться в дальнейшем при шифровании элементов пакета.

define('PKG_ENCODE_KEY', $keyRequester->getKey());

Ссылка на полные примеры кода с подробными пояснениями в конце заметки.

Порядок действий

При наличии пароля зашифровать пакет легко, стоит просто указать в поле vehicle_class класс EncryptedVehicle. А вот правильная работа зашифрованного пакета при установке или обновлении зависит от соблюдения порядка выполнения действий в пакете. Как я уже говорил, действия в пакете выполняются в том порядке, в котором описаны в манифесте.

При попытке установить транспортный объект, MODX по имени класса типа объекта найдет у себя описание этого типа, создаст объект и выполнит метод `install` этого объекта. В случае трех встроенных типов проблем не возникнет, так как эти типы описаны в виде классов в xPDO. А вот в случае EncryptedVehicle получим ошибку, что такого класса нет. Чтобы это исправить, перед установкой элементов из пакета нужно этот класс добавить в MODX и загрузить.

В начале добавим файл с нашим классом в пакет через тип xPDOFileVehicle, а при установке файл будет скопирован в каталог нашего дополнения:

$package->put(new xPDOFileVehicle, [
    'vehicle_class' => 'xPDOFileVehicle',
    'object' => [
        'source' => 'encryptedvehicle.class.php',
        'target' => "return MODX_CORE_PATH . 'components/ourcomponent/';"
    ]
]);

Для MODX 2 версии важно, чтобы имя файла было в нижнем регистре и постфиксом class, иначе класс не будет найден загрузчиком классов MODX.

Затем при установке нужно класс из файла загрузить в MODX, иначе в системе будет болтаться бесполезный файл. Загрузку класса будем делать через скрипт на PHP:

$transport->xpdo->loadClass('transport.xPDOObjectVehicle', XPDO_CORE_PATH, true, true);
$transport->xpdo->loadClass('EncryptedVehicle', MODX_CORE_PATH . 'components/' . strtolower($transport->name) . '/', true, true);

А сам скрипт загрузим в пакет через тип xPDOScriptVehicle:

$package->put(new xPDOScriptVehicle, [
    'vehicle_class' => 'xPDOScriptVehicle',
    'object' => [
        'source' => 'resolve.encryption.php'
    ]
]);

За ними в пакет будут загружаться остальные элементы с уже зашифрованным содержимым. Вот тут и понадобится соблюдение порядка в манифесте и возможности дополнительных типов транспортных объектов. Файловый и скриптовый типы не шифруются, и выполнятся первыми, значит на момент установки зашифрованного объекта класса EncryptedVehicle, необходимый PHP класс уже будет загружен в MODX и доступен для использования.

Этот порядок требуется соблюдать в скрипте сборки, чтобы обеспечить правильную работу установщика. В каком порядке добавлять остальные элементы решайте самостоятельно.

Подводя итог

Подведем итог теории и кратко по шагам опишем действия, которые требуется выполнить, чтобы “защитить” свой пакет от посягательств.

  • Добавить код получения пароля из modstore.pro в файл со скриптом сборки пакета. Используйте мой вариант, либо смотрите в оригинальной инструкции, где используется код из MODX.
  • Скопировать файл с классом EncryptedVehicle к себе в пакет куда угодно в папку _build.
  • В скрипте сборки в начале, после создания транспортного пакета, добавить транспортный объект типа xPDOFileVehicle с классом-шифровальщиком.
  • Следом добавить транспортный объект типа xPDOScriptVehicle со скриптом, который этот класс зарегистрирует.
  • Добавить собственные элементы, которые нужны в пакете и собрать пакет.

Что делать с modExtra

В первую очередь разобраться, как устроен скрипт сборки в этом компоненте. Код написан в виде класса, где функции логически и наглядно распределены по методам. Единственное различие, что для создания пакета используется функция `createPackage`, а для добавления транспортного объекта в пакет используется функция `putVehicle`. Найдите места, где эти функции используются и добавьте по примерам собственные объекты в пакет.

Для облегчения понимания механизма работы я приготовил пример простого и в меру бесполезного компонента FooBar (при установке создает одну системную настройку), где приведены файлы с подробными комментариями и пример распакованного архива компонента.

Надеюсь материал полезен.

01 мая 2018, 01:41    Иван Климчук   G+  
11    1153 +15


Комментарии ()

  1. Сергей Шлоков 01 мая 2018, 06:48 # +7
    До сих пор нет ясности, что же всё-таки мы продаём — компонент или техподдержку. В предыдущих обсуждениях остановились на том, что продаётся техподдержка на год.

    По поводу защиты не стал заморачиваться. Ничто не мешает скупому, неблагодарному, бессовестному, беспринципному и наглому разработчику вместо пакета скопировать исходники с сайта-донора. Мы же помним, как такие разработчики собирали пакеты платных дополнений Василия с Гитхаба. Да, чуть сложнее. Но это вряд ли их остановит.
    1. Василий Наумкин 01 мая 2018, 09:19 # +1
      Как продавали поддержку, так и продаём — никаких лицензий и преследований за их нарушение нет.
      Но почему-бы не усложнить немного жизнь непорядочным разработчикам сайтов, которые зарабатывают на твоём труде?

      Я полгода собираю статистику по использованию своих дополнений.
      На данный момент, в списке 2102 случая использования моих 3 пакетов без покупки в modstore.pro. Это те, которые использовались хотя-бы 1 раз за последний месяц (30 дней).

      Когда видишь такие числа, а потом читаешь в телеграмчике, какие ребята умные-красивые и как грамотно взяли деньги с заказчика, и установили ему пакет из своей коллекции — хочется немного щёлкнуть им по носу.

      Своровать можно что угодно, вопрос только в том, стоят ли эти усилия стоимости дополнения.
      1. Stan Ezersky 01 мая 2018, 11:16 # 0
        Есть и другая сторона.

        У меня заказывают сайт, я должен продемонстрировать возможности функционала, к примеру самые-самые — mSearch2, Office. Я ставлю древний работающий пакет только для того, чтобы продемонстрировать работу (я не продаю его). Если заказчика всё устраивает, в дальнейшем этот пакет покупается на уже боевом хостинге.

        Я не буду сломя голову бросаться и покупать за свой счёт нужные компоненты только для демонстрации по причинам:
        Заказчики бывают недобросовестные. Сайт сделал, а денег нет, потом. Это потом обычно заканчивается удалением сайта.
        Заказчику, как оказалось, не нужен предлагаемый функционал, а нужно что-то другое. да, конечно же покупку можно вернуть.

        Тут вопрос не в построении отношений с с заказчиком.

        Да, есть же тестовый период. Но тестового суточного периода — мало, ведь заказчик может посмотреть ссылку и через сутки и через неделю. А каждый день разворачивать новый сайт, простите, это время.

        Очень много таких моментов. Прошу понять правильно. Это не халява. Я не считаю, что 1999 руб. за аддон это много, тем более с моими скидками в магазине. Это необходимость не тратить лишнего. Да, можно купить, отправить на другой домен в дальнейшем, но это потеря техподдержки на месяц-два.

        Мы с Леонидом разговаривали, он обещал рассмотреть вопрос о продлении тестового периода.

        1. Иван Климчук 01 мая 2018, 11:30 # +2
          Я тоже на эту тему как-то общался. Можно даже не продлевать срок тестирования, но можно добавить возможность тестовый сайт бекапить и в случае необходимости восстанавливать все в тот же тестовый период. Сейчас тестовый сайт можно только скачать себе (без платных допов) и где-то потом развернуть.
          А было бы удобно сделать тестовый сайт, показать заказчику, если он пока не может смотреть, сделать снепшот и выключить до лучших времен. Если не используется долше неделе (обсуждаемо), удалять как обычный тестовый. Можно даже за симолическую плату.
          1. Василий Наумкин 01 мая 2018, 11:31 # +2
            я должен продемонстрировать возможности функционала
            Я так понимаю, выполненных проектов, где эти дополнения реально работают — у тебя нет?

            Ну и купить лично для себя нужные дополнения, чтобы показывать их заказчикам на своём сайте круглый год — это неподъёмная сумма для разработчика? Смешно.

            Заказчики бывают недобросовестные. Сайт сделал, а денег нет, потом. Это потом обычно заканчивается удалением сайта.
            Ну а разработчик дополнения при чём? Делаешь сброс ключа и используешь в следующем проекте.

            Я ставлю древний работающий пакет только для того, чтобы продемонстрировать работу (я не продаю его)
            Я отслеживаю статистику по используемым дополнениям за последние 30 дней. Выглядит это примерно так:

            Как только дополнение покупается для домена — он из этого списка пропадает. Если не покупается, то так и висит, пока используется.

            2001 пункт в этом списке прямо сейчас. Как видно по первой проверке, это реально работающие дополнения, а не «просто посмотреть».
            1. Stan Ezersky 01 мая 2018, 11:45 # -1
              Я так понимаю, выполненных проектов, где эти дополнения реально работают — у тебя нет?
              Выполненные проекты есть, все с купленными ключами. Но демонстрировалось всё на копированных.

              Если ты имеешь в виду показать заказчикам чужой сайт, это сложно. Я не могу показать админку, в которой видны продажи, магазин магазину рознь — все хотят посмотреть «примерно свой контент». То есть, «как там или как тут» — не выйдет.

              Ну а разработчик дополнения при чём? Делаешь сброс ключа и используешь в следующем проекте.
              И теряю техподдержку по времени.

              Ну и купить лично для себя нужные дополнения, чтобы показывать их заказчикам на своём сайте круглый год — это неподъёмная сумма для разработчика? Смешно.
              А если в разработке минимум 2 сайта?
              1. Василий Наумкин 01 мая 2018, 11:51 # +1
                все хотят посмотреть «примерно свой контент»
                Какие-то сказки начались. Какая нафиг админка с продажами у mSearch2, Office и ms2Gallery?

                Это при том, что вход в админку открыт на minishop2.com, а Office и mSearch2 работают прямо на самом modstore.pro

                Еще раз — не нужно свои проблемы и риски перекладывать на разработчика дополнений.
            2. Hiddenski 01 мая 2018, 12:44 # +1
              У меня прямо сейчас такая же проблема с тестовым периодом.
              Нужно потестить mSync. Узнать — подходит ли он вообще или нет. Взять не откуда, только на Modhost. Но там 1 день для тестов. Придется заморачиваться с бекапами, т.к. пока свяжешься с заказчиком, с его 1С-ником и т.д.
              1. Владимир 01 мая 2018, 13:27 # +3
                субдомен dev. же позволяет использовать существующий ключ для тестового сайта, удобно, и тем более, можно использовать несколько ключей для одной установки и даже несколько субдоменов dev. (от разных доменов). Т.е. продемонстрировать кому -то что то с платными расширениями в общем -то не вопрос.
                PS для меня не было очевидно, что можно использовать несколько ключей для одного и того же поставщика, пока Василий не ткнул в это :)

              2. Сергей Шлоков 01 мая 2018, 11:28 # +5
                Как продавали поддержку, так и продаём
                В положении магазина дополнений modStore по этому поводу ничего не сказано. А в «Вопросах» отвечают, что продаётся дополнение.
                А если продается техподдержка, а не лицензия, то почему нельзя использовать дополнение без техподдержки. В чём непорядочность разработчиков-неплатильщиков в юридическом смысле? Нигде же не сказано про обязательность техподдержки. И получается, что ты усложняешь жизнь разработчикам, которые формально ничего не нарушили. Они за техподдержку не платили — они её не получают.

                Это вопрос скорее к ребятам из MODSTORE. Я как автор платных дополнений заинтересован в четких правилах, повышающих мои права и продажи.
                1. Василий Наумкин 01 мая 2018, 11:34 # +1
                  Они за техподдержку не платили — они её не получают.
                  А дополнение они моё где взяли, если я распространяю их только через modstore.pro?

                  В обход магазина? Ну так и устанавливайте как хотите, это не моя проблема.

                  1. Сергей Шлоков 01 мая 2018, 11:41 # +3
                    Согласен! Но вопрос с техподдержкой всё-таки нужно как-то уточнить в положениях магазина.

                    П.С. Только что ради эксперимента поставил Office на локалку. Потратил 2 минуты.
                    1. Василий Наумкин 01 мая 2018, 11:46 # -5
                      Что именно тебе нужно уточнить?

                      Покупка даёт право на ТП в течение года. Нужно продлить — покупаешь еще раз со скидкой 10%, всё это давно прописано.

                      Только что ради эксперимента поставил Office на локалку. Потратил 2 минуты.
                      Ну я прям несказанно за тебя рад. Теперь напиши инструкцию по обходу — и я начну использовать ionCube, всем будет только веселее, правда?
                      1. Сергей Шлоков 01 мая 2018, 12:37 # +5
                        всё это давно прописано.
                        Ткни пальцем, просвяти нас немытых.

                        Ну я прям несказанно за тебя рад. Теперь напиши инструкцию по обходу — и я начну использовать ionCube, всем будет только веселее, правда?
                        Ты вообще что-ль нормально разучился разговаривать? Ничего мне не нужно уточнять, успокойся.
                        1. Василий Наумкин 01 мая 2018, 12:46 # -5
                          Ткни пальцем, просвяти нас немытых.
                          modstore.pro/help#help/3

                          Но вопрос с техподдержкой всё-таки нужно как-то уточнить
                          Ничего мне не нужно уточнять, успокойся.
                          Ты уж определись, кто тут разучился нормально разговаривать.
            3. Алексей 01 мая 2018, 08:43 # -1
              Давно есть закрытые группы в телеграмме «халявщиков» которые складчиной покупают компоненты, что не есть хорошо. Философия с техподдержкой радовала больше. Думаю защита не решит вопросы с баблом, будет рост на небольшой процент. У нас «есть» хороший раздел (работа), его бы привести в порядок, а то страдают как клиенты так и исполнители. Реализовать безопасную сделку, да думаю самое то, вот Вам и повышение прибыли.
              Сделать привязку регистрацию только по телефону, а то есть у нас кадр который по 10 аккаунтов имеет и кидает клиентов, и ему как то побоку комментарии и карма.
              1. Василий Наумкин 01 мая 2018, 09:29 # +4
                Обожаю вот эти «думаю».

                После закрытия исходников дополнений, продажи выросли в 2 раза — и мой код из них перестали копировать в другие дополнения. Это позволило оставить всего 3 платных дополнения из 14 (!). Остальные или переехали другим авторам (3 штуки), или стали вовсе бесплатными (8 штук) с открытыми исходниками.

                А после добавления защиты, продажи выросли еще в 1.5 раза, что позволило не поднимать на них цену. На всякий случай — mSearch2 продаётся за 1990 рублей с 2013 года. То есть, уже 5 лет по одной цене, не смотря на скачки курса валют и прочие санкции.

                Если защита усложнит жизнь халявщикам — я буду только рад. Главное, что она не усложнила жизнь добросовестным покупателям, они просто не заметили разницы.
              2. Алексей 01 мая 2018, 09:37 # +1
                Василий Вам виднее, у меня вопрос, будите делать что то с разделом работы?
                1. Василий Наумкин 01 мая 2018, 09:46 # 0
                  Деньги через сообщество точно проходить не будут — мне лишние разборки с налоговой ни к чему.

                  А удобство планирую улучшить, но только в новой версии.
                2. Антон 01 мая 2018, 10:28 # -14
                  Первый шаг к смерти MODxa…
                  Осталось начать продавать сам MODx.

                  Но все, что ни делается — все к лучшему. Умрет MODx — родятся новые.
                  1. Иван Климчук 01 мая 2018, 10:34 # +5
                    К чему эти выпады? Магазин дополнений работает уже почти 5 лет и как-то все довольны и покупают дополнения и поддержку. Или вы из тех самых халявщиков, которые взгрустнули?
                    1. Антон 01 мая 2018, 11:25 # -1
                      Я не продал ни одного сайта, но использовал приложения на нескольких своих сайтах.
                      Но причем тут я? Речь идет про MODx
                      Изначально MODx создавался для халявщиков.
                      Изучение MODx все начинают со сдирания шаблона с любого понравившегося сайта, а потом выясняется что и сам MODx абсолютно свободный, любой человек может делать с ним все, что захочет, читаем про GNU GPL2.
                      Василий уже прочитал, поэтому он продает не пакеты, а техподдержку.
                      Как можно привязать пакеты и техподдержку к конкретному сайту я не понимаю. Технически это реализовать невозможно, т.к. любой сайт имеет возможность сменить как местоположение, установить пакет, а потом вернуться обратно, так и домен, перекидывается туда-обратно за пару часов. Логики тоже нет, если мне разжевали как установить пакет на одном сайте, то на другом сайте это уже легко повторить, никто не будет 2 раза одни и те же вопросы задавать.
                      1. Pavel Zarubin 01 мая 2018, 13:50 # +5
                        Это шаг не к смерти MODX, а к развитию, никто не будет писать офигенные дополнения за бесплатно, те же статьи на modxpro многие пишут для самопиара, а чтобы был смысл в самопиаре в той или иной технологии — там должны крутиться деньги
                        P.s. я тоже пишу статьи только для самопиара или ты думаешь тут все святые и за просто так делятся знаниями?
                    2. Stan Ezersky 01 мая 2018, 10:59 # +1
                      Магазины дополнений и модулей есть для абсолютно всех opensource систем, причём тут смерть MODX?

                      Не нравится MODX, уходите на OctoberCMS, удивитесь ценам на платные аддоны.
                      1. Антон 01 мая 2018, 11:40 # -9
                        Вы тот единственный в мире кто ПРОДАЕТ бесплатые MODX Revo и miniShop2?
                        Продает не услуги по установке, настройке, раскрутке итд, а просто пакеты MODX Revo и miniShop2.
                        Один из 400 сравнительно честных способов отъема денег у населения.
                        1. Stan Ezersky 01 мая 2018, 11:48 # 0
                          Пресс-релизы внимательно читайте, в которых сказано, что это настроенные сайты с дополнительным функционалом.
                          1. Антон 01 мая 2018, 11:56 # -4
                            я должен продемонстрировать возможности функционала
                            Я так понимаю, выполненных проектов, где эти дополнения реально работают — у тебя нет?
                            Сдается мне, что это конкретно из-за вас Василий начал резать сук на котором сидит.
                            1. Stan Ezersky 01 мая 2018, 12:05 # 0
                              На эти проекты Василий предоставил ключи, тем более, что это демонстрация и реклама этих самых дополнений на стороннем ресурсе. На остальных стоят очень старые пакеты. И ставились они в том время, когда они были доступны на Github по формулировке — кому не нужна техподдержка, могут ставить с Github.
                              1. Василий Наумкин 01 мая 2018, 12:26 # 0
                                На остальных стоят очень старые пакеты.
                                И эти пакеты не отображаются в моей статистике.
                              2. Василий Наумкин 01 мая 2018, 12:28 # +3
                                Василий начал резать сук на котором сидит
                                Ну откуда тебе знать, на каком суку я сижу?

                                Ты мой семейный бюджет видишь? Сколько я зарабатываю на дополнениях, сколько на хостинге и сколько в других местах? Какие у меня договора, с кем и на что?

                                Перестань уже позориться.
                      2. Виталий Барышников 01 мая 2018, 11:31 # +3
                        Эх ребята… Признаюсь, я копировал купленные мной компоненты, но копировал для себя же, т.е. не зарабатывал на этом совсем. Сделал для себя два сайта, как хобби (хотелось себе блог и портфолио сделать), периодически допиливаю, тренируюсь на них. На один сайт я купил одни компоненты, на другой — другие. И копировал между ними пакеты по надобности, типа mSearch2 или ms2Gallery. Поддержку не мучаю, форумчан тоже, никому не разрабатываю сайты на modx, да и вообще уже не разрабатываю. Мне теперь покупать себе по два раза компоненты или есть какой-то индивидуальный выход?
                        1. Иван Климчук 01 мая 2018, 11:38 # 0
                          Всегда, с самого начала работы магазина было правило — один пакет на один сайт. Дается одна попытка самостоятельно сбросить привязку ключа, когда переносится с рабочей копии на продакшен. Дальше тоже возможно, но уже после пояснения, почему это необходимо. А то, что вы пользовались лазейкой, не отменяет правил, которые были озвучены в начале. Лазейка теперь прикрыта. И спасибо нужно сказать тем недобросовестным, кто ее эксплуатировал с целью обогащения.

                          1. Виталий Барышников 01 мая 2018, 11:43 # 0
                            Жаль, а недобросовестных нельзя вычислить так сказать по «сигнатуре»? Например: Если зарегал несколько сайтов и получил несколько ключей, поставил минишоп, купил по одному дополнения, но не покупает больше дополнения, то… вывод…
                            1. Иван Климчук 01 мая 2018, 11:44 # -1
                              Лечить симптомы, но не болезнь?
                              1. Виталий Барышников 01 мая 2018, 11:50 # 0
                                Ну типа да, но я понимаю, что это геморно и заниматься этим никто не будет…
                                1. Алексей Бгатов 01 мая 2018, 12:51 # -1
                                  помимо того, что это геморно, это еще и бредово. Кто сказал, что на всех сайтах нужны платные дополнения, тем более одни и те же?
                          2. Василий Наумкин 01 мая 2018, 11:42 # +6
                            Пользуйся старыми версиями, зачем тебе самые новые?

                            Вот эти рассказы про «я не продаю» — мне не интересны, у меня есть статистика и я вижу, что люди используют мои дополнения в коммерческих проектах, зарабатывая деньги. Почему меня должны заботить их интересы, скажите пожалуйста?

                            Почему никого не заботят мои интересы? Неужели непонятно, что когда автора эта ситуация окончательно достанет — он просто плюнет, и перестанет продавать и поддерживать свои дополнения. Кому-то станет лучше от этого?

                            Есть полно бесплатных дополнений, но почему-то всем нравится использовать именно платные. Может потому, что они лучше качеством? А почему? Да потому что платные. Ну сложите уже 2 + 2.
                            1. Виталий Барышников 01 мая 2018, 11:47 # 0
                              Прекрасно понимаю. Я согласен за старые дополнения, лишь бы они были совместимы с другими обновлениями и дополнениями. Всё отлично работает, спасибо Василий, за работу.
                              1. Антон 01 мая 2018, 12:15 # -8
                                Василий, вы и MODx сейчас находятся в самом начале своего развития, я верю в вас.

                                Почему Микрософт и 1с стали первыми? Только из-за умелого управления бесплатностью своих программ.
                                Они же прекрасно видели что их продукты воруют, но ничего не делали. Намного важнее захватить большую долю рынка, чем постоянно гоняться за копейками, которые всегда так и останутся копейками, если за ними гоняться. Ну сложите уже 2 + 2.

                                И проказник Stan Ezersky воруя сегодня, делает хорошую работу по продвижению платных продуктов завтра. Большинство созданных им сайтов сдохнет, но те, кто выживут, потом купят техподдержку у вас, а не в октоберсмс.

                                1. Василий Наумкин 01 мая 2018, 12:23 # +5
                                  Вот моё первое дополнение на Хабре, еще для Evolution — 2011 год.

                                  И несмотря на то, что я начал писать дополнения еще 7 лет назад, обязательно каждый раз найдётся какой-нибудь непрошеный аноним, который будет давать мне советы, как нужно правильно.

                                  Ведь он гораздо лучше меня всё знает: у него больше опыта, он видит статистику магазина и хостинга, знает ситуацию по развитию MODX изнутри — куда мне до него?

                                  Спасибо, чувак, приму к сведению!
                                  1. Антон 01 мая 2018, 12:51 # -7
                                    Ок, все молчу, я же непрошеный аноним, поэтому ничего не понимаю.
                                    Продолжайте дальнейшую борьбу с новичками, пусть их будет меньше.
                                    И пусть будет больше «бизнесменов» типа Стана, им не составит труда выдрать платные пакеты, а цена их услуг возрастет.
                                    1. Иван Климчук 01 мая 2018, 12:55 # +5
                                      Вам же уже ответили, что сборки, который предлагает Стан, согласованы и одобрены заранее магазином. Как опять, не разбираясь в вопросе, вы лезете с «полезными» советами. Покажите опыт, тогда с вами можно будет считаться. Пока что вы голословный диванный аналитик, а их советы ценятся мало, извините.
                                      1. Stan Ezersky 01 мая 2018, 13:53 # +4
                                        Для особо умных и внимательных:



                                        Ещё



                                        Что я откуда выдираю, хотелось бы конкретных примеров? Иначе, уж простите, это называется пи*дабольство и чесание языком.

                                        UPD:



                                    2. Иван Климчук 01 мая 2018, 12:52 # +2
                                      Василий, вы и MODx сейчас находятся в самом начале своего развития, я верю в вас.
                                      Хоть бы википедию для приличия открыли бы. MODX, включая обе ветки, уже почти 15 лет на рынке. Платные дополнения для него — около 5. И все прекрасно развивается. И где вы увидели у MS бесплатность? Windows всю жизнь продается за деньги, и там, где у MS дотягиваются руки (а не потому что нет желания), за пиратство она нещадно наказывает.
                                      1. Stan Ezersky 01 мая 2018, 13:38 # 0
                                        Хм, а я что-то ворую? Хотелось бы конкретики
                                      2. Stan Ezersky 01 мая 2018, 13:47 # 0
                                        Пользуйся старыми версиями, зачем тебе самые новые?
                                        Хоть реплика и не мне, но вот это я и уточнял: продемонстрировал заказчику на старой версии, потом купил новую, актуальную.

                                        У меня более вопросов нет. Спасибо!

                                        Заказчики, мой дорогой человек, люди разные и подход ко всем неоднозначный. Есть те, которым сразу купил много пакетов «про запас и на будущее» и не ломаешь голову, а есть капризные, которым нужна демонстрация своего контента. И к сожалению, последних больше.
                                        1. Василий Наумкин 01 мая 2018, 13:54 # 0
                                          Заказчики, мой дорогой человек, люди разные
                                          Действительно, откуда же мне знать про заказчиков.

                                          Хорошо хоть добрые люди из сообщества расскажут, а то так бы и помер дураком.
                                      3. Вася 01 мая 2018, 22:37 # 0
                                        Виталий: )
                                        Звучит это так «Признаюсь я украл машину, но я на ней таксую это так хобби я просто катаюсь на ней»
                                        И еще забавно, что вы считаете себя при этом добросовестным и честнее тех, кто зарабатывает на этом, а на самом деле одно и то же вы на халяву пользуйтесь чужим трудом: )

                                        За хобби люди часто платят огромные деньги например хорошая резиновая лодка стоит тысяч 100
                                        1. Pavel Zarubin 01 мая 2018, 23:44 # +1
                                          +ую) У меня хобби — электроника, но я для него почему то покупаю детали, а не иду разбирать чужую электронику на составляющие оправдываясь тем, что «ну я же для себя, не для продажи» xD
                                          1. Виталий Барышников 02 мая 2018, 03:58 # -4
                                            Я торжественно обещаю покупать дополнения только в том случае, если я на их использовании вдруг начну зарабатывать (сайт раскрутится или ещё как-то), а так я покупаю дополнение, но это ещё не факт того что оно полностью решает мою задачу, и решит вообще. С машиной не надо сравнивать, дополнение не имеет износа и что-то с ней дополнительно не нужно делать.
                                            Вот сейчас, например, я решил попробовать сделать нечто коммерческое, опять же для себя, но не знаю смогу ли закончить сам и что в итоге получится и когда это получится. И мне конечно же сейчас совсем не интересно тратить деньги, но я согласен «занести» их, если что-то реально удастся заработать. Уж поверьте на слово я благодарный человек.
                                            Просто когда ты не мегаджедайский кодер, но очень хочется что-то попробовать самому сделать, то очень сложно понять получится или нет, а закупаться каждый раз для каждой идеи — не разумно.
                                            1. Михаил 02 мая 2018, 04:48 # +5
                                              Логика халявщика явно. Если тебе нужен инструмент, то ты либо его делаешь сам, либо делает кто то другой и дает тебе. Но если этот кто то другой тебе его продает, то ты же не забираешь бесплатно только потому, что ты не имеешь с этого денег. Поэтому, если продукт платный, ты оплачиваешь в любом случае, для себя берешь или для кого то.
                                              1. Виталий Барышников 02 мая 2018, 07:01 # 0
                                                Если мне кто-то делает, то я ему плачу и знаю, что мне потом туда лезть не нужно и я человека сам могу попросить что-то исправить/допилить.
                                                Меня не правильно поняли. Я клонил к тому, что есть коммерческие юзеры, а есть комюнити-пионеры. Не нужно прям бесплатно, я уважаю труд и готов платить, но мне кажется, что нужно разделять людей, которые учатся и осваиваются (делают себе сайты, блоги, портфолио) и тех у кого разработка на потоке.
                                                Что-то типа двух версий что ли, как продают софт или свои услуги сервисы. Для личного использования — дешевле, для коммерческого — дороже. Ну просто фигня какая-то вот студия допустим пилит магазин и им ничего не стоит 5000р. потратить, когда им магаз за 200000р. заказали, или ты сам себе решил блог сделать и тебе хочется поиск, галерею и ещё каких-то примочек.
                                                1. Михаил 02 мая 2018, 07:05 # -1
                                                  Ну почему же не верно понял. Есть цена дополнения, продукта, в которую разработчик включил свою работу. И не важно кто берет, ученик или крупная контора. Зачем мне считать деньги покупателя, если мои деньги никто не считает? да и как разделять людей? тесты проводить?
                                                  1. Виталий Барышников 02 мая 2018, 07:16 # 0
                                                    Ладно, я попытался убедить, не вышло) У меня всего-то два сайта, и больше не планируется, а я почему-то стою на защите плохих ребят) Про разделение можно подумать, ведь в системе видно кто что делает, сколько у кого сайтов, сколько дополнений, статистика есть. Это я так, просто озвучил свои мысли, не навязываю.
                                                  2. Иван Климчук 02 мая 2018, 08:44 # +2
                                                    А почему личный проект (блог, портфолио) это не коммерческий продукт? Он, возможно, не приносит денег напрямую, но может являться инструментом для косвенного заработка (находят посты в блоге, потом находят вас и просят помочь за деньги по теме поста). Авторам дополнений что, бегать за каждым и следить? Для того, чтобы попробовать инструмент и научиться, как вы говорите, есть возможность устанавливать, в том числе, и платные компоненты, на сайты в разработке (с доменами .dev и тому подобное). Но платные компоненты не просто так стали платными. В них было вложено значительное количество сил и времени, при этом рабочего времени. Для вас платить как бы не за что, вы же только для себя, в свободное время их используете, это для вас хобби, а автор в это время мог бы заработать денег, выполняя свою обычную работу, а не оплачивая ваши «развлечения», разрабатывая компонент.
                                                    Поставьте себя на место автора дополнения или книги и посмотрите на ситуацию с другой стороны, а не мерьте все на себя.
                                                    1. Виталий Барышников 02 мая 2018, 11:40 # +1
                                                      Про .dev не знал, это очень хорошая для меня новость, раньше я пробовал на тестовом сервере на модхосте, но он по времени «сгорал». Из комментариев все мнения стали понятны, спасибо, заведу копилку «на компоненты для modx».
                                                    2. Pavel Zarubin 02 мая 2018, 15:55 # +1
                                                      Логика просто прекрасная! А почему я или любой другой разработчик должен вкладываться в твое обучение? Сейчас просто за информацию деньги берут, а ты готовый софт хочешь бесплатно получать для своего обучения))
                                                      Ты конечно можешь сказать что у разработчика не убудет от того, что кто-то украдет «для хобби», но вот тебе другая сторона медали: разработчик делает дополнение и рассчитывает выручить с него допустим 50к за 3 месяца, но тут набегают 10-20 таких как ты и просто ломают все продажи, в итоге разработчик разочаровывается в магазине и таком способе заработка и больше не выкладывает свои наработки — а значит сообщество начинает умирать.
                                                      Если ты считаешь что для того чтобы выложить дополнение достаточно просто свои наработки у клиента забрать — ты очень ошибаешься, для того чтобы выложить компонент иногда требуется потратить времени на оформление больше, чем писать этот компонент. Я лично если предполагаю что дополнение не окупит даже труды на оформление — не выкладываю его, а таких дополнений уже скопилась стопка и немного сверху.
                                                      Да и будем честны, платные в основном только дополнения для магазинов, ты делаешь магазины ради хобби? Очень сомневаюсь. А для обучения (разбора кода и кишков) есть множество других сложных бесплатных дополнений, к примеру minishop2 или migx (сам частенько в них заглядываю)
                                                      1. Виталий Барышников 02 мая 2018, 17:17 # +1
                                                        Да я уже понял) Я про то что платить надо, но комерсы должны платить больше, любители — меньше (а когда убедятся что это реально то что нужно, то и полную цену), и любители должны ограничения по количеству установок просто иметь, на пример две.
                                                        Я использую Платные mSearch (ито фильтр мне не нужен) и ms2Gallery, mSocial, Office купил все, магазина у меня нет. Есть у меня и купленные дополнения, которые я даже не использовал, т.к. показалось, что функционал мой, а оказалось немного не тот.
                                                        Ещё раз, я согласен платить, но сначала хочется компонент установить на СВОЙ сайт, настроить, попользоваться, понять, что он реально нужен и действительно решает мою задачу и что мне будет действительно жаль его удалять, и тогда совсем не жалко будет его купить.
                                                        Я понимаю, что я тут утопию нарисовал, но я думаю, что так было бы good.
                                                        1. Илья Уткин 02 мая 2018, 20:48 # +7
                                                          А я считаю, что для коммерческого использования продавать нужно по сниженной цене. Ведь студия делает много сайтов и будет покупать дополнение много раз. Мне выгоднее продать дополнение 3 раза по 500 рублей, чем один раз, но за 1000. Кроме того, студия обратится в техподдержку максимум один раз — потом вопросов по использованию уже не будет (а может и вообще не обратится, так как там работают профессионалы). А человек, который только учится, задаст тысячу вопросов, и я потрачу на него много своего рабочего времени.

                                                          Кстати, студии и так покупают дешевле — в modstore действует прогрессивная система скидок.
                                            2. Pavel Zarubin 01 мая 2018, 13:59 # +6
                                              Ребят, если вы недовольны защитой на платные дополнения в чем проблема самим написать аналог и распространять бесплатно? Возможно проблема именно в том, что труды по написанию своих аналогов не стоят ни каких 500р и даже 5к? Я к примеру сейчас работаю со студией у которых на большенство платных дополнений есть СВОИ аналоги, потому что они делают по 10-20 сайтов в месяц и трудозатраты себя окупают. Думаю так не только в этой студии. А если не хватает мозгов написать свой аналог, так платите либо обучайтесь, в чем проблемы то. Большинство разрабов платных дополнений и так не мало сделали для сообщества абсолютно бесплтано, да и modx — не битрикс, тут все очень дешево
                                              1. Stan Ezersky 01 мая 2018, 14:04 # 0
                                                Да тут нет недовольства, разве что переход на личности, как же без него.
                                              2. Иван Климчук 01 мая 2018, 22:40 # +8
                                                Самое любопытное, что развели холивар, а по теме поста и тому, как работают пакеты в MODX никто ничего не спрашиват. Неужели все всё знают? Если почитать в чатах, так только такие статьи и просят, с пояснениями как что в MODX устроено и работает.
                                                1. Pavel Zarubin 01 мая 2018, 23:46 # +2
                                                  Те кто просят — те просто не отписываются, спасибо большое за статью, очень много полезного почерпнул для себя и добавил в избранное :)
                                                  Просто ты за живое задел тут многих)
                                                  1. Сергей Шлоков 02 мая 2018, 13:16 # 0
                                                    Статья познавательная! В своё время вникал в механизм пакетов, когда баловался с modTerminal. Но статью написать не сообразил.
                                                    А флудить начали именно потому, что нет ясности. Вот и возник спор.
                                                  2. Андрей 02 мая 2018, 13:16 # -1
                                                    А можно ли внедрить подобную защиту в дополнение, не продаваемое в магазине modstore.pro? Многие небольшие компоненты пишутся только для конкретного проекта и хотелось бы их тоже как-то защитить.
                                                    1. Сергей Шлоков 02 мая 2018, 13:18 # 0
                                                      И куда этот пакет будет обращаться за паролем? На твой сайт?
                                                      1. Иван Климчук 02 мая 2018, 16:06 # 0
                                                        Да. Какая разница, где выдавать пароль? Достаточно иметь некую базу, где хранить сигнатуру или любой другой параметр, который будет однозначно идентифицировать пакет + данные для авторизации и выдавать на такой запрос пароль. В modstore.pro это сделано в одном месте, но ничего не мешает сделать внешний свой сервис, и держать пароли там, если нет доверия к репозиторию.

                                                        Пока писал, пришла идея, что таким способом можно распространять платные дополнения даже через официальный репозиторий. Не решенным остается только вопрос с одобрением таких пакетов со стороны MODX LLC.
                                                        1. Сергей Шлоков 02 мая 2018, 17:02 # -1
                                                          Вот и я про то же. Раз насоздавал пакетов для разных разработчиков, то придётся и сайт создать для их защиты.

                                                          Кстати, пока писал, пришла идея :) — наверно можно использовать динамический ключ для таких пакетов, чтобы не лазить в репо? При сборке пакета по заданным условиям его формировать, а при распаковке проверять. Теоретически возможно.
                                                          1. Иван Климчук 02 мая 2018, 17:09 # 0
                                                            Учитывая, что код расшифровки должен быть в пакете, то алгоритм шифрования взломать как раз плюнуть и криптографическая сила этого динамического пароля в таком случае ниже плинтуса. По криптографии много книг уже написано и выдумывать велосипеды не стоит. Но идея динамического ключая имеет место быть, но несколько в другом варианте. Сейчас ключ выдается для пакета и версии и един для всех пользователей магазина. В моем случае, когда пакет собирается только из исходников, ничего не мешает перед отдачей пакета пользователю создать уникальный ключ именно для этого пользователя и зашифровать пакет этим ключом только для него на лету. Если скачать такой пакет и попробовать установить, используя чужой ключ, поставить его уже не получится.
                                                            1. Сергей Шлоков 02 мая 2018, 17:54 # 0
                                                              Учитывая, что код расшифровки должен быть в пакете, то алгоритм шифрования взломать как раз плюнуть и криптографическая сила этого динамического пароля в таком случае ниже плинтуса.

                                                              Вань, ты прикалываешься что-ли? Да нахрена его взламывать, лазить по файлам, искать где шифруется, если можно просто скопировать код? В этом случае на каком уровне твой плинтус? У меня 2 минуты заняло поставить Office на локалку — скачать с сайта (без архивирования!), выполнить ряд манипуляций (не буду говорить какие) и поставить ещё один зависимый пакет (а может не один).

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

                                                              П.С. Кстати, а пользователь не знает, есть запрос на внешний источник или нет. Может и искать нет смысла.
                                                              1. Иван Климчук 02 мая 2018, 18:11 # 0
                                                                Так я тебе о том же, что файлы то нешифрованы, смысла в ключе, который зашит в самом пакете никакого. Как и смысла в алгоритме, которые как-то по хитрому что-то расшифровывает без запоса к внешнему источнику. Даже сервера лицензий DRM для медиа-файлов, и те всегда запрашивают ключи извне.
                                                                1. Сергей Шлоков 02 мая 2018, 18:26 # -1
                                                                  О том же, да не о том. Хоть внутри ключ храни, хоть снаружи. От копирования файлов он не поможет. Вся эта защита от простых пользователей типа администраторов, которые просто ставят нужные пакеты, да от ленивых разработчиков, которым хочется марочиться.
                                                                  Они точно не будут лазить и искать алгоритмы.
                                                                  А алгоритмы можно придумать разные — удалить файл, или испортить исходник класса, и ещё много чего можно придумать. Т.е. и не подумаешь, что проблема в ключе. Баг какой-то. Даже если разработчик пишет тебе в техподдержку для сайта, для которого куплен компонент, просишь его выслать код класса и всё становиться ясно. Тут уж как фантазия работает.
                                                    2. Алексей Соин 03 мая 2018, 12:12 # +3
                                                      Такой вопрос, некоторые проекты у меня ведутся на закрытой локальной машине без доступа к внешним сетям, раньше процесс разработки происходил так, покупались дополнения на домен который будет использоваться в дальнейшем, скачивались дополнения и устанавливались вручную на локальную машину, сейчас я так понимаю такой вариант уже не пройдёт, верно?
                                                      1. Иван Климчук 03 мая 2018, 13:50 # 0
                                                        Вероятно да, не получится, если система полностью изолирована.
                                                        1. Алексей Соин 04 мая 2018, 08:25 # +2
                                                          Как считаете, как в таких случаях следует поступать? Я пока вижу только один довольно нудный вариант))) на этапе когда требуется какое-либо платное дополнение делать копию с локальной машины, заливать на хост рабочий, устанавливать нужное дополнение и снова переносить на локальную машину. Но чтото это какаято наркомания :D
                                                      2. Марат Марабар 05 мая 2018, 13:14 # +5
                                                        Мне кажется, что всё-таки от разработчика зависит, от его… не могу слово подобрать)) чистоплотности что ли.
                                                        Если привык воровать — он и будет воровать.
                                                        Шлоков правильно сказал — надо определиться что мы продаём.
                                                        Многие покупают пакеты, ни разу не обратившись в тех. поддержку — это что? Значит она ему не нужна. И в первую очередь он покупает компонент, не тех. поддержку. Моё мнение.

                                                        Что такое тех. поддержка? По моему мнению — это при изменений версий пакета, надо пройти по всем сайтам, где он установлен, с целью проверки работоспособности этого компонента. Это и будет называться тех. поддержкой, разве нет?
                                                        1. Alexander V 05 мая 2018, 20:05 # +2
                                                          Без теста практически невозможно показать прототип клиенту.
                                                          Даже скопированный пакет ему дает мало профита. Должны быть обновления, а для этого нужен ключ.
                                                          Есть конечно проекты, которые не обновляются, но это уже их проблемы. Потом волосы на животе рвут из-за накопленного тех. долга.
                                                          1. Сергей Лелеко 06 мая 2018, 11:07 # 0
                                                            Не могли бы пояснить что есть «тех. долг»? Накопившиеся косяки из за несвоевременного обновления проектов?
                                                            1. Alexander V 06 мая 2018, 17:30 # +1
                                                              Попробуйте обновить Modx спустя год с пачкой дополнений. Иногда это выливается в забавный квест.
                                                              1. Alexander V 06 мая 2018, 17:34 # 0
                                                                Не могли бы пояснить что есть «тех. долг»?
                                                                Технический долг, это когда длительное время не обслуживалась система. В данном случае обновления.
                                                                1. Сергей Лелеко 06 мая 2018, 17:56 # 0
                                                                  Ну значит я правильно понял))) Да, я такой квест проходил — весело не то слово
                                                                2. Сергей Лелеко 10 мая 2018, 05:59 # 0
                                                                  Походу за уточняющие вопросы минусуют у нас тут )
                                                                  1. Иван Климчук 10 мая 2018, 12:41 # +1
                                                                    Видимо какой-то особый недоброжелатель. Однажды мне такой прошелся прям по всем постам и комментам и минусов наставил (не поленился же). Вася тогда исправил и починил рейтинги, но как факт — такое возможно.
                                                                    1. Сергей Лелеко 10 мая 2018, 12:44 # 0
                                                                      Понятно) Ну что поделать, будем как-то дальше жить
                                                              Вы должны авторизоваться, чтобы оставлять комментарии.