Страница 1 из 1

Список сайтов

Добавлено: 16 апр 2022, 04:50
siberia-man
Здравствуйте

Помнится, в ДНВР была классая фича - почти на первой странице сайта отображался список доступных сайтов. Здесь же список сайтов достпен через серию кликов: трей, Open Server, Мои проекты, "имя проекта". Долго и неудобно.

Нашел такую тему Список сайтов на локалхосте. Кажется это уже не работает: все таки 10 лет прошло - многое могло уже поменяться, например, структура каталогов.

Решил сваять свое. Решение на 100% надежность не претендует, но работает. За красотой не гнался - взял стандартные стили и чуть-чуть подправил.

Идея заключается в получении текущего httpd.conf и его парсинге, чтобы найти имя хоста и его домашний каталог, а также порт. httpd.conf лежат в каталогах вида ./modules/http/Apache_*/conf. И надо понять как получить к ним доступ. Я нашел единственный способ, который не требует дополнительных настроек в php.ini - это шаблон ./userdata/start.tpl.bat. Согласно документации (https://ospanel.io/docs/#start-stop-skripty) после запуска всех модулей, запускается скрипт ./userdata/start.bat, который формируется из этого шаблона.

При этом пришлось решить еще одну проблему, которая до сих пор не решена: pre_start.tpl.bat / start.tpl.bat. Но есть обходное решение - символическая ссылка.

Состав архива

modules/system/html/openserver/index.php
userdata/start.tpl.bat

Как это работает

Во время запуска OpenPanel из шаблона userdata/start.tpl.bat создает файл userdata/start.bat и запускает по окончании запуска всех модулей.

Этот скрипт запускает скрипт modules/system/html/openserver/index.php, который "понимает", что он запущен как консольный скрипт, парсит конфиг.файл текущего веб-сервера. Затем скрипт создает файл modules/system/html/openserver/.hosts.php, содержащий некоторую информацию о хостах.

Этот же файл, выполненный как http://localhost/openserver/, разбирает автоматически созданный файл и создает html-страницу со списком хостов.

Инструкция к применению

1. Скачать архив и положить в каталог OpenServer (нвпример, C:\OpenServer)

2. Распаковать архив

3. Запустить консоль в каталоге OpenServer. В windows давно существуют символические ссылки, но рядовому пользователю, по умолчанию, создавать запрещено. Поэтоу для следующего шага может потребоваться консоль с повышенными привигелиями.

4. Создать символическую ссылку (вероятно потребуются права администратора - см. выше)
mklink start.bat userdata\start.bat

5. Перезапустить OpenServer

6. В браузере открыть страницу http://localhost/openserver/