CMS DataLife Engine - Система управления сайтами

Japing

Добавляем возможность редактировать файл .htaccess через систему плагинов в DLE 13.0

Recommended Posts

1. Открыть файл /engine/inc/plugins.php.

Перед:

if(!$file_name) continue;

Добавить:

if($value == ".htaccess" OR $value == "/.htaccess") $file_name = ".htaccess";

2. Открыть файл /engine/classes/plugins.class.php.

Перед:

$content = file_get_contents( self::$root.$filename );

Добавить:

if($filename == ".htaccess") {
	$content = file_get_contents( self::$root."engine/inc/include/htaccess.txt" );
} else

Перед:

@file_put_contents (ENGINE_DIR . "/cache/system/plugins/" . $store_key, $content, LOCK_EX);

Добавить:

if($filename == ".htaccess") {
	$content = "# This is a temporary file, its editing is pointless. The original file is: engine/inc/include/htaccess.txt\n\n" . $content;
	@file_put_contents (self::$root.$filename, $content, LOCK_EX);
}

3. Берём файл .htaccess из оригинального дистрибутива DLE, переименуем в htaccess.txt и копируем его в /engine/inc/include/.

 

Теперь все изменения в файле .htaccess выполняются через систему плагнинов.

 

P.S. Предложение для разработчиков DLE. В новой версии дайте хотя бы возможность редактировать файл /engine/classes/plugins.class.php через систему плагнинов.

Share this post


Link to post
Share on other sites
20 минут назад, Japing сказал:

P.S. Предложение для разработчиков DLE. В новой версии дайте хотя бы возможность редактировать файл /engine/classes/plugins.class.php через систему плагнинов.

Тем самым разработчик убьёт это функционал:

dk5L3C1F.png

 

Share this post


Link to post
Share on other sites
16 минут назад, Captain сказал:

Тем самым разработчик убьёт это функционал:

Моя ошибка. Если и будет возможность его редактировать через систему плагинов этo ничево не даст. Этот файл подключается напрямую, без систему плагинов.

Share this post


Link to post
Share on other sites

Вы пытаетесь нарушить принципы работы системы плагинов. Система плагинов это система работы через виртуальные файлы, любое удаление и приостановка плагина возвращает все в исходное состояние. А вы физически переписываете и редактируете оригинальный файл .htaccess. А теперь при удалении вашего плагина, что произойдет? ничего. Модифицированный файл останется. Это первое. Второе большинство правильно настроенных на безопасность хостингов, не дает прав на запись для этого файла, открытие его на запись вручную через CHMOD, это открытие дыры в безопасности в целом.

 

Этот файл не может виртуальным априори, потому как его читает и выполняет не DLE, а Апач, еще до DLE.

  • Upvote 1

Share this post


Link to post
Share on other sites
9 минут назад, celsoft сказал:

любое удаление и приостановка плагина возвращает все в исходное состояние.

после установки этого хака так и будет

 

13 минут назад, celsoft сказал:

А теперь при удалении вашего плагина, что произойдет? ничего.

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

 

24 минуты назад, celsoft сказал:

Этот файл не может виртуальным априори, потому как его читает и выполняет не DLE, а Апач, еще до DLE.

да, но DLE его использует в работе

 

 

Ну тогда предлагайте вы какая то решение, например обработать ЧПУ через php. Не красиво получился, сделали систему плагинов но всё равно надо файлы вручную редактировать.

Share this post


Link to post
Share on other sites
1 час назад, Japing сказал:

после установки этого хака так и будет

Нет не будет. Вы плохо тестировали. Если нет ниодного другого плагина который бы редактировал этот файл, то этот файл после единственного плагина который редактировал .htaccess не вернется в исходное состояние после удаления плагина, который его редактировал, потому как вы физически правите основной файл, и ничто в исходное состояние его не возвращает в вашем коде.

 

1 час назад, Japing сказал:

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

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

 

1 час назад, Japing сказал:

Ну тогда предлагайте вы какая то решение, например обработать ЧПУ через php. Не красиво получился, сделали систему плагинов но всё равно надо файлы вручную редактировать.

Мое мнение это никогда не трогать стандартные правила, и никогда их не менять. А свои правила вы можете обрабатывать и через PHP.

 

Share this post


Link to post
Share on other sites
1 час назад, celsoft сказал:

Если нет ниодного другого плагина который бы редактировал этот файл, то этот файл после единственного плагина который редактировал .htaccess не вернется в исходное состояние после удаления плагина

Вы правы. но это легко исправить.

 

1 час назад, celsoft сказал:

т.к. правит физически реальный файл

вручную тоже реальный файл редактируется.

 

Соглашусь с вами только с этим:

3 часа назад, celsoft сказал:

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

 

 

1 час назад, celsoft сказал:

Мое мнение это никогда не трогать стандартные правила, и никогда их не менять. А свои правила вы можете обрабатывать и через PHP.

стандартные правила да, а вот свои?  не всё можно обработать через через PHP

Share this post


Link to post
Share on other sites

Не знаю, насколько было бы правильно если бы система ЧПУ обрабатывалась через PHP, но это однозначно было бы удобнее для установки некоторых плагинов, требующих правки в .htaccess

Share this post


Link to post
Share on other sites

Не знаю, почему все зациклились на одном лишь .htaccess? Неужели, никто не делает правки, например, в файле engine/classes/js/dle_js.js ? В моем случае, для реализации select[multiple] приходится менять 

$.each($("#ajaxnews"+a).serializeArray(),function(a,c){b[c.name]=c.value})

на 

$.each($("#ajaxnews"+a+" :input"),function(){b[$(this).attr("name")]=$(this).val()||''})


Сделайте возможным редактировать js и css файлы через систему плагинов. По моему скромному субъективному мнению, это будет лучшим введением в новой версии. 

Share this post


Link to post
Share on other sites
3 часа назад, yeahga сказал:

Сделайте возможным редактировать js и css файлы через систему плагинов. По моему скромному субъективному мнению, это будет лучшим введением в новой версии. 

JS статические файлы которые загружает браузер с сервера напрямую, минуя DLE. Подключайте свои скрипты со своим функционалом, через ту же систему плагинов, а не правьте стандартный JS

Share this post


Link to post
Share on other sites
53 минуты назад, celsoft сказал:

JS статические файлы которые загружает браузер с сервера напрямую, минуя DLE.

Да, но.. /engine/classes/min/index.php?f=engine/classes/js/dle_js.js

Share this post


Link to post
Share on other sites
4 минуты назад, yeahga сказал:

Да, но.. /engine/classes/min/index.php?f=engine/classes/js/dle_js.js

Это сжатие и такая же прямая отдача, плюс далеко не все включают сжатие.

Share this post


Link to post
Share on other sites
4 минуты назад, celsoft сказал:

Это сжатие и такая же прямая отдача, плюс далеко не все включают сжатие.

Я понимаю. Я имел в виду, что можно отдавать правленый js файл.

Share this post


Link to post
Share on other sites
15 часов назад, yeahga сказал:

Я понимаю. Я имел в виду, что можно отдавать правленый js файл.

В одном случае, если включена одна настройка, то отдавать, а если не включена, то не отдавать? Нет. Этого в DLE быть не может, как функция вводящая в заблуждение.

Share this post


Link to post
Share on other sites
4 часа назад, celsoft сказал:

В одном случае, если включена одна настройка, то отдавать, а если не включена, то не отдавать?

Та нет же. Отдавать правленый файл в любом случае. Можно просто патчить файл. Не вижу ни одной причины, мешающей реализовать это. А так получается недосистема плагинов, которая работает на 50% В чем смысл, когда из релиза в релиз приходится делать правки вручную? 

5 часов назад, celsoft сказал:

В одном случае, если включена одна настройка, то отдавать, а если не включена, то не отдавать?

Вы серьезно, или решили поиздеваться? 

Share this post


Link to post
Share on other sites
18 часов назад, yeahga сказал:

Та нет же. Отдавать правленый файл в любом случае. Можно просто патчить файл. Не вижу ни одной причины, мешающей реализовать это. А так получается недосистема плагинов, которая работает на 50% В чем смысл, когда из релиза в релиз приходится делать правки вручную? 

Вы не понимаете сути системы плагинов. Плагины меняют PHP коды, т.е. влияют на скрипты самой CMS, а не на статические файлы. Это касается любой CMS. Своя статика отдается отдельными своими также статическими файлами. Нет ниодной необходимости править JS файлы, любое действие на JS можно отменить и заменить на свой без правки JS файлов. Нет ниодной необходимости править стандартные JS файлы. Если не у вас не достаточно знаний JS, то это не значит что вашу возможность нельзя сделать без правки этого файла.

 

18 часов назад, yeahga сказал:

Вы серьезно, или решили поиздеваться? 

Серьезно. Если вы не знали, то этот путь что вы привели не всегда в DLE, а только при комбинации определенных настроек, когда их нет, статика идет в браузер напрямую минуя скрипты.

Share this post


Link to post
Share on other sites

Ленивые люди чушь пишут, не обращайте внимание. ИМХО.;)

  • Upvote 1

Share this post


Link to post
Share on other sites
24 минуты назад, Captain сказал:

Ленивые люди чушь пишут, не обращайте внимание. ИМХО.;)

мне кажется тут дело даже не в лени, а в бональном «докопаться».

Я уже тут почти неделю читаю «выпады» геймера и ему подобных, которые зацепились за слова разработчика о нежелании бесполезно нагружать движок системой типа роутинга на php и в тоже время введением новой системы рейтинга, что не может ставиться ни в какое сравнение по степени нагрузки на сервер. И ни как не могу понять зачем менять .htaccess? чем ссылка /?do=mymod отличается от /mymod/ ??? Как не крути, но ПС вообще параллельно какой адрес индексировать.

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

 

Ну ум приходит только 2 вещи, перенаправление с http на https (которое уже сделали) и перенаправление с www на без или наоборот. Ну и опять же, если в настройках сайта прописать домен без www, то на страницах сайта везде прописана каноническая ссылка на то, как указано в настройках. Поэтому и тут осой необходимости делать перенаправление нет.

 

Я разработчик средненький и могу чего-то не знать, если я ошибаюсь и не так написал, поправьте.

Share this post


Link to post
Share on other sites
27 минут назад, odys сказал:

мне кажется тут дело даже не в лени, а в бональном «докопаться».

Я уже тут почти неделю читаю «выпады» геймера и ему подобных, которые зацепились за слова разработчика о нежелании бесполезно нагружать движок системой типа роутинга на php и в тоже время введением новой системы рейтинга, что не может ставиться ни в какое сравнение по степени нагрузки на сервер. И ни как не могу понять зачем менять .htaccess? чем ссылка /?do=mymod отличается от /mymod/ ??? Как не крути, но ПС вообще параллельно какой адрес индексировать.

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

 

Ну ум приходит только 2 вещи, перенаправление с http на https (которое уже сделали) и перенаправление с www на без или наоборот. Ну и опять же, если в настройках сайта прописать домен без www, то на страницах сайта везде прописана каноническая ссылка на то, как указано в настройках. Поэтому и тут осой необходимости делать перенаправление нет.

 

Я разработчик средненький и могу чего-то не знать, если я ошибаюсь и не так написал, поправьте.

Хотелось бы послушать о нагрузке от роутинга.

Share this post


Link to post
Share on other sites
2 минуты назад, Gameer сказал:

Хотелось бы послушать о нагрузке от роутинга.

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

Share this post


Link to post
Share on other sites
1 минуту назад, odys сказал:

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

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

Но вот самое забавное что ты написал

35 минут назад, odys сказал:

которые зацепились за слова разработчика о нежелании бесполезно нагружать движок системой типа роутинга на php и в тоже время введением новой системы рейтинга, что не может ставиться ни в какое сравнение по степени нагрузки на сервер.

В какое же? Насколько больше будет нагрузка? DLE не сможет больше запустить на 8Mb оперативной памяти? Придется брать сервер с 16Mb?

  • Like 1

Share this post


Link to post
Share on other sites
2 минуты назад, Gameer сказал:

В какое же? Насколько больше будет нагрузка? DLE не сможет больше запустить на 8Mb оперативной памяти? Придется брать сервер с 16Mb?

ты уже из-за кучи своих сообщений в каждой теме забыл, что @celsoft писал, что нагрузка в рейтинге мизерная

 

39 минут назад, odys сказал:

которые зацепились за слова разработчика

Я просто процитировал, ещё раз повторюсь, это не мои слова, а разработчика.

  • Upvote 1

Share this post


Link to post
Share on other sites
В 05.10.2018 в 13:03, celsoft сказал:

любое действие на JS можно отменить и заменить на свой без правки JS файлов

Вы правы, пожалуй можно обойтись этим. 

 

В 05.10.2018 в 13:03, celsoft сказал:

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

Я не отрицал, что ее можно сделать без правки этого файла. Просто в некоторых случаях проще или правильнее сделать правку именно в этом файле.

 

В 05.10.2018 в 13:03, celsoft сказал:

Если вы не знали, то этот путь что вы привели не всегда в DLE, а только при комбинации определенных настроек, когда их нет, статика идет в браузер напрямую минуя скрипты.

Я знаю. Этот путь привёл лишь в качестве примера, в контексте того, что JS файлы не всегда минуют DLE.

 

В 03.10.2018 в 21:50, celsoft сказал:

плюс далеко не все включают сжатие

Я сам не включаю.

ПС: прошу прощения за потраченное время.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now