Андрей Степаненко

Андрей Степаненко

С нами с 28 октября 2014; Место в рейтинге пользователей: #8
Отправить деньги
Андрей Степаненко
15 августа 2018, 09:33
0
При учете что начинающие программисты хотят испытать все возможность компонентов, будут совершатся множественные ошибки во время импорта, это потребует технической поддержки так как надо будет обеспечить поддержку возможностей Экспорта и обеспечить возможности Импорта.

Причем по опыту могу сказать что импорт таблички товаров в csv формате занимает десятки часов для приведения в нормальный вид на фронтенде.

Нормальный вид — это когда через неделю или месяц у заказчика не возникает вопроса: а может быть еще вот так сделаем? или нужно еще немного доработать.

Тогда компонент будет стоить 9999 руб. Ибо обеспечение техподдержки для этих обеих процедур экспорт и импорт требует большего внимание, чем только к экспорту или только к импорту.
Андрей Степаненко
12 августа 2018, 13:45
0
Только подсветку каждой строки не получится сделать!
Андрей Степаненко
12 августа 2018, 13:42
0
Можно сделать!
Нужно составить массив данных именно в таком виде!
Тогда получится сделать!
Ну тоесть вам в любом случае надо будет написать свой код, для формирования данных!
Андрей Степаненко
11 августа 2018, 18:35
+1
У вас сборка сайта готовая! У меня тоже такая есть и не одна! Проблема сборок это откат назад!

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

msImportExport отличный компонент, он нуже для постоянной синхронизаци, ах да его ещё купить надо! И откатывать назад у него как то иначе устроен.

Да каждый может сделать себе такой компонент и использовать, я решил поделится им!
Ах да если будете использовать его и напишите свои свой процессор для импорта демо данных
То можно будет в компонент добавить новые демо данные!
Андрей Степаненко
11 августа 2018, 12:46
0
По компонентам тоже начал разрабатывать, но столкнулся с тем что в папке core/package MODX генерирует свои папки и файлы, в общем то необходи понять что за алгоритм чтобы можно было зеркало приложений создавать!
Но если брать папку core/components то сейчас ее можно сравнить! Тока надо залить свои преложения в папку с репазиторием!
Андрей Степаненко
11 августа 2018, 12:39
0
Да, все верно! Покажет изменения! Кстати сам переодически задаюсь этим вопросам при обновлении, а то вдруг кто в ядро залез и обновление все снесет.
Андрей Степаненко
11 августа 2018, 12:06
0
есть примеры кода для тестирования? Я пока только придумать смог как выявить не существующие файлы в ядре, сравнивать содержимое файлов ядра и системы, и ещё начал писать функции для проверки длины строк, чтобы найти длинные строки в файле.
Андрей Степаненко
11 августа 2018, 05:23
0
Кстати если выдает ошибку при сканировании то попробуйете в ручную скачать свою версию MODX и положить её в папку:
core/cache/default/scannermodx/repository/modx-2.6.5-pl.zip
тогда скрипт автоматически начнет распаковку вашей версии. Версию можно посмотреть в настройках параметр settings_version
Андрей Степаненко
10 августа 2018, 21:59
1
+6
Написал приложение: Умеет сканировать директории сайта.
В будущем планируется поддержка двух версий платной и бесплатное.

От вирусов оно конечно не избавит, но поможет разобраться с вашей файловой системой.

Смысл в том что во время сканирования происходит заказчка вашей версия MODX из репозитория https://ilyaut.ru/download-modx/ (только чистая)
Затем все распаковывается в папке core/cache/default/scannermodx/repository/modx-2.6.5-pl

Запускается паук который ищет все файлы с расширение: php,js,html,tpl,css,scss,sass,less (можно свои добавить)

И во время поиска сравниваются файлы ядра с версией ядра из репозитория.
Если в файлах ядра были какие то изменения то вы это все увидите.
В общем пробуем: https://yadi.sk/d/mLKu-jXq3a7jJU

Так же составляется список карантинных файлов и список доверенных файлов и директорий.
Чтобы не сканировать все подряд.

Так же еще можно открыть файл и посмотреть что в нем.

Вот так это все выглядит:


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

Директории и файлы:
  • 'core/components',
  • 'core/docs',
  • 'core/cache',
  • 'core/packages',
  • 'setup',
  • 'core/config/config.inc.php',
По умолчанию исключены из сканирования. Но можно включить их в настройках: scannermodx_enabled_dir
Андрей Степаненко
09 августа 2018, 14:04
+2
Да давно уже надо было сделать так!
А то вечно во время разработки в поисках текста и картинок для minishop.
Андрей Степаненко
07 августа 2018, 17:30
+1
Ибо когда входишь в админку то обращаешься к этим директориям!
Андрей Степаненко
07 августа 2018, 13:45
0
а nginx include динамически подтягивать не умеет? А то приходится перезапуска для компиляции нового списка.

Покопался в документации, нашел только это:
location ~* ^/(manager|core|connectors)/ {
                include /home/user/www/core/admin-ips;
                deny            all;
                location ~* \.php$ {
                    include             fastcgi_params;
                    fastcgi_param       SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    fastcgi_pass        user.sock;
                }
        }
Чтобы в конфиг ngixn постоянно не лазить для добавления разрешенных IP:
Можно было бы хранить список с IP там откуда есть доступ к примеру какого то php скрипта в котором прописываешь список разрешенных IP.

По идее тогда вся защита ложится на nginx.

Или для modhost:
Можно сделать чтобы к примеру в папке /core/admin-ips лежал список ip
Администратор добавляет туда разрешенный IP
На modhost запускается скрпит каждую минуту и проверят не было ли изменений в файле. Если были то делает
nginx -s reload


Так уже можно что то придумать в плане управления MODX с этим списком IP. А то ну не прикольно добавлять новые IP для открытия доступа через панель управления хостинга или вообще через ssh.
Андрей Степаненко
07 августа 2018, 10:09
0
Прошу прощение за банальность!
А если сделать вот так:
$ip = $_SERVER['REMOTE_ADDR'];
$PHP_SELF = $_SERVER['PHP_SELF'];
$protected = array(
    '/connectors/',
    '/manager/',
    '/core/',
);
$access_ips = array(
    127.0.0.1'
);
foreach ($protected as $path) {
    $len = strlen($path);
    $self = substr($PHP_SELF, 0, $len);
    if ($self == $path) {
        if (!in_array($ip, $access_ips)) {
            die('Access denied');
        }
    }
}
В место защиты через nginx.

Это же обеспечит защиту директорий, хотя бы на уровне php (как раз этого и будет достаточно чтобы сайт не заразили через эту уязвимость.
Андрей Степаненко
06 августа 2018, 12:51
1
+2
3 дня назад доработал приложение msOneClick для исправления этого недуга.

Не обязательное поле email

Если сделать поле email не обязательным и при отправке поле оказывается пустым, то minishop не даст создать заказа.
Для этого была добавлена дополнительная возможность для автоматической генерации нового email адреса. Либо можно указать свой email адрес на который будут создаваться все заказа.
Андрей Степаненко
03 августа 2018, 05:52
0
Внес корректировку по этой проблеме.
Теперь если email адрес не обязателен и при отправке поле оказывается пустым то автоматически генерируется свой email либо можно указать на какой конкретно емаил создавать все заказы.

Проблемам вот в чем:

Minishop ввел в последних версиях чтобы способ доставки был включен обязательно, без этого заказ не отправляется.
Пришлось допилить чтобы при отправке заказа способ доставки включался и у него проверялись обязательные поля назначенные в minishop. Это решила проблему если есть email адрес.

Но в minishop еще добавлена проверка email адреса принудительно.
То есть если в способах доставки убрать email из обязательных полей, он все ровно будет проверятся в обработчике msorderhandler.class.php
public function getDeliveryRequiresFields($id = 0)
    {
        if (empty($id)) {
            $id = $this->order['delivery'];
        }
        /** @var msDelivery $delivery */
        if (!$delivery = $this->modx->getObject('msDelivery', array('id' => $id, 'active' => 1))) {
            return $this->error('ms2_order_err_delivery', array('delivery'));
        }
        $requires = $delivery->get('requires');
        $requires = empty($requires)
            ? array()
            : array_map('trim', explode(',', $requires));
        if (!in_array('email', $requires)) {
            $requires[] = 'email';
        }

        return $this->success('', array('requires' => $requires));
    }
Так что только такое решение. Убрать email адрес совсем, нету возможности.
Андрей Степаненко
23 июля 2018, 08:08
0
Не понял, это как к manage и connectors

К core закрывается
http://s14863.h10.modhost.pro/core/components/ace/model/ace/ace.class.php

Но connectors
http://s14863.h10.modhost.pro/connectors/system/phpthumb.php

доступен ведь?
Андрей Степаненко
23 июля 2018, 06:52
0
Тоже клиентские сайты поломали:
2 — сайта: стоял Gallery
1 — сайт: версия modx 2.5.1-pl (Gallery никогда не ставил)
Причем характер взлома одинаковый как для Gallery так и для modx 2.5.1-pl

Везде nginx с закрытым доступом к core и отдельным пользователем на сайт(чтобы вирус не мог ниже своей папки спуститься).

Все остальные сайты где было обновление хотя бы 2.6.0 затронуты небыли
Основная часть сайтов была обновлена до версии 2.6.4
После проверки что вирусов нету обновился до обновился до версии 2.6.5-pl-advanced

Дак какие версии все таки ломают?

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