//*********************************************************************** // версия 1.0.1(stable edition) //Назначение: Бот занимается популярным во время кризиса действием "Протекционизмом" // ваших компонентов а точнее их внутренних функций таких как task, do ипр. // он может работать как в фронте так и в админке (чтобы работал в админке нужно в файте index2.php добавить строки // $_MAMBOTS->loadBotGroup( 'system' ); // $_MAMBOTS->trigger( 'onAfterStart' ); // сразу после $my = $mainframe->initSessionAdmin( $option, $task ); ну или куда вам самим захочется // без выше описанного он в админке не работает // после установки бот сразу переходит в режим по умолчанию (режим работы) чтобы включить режим настройки войдите в в настройки ботов // рекомендую настраивать правила бота для пользователей autor дабы не пугать простых и незарегистрированных // настраивается очень просто в режиме настройки бот отображает текущие и прошлые get и post запросы в компоненте // вы видите какие команды происходят при работе компонента и ненужные (секретные) для этого пользователя функции, прописываете их боту // после выключения режима настройки бот становиться убийцей всех запрещённых запросов прописанных для определённых групп пользователей // он останавливает вполнение команды и пишет о том что данная функция в компоненте ему запрещена! // пример построения правил для мамбота увидите в настройках самого мамбота // ГЛЮКИ: бот довольно странно работает с визуальным редактором в фронтэнде // во время настройки правил фронтэнда если редактируете какие то материалы то после сохранения вылазиют ошибки // както связанные с инициализацией головы сайта ПРОБЛЕМА НЕ РЕШЕНА (пока) // в рабочем режиме никаких багов не обнаружено. // // важно! бот не тестировался в режиме настройки с компонентами работающими на аяксе // неизвестно способен ли он выявить скрытые get запросы и показать их вам // однако в режиме работы все даже ajax запросы будут фиксироваться и обезвреживаться... // // Автор: Infoman AvLab web studio // Авторские права: Лицензия ГНУ/ и /ГЭПЭЕЛЮ PHP (как есть) //*********************************************************************** /* Большое спасибо sectus за посильную ловлю багов баги и фиксы: бот нечувствителен к регистру исправлен цикл поиска компонентов в правилах бота исправлен захват option баг с header в режиме настройки (компонент com_content) не устранён (он не мешает работе бота) скачать securebot v1.0.1.zip
А в кратце и по-русски можно описать основные направления деятельности бота? Как я понял он запрещает доступ к информации? или я после глобуса и этого скопища народа вообще не соображаю?
например вы имеете копонент но вам нужно запретить группе author или просто зарегистрированным или незарегистрированны гостям сайта запретить доступ к например функции просмотра чегото в этом компоненте или функции удаления или загрузки или добавления ..... тоесть запретить какойто task или do например task=save для этого вам всеголиш нужно установить бот включить его внести правило для этого компонента для нужной группы или нужных групп пользователей и всё после этого если допустим вы вставили правило com_sobi2:sobi2Task,addNew для группы author и бот в режиме работы то бот будет запрещать всем пользователям группы author добавление новых записей в каталог соби2 правило внесения правил таков первым пишется название компонента тоесть option например com_sobi2: сразу после названия и двоеточия пишем все нужные вам запретные функции например sobi2Task,addNew sobi2Task,sobi2Details эти правила пишутся через пробел где параметр и его значение пишутся через запятую для каждого компонента правила пишутся с новой строчки тоесть написал правило для компонента sobi2 нажал энтер пишеш следующие правило пример com_***:task,**** task,****** com_***:task,**** task,****** com_***:task,**** task,****** ну и так для любых групп там заложены стандартные группы(в боте) кроме суперадминистратора также в боте можно запретить группам вообще работать с компонентом для этого првило пишется так : com_****: в этом случае если бот видит что для этой группы пользователей такое правило то он просто непустит пользователя в него .... бот может также работать в админке например запрещать чтолибо группам менеджер или просто администратор для этого нужно в index2.php внести изменения разу после строки $my = $mainframe->initSessionAdmin( $option, $task ); вносим строки $_MAMBOTS->loadBotGroup( 'system' ); $_MAMBOTS->trigger( 'onAfterStart' ); это позволяет боту подгружаться в админке в боте есть режим настройки для чего он? всё просто дело в том что некоторые компоненты например в админке изпользуют скрытые через яваскрипты запросы (большие кнопки графические) в основном эти запросы являются post запросами которые в последующем выливаются в get запрос с параметром mosmsg через mosredicet их бот отлавливает тоже и вносит их в сессию потом показывает вам их в режиме настройки я вам рекомендую создавать правила в режиме настройки на локальной машине чтобы непугать простых юзеров внезапно вылазиющей таблицей после того как вы отловили все параметры компонента определили что можно запрещать пользователям определённым группам просто вносите эти правила в бот работающего сайта и включаете его бот видит и фиксирует все таски и пост таски и если видит что данный таск компонента запрещён то он останавливает выполнение скрипта и выдаёт пользователю предупреждение об ошибке типа НИЗЯ! что ещё непонятно? бот написан под 1.0.* под стандартный sef код открытый так что все замечания и совершенствования пишем прям в теме в итоге можно получить хороший нужный общественный продукт
Замечания по коду: Немножечко структурировать код, набить отступы и т.п., а то друг под другом идущие скоб очки в кол-ве 6-ть штук путают. предыдущий Для системного мамбота не надо делать проверку "были ли загружены параметры ранее", а сразу грузить их. Код (PHP): $request=$_REQUEST;/////входящие параметры гет или пост - бесполезная подмена переменной. Код (PHP): $botParams->_params->debug; - чера впереди свойства означает, что, по идее, это свойство закрытое(потому как ООП не было до конца реализовано в PHP4), и к нему надо через методы обращаться. например, вот так: Код (PHP): $botParams->get('debug', 0); Имена переменных должны быть "объясняющими". то что $i - это дебуг, а $id - это $my->gid догадаешься не сразу. substr_count - чувствителен к регистру, в некоторых компонентах это может быть существенно, если используется вызов функции с названием $task или идет инклуд файла с названием $task.php на виндовом серваке. Код не w3c-шный : ) и не надо что-то обрамлять в <br></br> : ) Код (PHP): $grouprule = $botParams->_params->$id; if (isset ($grouprule)){ переменная определена, наверное !empty имелось в виду Код (PHP): foreach ($optionrule as $key => $line) { $count = substr_count($line,$option); if ($count>0){ $optlinerule=$line; } } А если, что, конечно, маловероятно, но вдруг, в каком-то компоненте будет использоваться переменная с названием другого компонента? : ) Тутже, после того как нашли компонент нужно прекращать цикл. Придрался чуток : ) Пожелания: В режиме настройки выводить настройки для текущего компонента, создавать правила выбрав перемнную из запроса, и тип пользователя.
да ты прав но я не думаю что переменная option может иметь сразу 2 вариации в составе одного get или post запроса в любом случае конструкция $option=mosGetParam( $_REQUEST, 'option', '' ); вернёт только один и них substr_count да верю охотно в наборе инструментов гдето валялась функция приведения всех букв в нижний регистр это решит проблему писал очень быстро спешил к НГ усекал всё что можно было усечь оказалось не усекаемое менять не стал пусть будет .... если это небезопасно то усеку как ты сказал... а есть разница? я как Пушкин он тоже по математике имел твёрдую 2-ку
тип пользователя выводится сверху таблицы (вот тип группы не выводится но в принципе решаемо.... правила выводится через br сразу в в таком виде чтобы их можно было копировать и вставлять в список правил то есть (параметр,значение) ну это просто для удобства чтобы правила в столбик класлись иначе билеберда настоящая особенно с куками и полями textarea
sectus как ты думаеш нужно ли применять тулз для приведения букв в нижний регистр если значение параметра будет на русском языке? точто название параметров будет на английском это понятно но вот значение на русском хотя наверно тоже будет иметь место.....
Блин, ну вот опять началось отписывание кодов, в срочном порядке нужно учить учить и еще раз учить, а то знаю только echo и content
вот и зря сегодня ещё раз обновил всё таки вставил и прогнал через фишермен.... ибо сектус меня прям всего пристыдил расставил все скобочки как надо .... добавлена мультиязычность для наших зарубежных друзей.... и сделано более стабильное обнаружение команд компонентов. надеюсь это окончательно. тестируем оцениваем.