Перейти к публикации

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


Рекомендованные сообщения

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 через систему плагнинов.

Ссылка на сообщение
Поделиться на других сайтах
20 минут назад, Japing сказал:

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

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

dk5L3C1F.png

 

Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, Captain сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Ссылка на сообщение
Поделиться на других сайтах
9 минут назад, celsoft сказал:

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

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

 

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

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

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

 

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

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

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

 

 

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

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Japing сказал:

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

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

 

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

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

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

 

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

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

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

 

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, celsoft сказал:

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

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

 

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

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

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

 

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

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

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

 

 

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

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

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

Ссылка на сообщение
Поделиться на других сайтах

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

Ссылка на сообщение
Поделиться на других сайтах
  • 3 месяца спустя...

Не знаю, почему все зациклились на одном лишь .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 файлы через систему плагинов. По моему скромному субъективному мнению, это будет лучшим введением в новой версии. 

Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, yeahga сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах
53 минуты назад, celsoft сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, yeahga сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах
4 минуты назад, celsoft сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, yeahga сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, celsoft сказал:

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

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
18 часов назад, yeahga сказал:

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

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

 

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, Captain сказал:

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

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

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

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

 

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

 

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

Ссылка на сообщение
Поделиться на других сайтах
27 минут назад, odys сказал:

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

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

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

 

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

 

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

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

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Gameer сказал:

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

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

Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, odys сказал:

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

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

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

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
2 минуты назад, Gameer сказал:

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

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

 

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
В 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 сказал:

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

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

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

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...