Fi1osof

Fi1osof

С нами с 05 мая 2014; Место в рейтинге пользователей: #10
Fi1osof
11 мая 2017, 14:40
0
Иван, привет!

Нет, пока только текстовый тип поддерживается. Мне его хватает, а на развитие пока народ не спонсирует.
UPD: сегодня вот на modMonitor дополнительно проспонсировали, вот его обновленная версия интересная выйдет в воскресенье.
Fi1osof
08 мая 2017, 05:52
+1
Роман, мне можете документацией не тыкать. Я знаю гораздо больше, чем там написано.
Не хотите слушать о чем вам говорят более опытные разработчики — это ваше дело. Думаю, диалог имеет смысл закрыть.
Fi1osof
08 мая 2017, 05:36
+2
Выносим core за вебрут
Фигня все это. core необходим для работы сайта. Не важно где он у вас лежит (в корне сайта, где-то внутри или за пределами корневого раздела), он должен быть доступен для исполняемых скриптов, а значит если у вас что-то выполняется на уровне php, core будет доступен через MODX_CORE_PATH (вам можно не знать прямой путь к ядру). А запросы извне на core итак закрыты в большинстве случаев (мало кто не закрывает по халатности). Еще раз говорю: основная угроза именно в коннекторах, потому что именно они принимают на себя запросы извне и далее уже отправляют на выполнение в ядро. Вы даже здесь в топике посмотрите приведенные листинги, запросы идут на коннектор.
URL: http://victim.site/connectors/index.php?action=resource/getNodes&id=web  
================[ src start ]================  
POST /connectors/index.php?action=resource/getNodes&id=web HTTP/1.1
В свою очередь для работы фронта, как правило, системные коннекторы не требуются вообще (хотя есть умельцы, которые пихают туда свои скрипты (и я в начале своего пути туда же совал свои коннекторы)). Так вот, если вы удалите из прода папку коннекторов (или хотя бы закроете именно ее по ip), вы значительно сократите риск взлома.
Fi1osof
08 мая 2017, 05:30
+1
Или это какой то развод хостера?
Нет, не развод. У них там это все в графиках имеется, сами можете посмотреть. И вот один из кейсов оптимизации непосредственно на таймвебе: modxclub.ru/blog/131.html
Fi1osof
08 мая 2017, 05:26
+1
Слово «только» можно исключить.
Есть еще modstore.pro/packages/utilities/modmonitor
Fi1osof
08 мая 2017, 05:23
+1
Не, ну не так жестко)))
А если серьезно, то тогда уж rm -rf ./connectors

Кстати, очень хорошая идея… Держать отдельный закрытый манагер-сайт для наполнения, и просто публичную часть без коннекторов. У меня так на одном серьезном проекте помимо дев сайта есть еще тест-сайт. Он как и боевой, работает с единой базой данных, но у него полностью своя файловая система. Позволяет на боевой базе данных обкатывать новый функционал прежде чем накатить окончательно на боевой сайт для всех.
Fi1osof
08 мая 2017, 03:57
0
Как сказал Райн Треш, «Вы даете ключи от квартиры кому-то, и удивляетесь, что вас обокрали».
Размышления излишни, просто никого не пускайте в админку.
Fi1osof
08 мая 2017, 01:12
+1
Если у тебя каждый контекст в отдельности будет доступен только по определенному протоколу (или http или https), то можно с префиксами не заморачиваться (то есть плагин не ставить вообще). В системных настройках не трогай переменную server_protocol, а вот в том контексте, который должен быть доступен по https, укажи эту настройку. Далее все редиректы настрой на уровне веб-сервера, то есть один и тот же контекст не должен быть доступен по разным протоколам.
Но далее вопрос стоит в том, как ты контексты переключаешь и инициируешь MODX. Если на уровне index.php с четким указанием контекста и его настроек протокола, то тогда ОК все. Но ведь так делают очень редко? В основном на уровне плагина делают свич контекста. А значит велика доля конфликтов в кеше. Если конфликты возникнут, тогда ставь плагин, без него никуда.
Fi1osof
08 мая 2017, 01:04
0
Я говорил и буду говорить: пустили кого-то в админку: 99.999% дали полный доступ к админке.
Fi1osof
23 апреля 2017, 14:27
0
Подсказка: ошибка разбора условия с ключом 0: azaza.

Код запроса выкладывайте. Что-то ему не нравится в конструкции where.
Fi1osof
19 апреля 2017, 04:36
0
Что может смущать в такой простой задаче? Я тоже форевер заюзал. Его запустил и забыл про него. Какая разница про что забывать? Здесь скорее сработал принцип «он мне первый попался». Я про pm2 тоже только от вас узнал. У форевера более маркетинговое название.
Fi1osof
18 апреля 2017, 04:50
0
Добрый.

У топика статус стоит «Отмененный». Никто деньгами не вкинулся, а задач других хватает с головой. Но совсем не исключено, что когда-нибудь появится.
Fi1osof
14 апреля 2017, 22:03
+1
Да нет, не задели. Просто фраза «попадаю не в магазин» ввела в заблуждение, думал что вы про демо-версию ShopModxBox. И кнопку Демо в модсторе сейчас смог найти только с помощью Ctrl+F5. Судя по всему, это последствия обновления модстора. Раньше было в публикации компонента что-то типа «Сайт разработчика», а теперь это поле превратилось в кнопку Демо-версия. Вот и получилась путаница. Поправил.

А демо можете посмотреть здесь: modmonitor.ru/
Регистрируйтесь на сайте и в админку заходите со своими данными, там увидите работу компонента joxi.ru/RmzXOWVu0wLRYA
Fi1osof
14 апреля 2017, 20:40
0
Во-первых, я не переписываюсь сам с собой, а публикую последние новости. На них не обязательно отвечать, но прочитать кому-то будет интересно. Плюс к этому скоро накачу дополнительный функционал, и писать там буду не только я.
Во-вторых, где именно вы кликнули на ссылку демо-магазина и какое отношение это имеет к modMonitor?
Fi1osof
14 апреля 2017, 13:15
+1
Вы перед этим MODX обновляли? Там такая фигня есть, что из настроек расширения загоняются в БД. Выполните в консоли $modx->removeCollection(«modExtensionPackage); и удалите после этого папку core/cache.
Fi1osof
13 апреля 2017, 22:03
+2
Проверьте системные настройки, найдите в Пакетах расширений такое: joxi.ru/12M1KMNhM1x7R2
Если есть, соответственно удалите и сбросьте кеш. Только не вообще все удалите оттуда (если там помимо монитора еще что-то есть), а только данные о нем.

Хочу предостеречь народ, чтобы не ставили эту приблуду на рабочий сайт. Лог забиваются мегабайтами ошибок во время работы и… после удаления.
Специально для этого были добавлены настройки, позволяющие исключать отслеживаемые контексты и выставлять минимальное время выполнения запроса, при превышении которого сохраняется информация в БД. При чем информация об ошибках будет сохраняться независимо от этого порога. Таким образом можно поставить порог секунд в 10, и все равно потом видеть ранее возникшие ошибки.

P.S. Хочу предостеречь народ, чтобы не летали на самолетах. Опасное это дело. Надежней пешком.

А если серьезно, учту, что какие-то вещи не очевидны, и подправлю описание и сам компонент.
Fi1osof
11 апреля 2017, 16:59
2
+2
Посмотрите www.paysera.com/v2/ru-RU/index
Очень интересный мировой сервис. Главная фишка в том, что он учитывает законодательство различных стран при формировании платежей. То есть если участники платежа находятся в разных странах, будет выбрана оптимальная банковская цепочка и юридические моменты учтены.
Не совсем точно изучал вопрос оплаты в России в разных валютах, но вы почитайте у них, наверняка все можно.
Готового компонента сейчас нет, но на одном сайте клиенту интегрировал, так что вполне можно докрутить и оформить в компонент. Цена вопроса 10 000. Если будут другие заинтересованные пользователи, можно объявить краудфандинг и собраться вскладчину. Цена готового компонента будет 1990 рублей, по краудфандингу можно по 1000 оформить.
Fi1osof
10 апреля 2017, 23:30
+1
Для пример: мой код, который создает Сделку, Контакт с тегами, связывает Контакт со Сделкой, и создает заметку по Контакту.

if (!$amo = $this->modx->getService('amocrm', 'amoCRM', $this->modx->getOption('amocrm_core_path', null,
        $this->modx->getOption('core_path') . 'components/amocrm/') . 'model/amocrm/', array())
) {
    $this->modx->log(modX::LOG_LEVEL_ERROR, "[". __CLASS__ ."] Could not load amoCRM class!");
}

if($amo->auth()){
    
    /*
    Создаем сделку
    */
    $data = array(
        'name'          => "Заявка с сайта",  
    );
    
    $lead_id = $amo->addLead($data);    
    
    /*
    Создаем контакт
    */
    $contact = $amo->prepareContact(array(
        'name' => $this->getProperty('name'),
        'phone' => $this->getProperty('phone'),
        'email' => $this->getProperty('email'),
    ));
    
    $contact['tags'] = 'ClientsFromWebsite,RUS';
    $contact['linked_leads_id'] = $lead_id;
    
    $data = array('request' => array('contacts' => array()));
    $data['request']['contacts']['add'] = array($contact);
    
    $result = $amo->sendRequest('/private/api/v2/json/contacts/set', $data);
    
    if(!empty($result['out']['contacts']['add'][0]['id'])){
        $contact_id = $result['out']['contacts']['add'][0]['id'];
    }
    
    /*
    Создаем заметку по контакту
    */
    if(
        $message = $this->getProperty("message")
        AND $contact_id
    ){
        
        $note = array(
            'element_type'          => 1,  
            'element_id'   => $contact_id,  
            'note_type'   => 4,
            'text'   => $message,
        );
        
        $data = array('request' => array('notes' => array()));
        $data['request']['notes']['add'] = array($note);
        
        $result = $amo->sendRequest('/private/api/v2/json/notes/set', $data);
    }
    
}
else{
    $this->modx->log(modX::LOG_LEVEL_ERROR, "[". __CLASS__ ."] amoCRM Error auth");
}
Получается вот такой результат: