Товарищи энтузиасты, есть предложение дать возможность расширять функционал веб-интерфейса.
Сейчас весь интерфейс зашит в read-only каталоге /www - соответственно никак изменить его нельзя.
Можно сделать какой-нибудь каталог /www/custom, который будет представлять из себя ссылку на /tmp/www/custom, куда можно будет складывать новые странички для WEB-морды. Так же модифицировать /www/index.asp, чтоб при наличии в /tmp/www определенного конфигурационного файла цеплял бы новые страницы.
Таким образом можно обезопасить стандартную морду от летальных изменений и дать возможность добавления новых страничек.
Зачем это нужно?
ну, применений можно много найти, например, чтобы показывать статистику vnstat (у меня есть скриптик, который при загрузке странички, генерирует чисто HTML, без картинок, который показывает гистограммы траффика по девайсам). Не хочется для этой задачи ставить и конфигурировать отдельный веб-сервер (типа lighttp), когда можно заюзать уже имеющееся решение.
Готов предложить свои услуги в модернизации текущего интерфейса.
brain-ripper, в консоли:Code:cd /www ln -s /tmp/www/custom
P.S. Только у встроенного busybox_httpd функционал никакой
ASUS RT-N16 1.9.2.7-rtn, Zotac ZBOX (rtorrent@Ubuntu 13.10)
это решает только половину проблемы, т.к. не поможет модифицировать index.asp, с целью добавить новые странички в ВЕБ-морду (те, которые будут в /tmp/www/custom лежать)
АСУСовский сервер справляется со своими обязанностями, больше от него ничего не требуется. Отобразить страницу статистики по траффику, это из того же разряда, что, например, отображение текущих пробросов портов (UPnP) или окошка "System Command".
Но нет, так нет, настаивать не буду
IMHO плохая идея. С учётом того, что mount -o bind смонтирует хоть чёрта лысого, а АСУС'овский веб сервер никакой(однопоточный!), существующее решение удовлетворительное.
только в пропиливание дырок? А то вон юзера очень давно просят управление vlan'ами в интерфейс вынести. И много еще чего...Готов предложить свои услуги в модернизации текущего интерфейса.
Поковырялся относительно возможности реализации, делюсь наблюдениями.
Теоретически, веб-сервер поддерживает команды в формате <% cmd %>. Даже имеется команда load_script. Таким образом, можно было бы сделать скрипт, например check_user.sh
И вставить его в index.asp:Code:#!/bin/sh USER_DIR="/www/user" INDEX_FILE="index" if [ -e "$USER_DIR/$INDEX_FILE" ] then echo "aux1 = appendChild(foldersTree, leafNode(\"User pages\"))" for str in $( strings "$USER_DIR/$INDEX_FILE" ) do title=${str%=*} fname=${str#*=} echo "appendChild(aux1,generateDocEntry(0, \"$title\", \"$USER_DIR/$fname\", \"\"))" done else echo "// add user/index" fi
Соответственно, если директория /www/user/ примонтирована на изменяемую директорию, и если в ней имеется файл index, содержащий записи вида имя_страницы=имя_файла, то ожидается что вместо load_scripts будет вставлен сгенерированный скриптом код.Code:else{.... <% load_script("check_user.sh"); %> } aux1 = appendChild(foldersTree, leafNode("Logout"))
Теперь о проблеме. В реализации веб-сервера имеется функция ej_load (web_ex.c), в которой запуск скрипта осуществляется через функцию sys_script, реализованную там же.
sys_script выполняет реакцию на некоторые предопределенные имена скриптов и позволяет запускать произвольные скрипты, которые лежат в /tmp, однако результат работы скриптов не возвращается в поток клиента (можно в файл).
Пока видится два решения - добавить в sys_script параметр webs_t wp и передавать его из ej_load, чтобы вернуть результат клиенту. Либо сделать еще одну команду, например <% print_script("check_user.sh"); %>.
Впрочем, также можно добавить команду, которая просто возьмет на себя проверку /www/user/index или будет выдавать клиенту содержимое этого файла в виде фрагмента js.
Данная проблема мне интересна самому, поскольку некоторые страницы по управлению и мониторингу добавить хотелось бы, не заменяя интерфейс полностью. Тем не менее, не бросаюсь править web-сервер, поскольку наверняка у постоянных разработчиков есть на этот счет какое-то мнение.
Last edited by rss; 07-02-2010 at 13:17.
День добрый всем. Возможно ли получить доступ к /www на запись или, еще лучше, сделать симлинк с /opt/www на /www, и если можно, то как?
Заранее спасибо.
примерно так:
Code:mount -o bind /opt/www /www
Оказалось что Дримвивер "портит" .асп, Эдитплюс все сделал нормально, без 404 страницы.
Я "причесал" то оформление, что было, для себя, убрав кое какие косяки.
Можно использовать в качестве временной замены в прошивке, пока в этой ветке ведутся работы по новому интерфейсу.
Код консоли взят из последней прошивки WL520gu-1.9.2.7-d-r2381.trx
Инструкция по применению от Omega
Разархивируем в /opt/share/www/www
mount /opt/share/www/www /www
flashfs save && flashfs commit && flashfs enable
killall httpd
заходишь на роутер и видишь новый интерфейс.
Если все хорошо, то
вставляешь строку 'mount /opt/share/www/www /www'
в /tmp/local/sbin/post-mount
Архив папки www
www.zip
Вариант с "нормальной" высотой полей ввода
www2.zip
Код ужасен, я его не трогал, если почистить от оформления в тексте, то раза в 2 будет меньше размер.
Слушайте, обьясните мне, как можно все эти комманды "вбить одним разом", не по очереди- я ввожу в WinScp
flashfs save && flashfs commit && flashfs enable
и ничего не получается, приходится по команде- неудобно
flashfs save
flashfs commit
flashfs enable
killall httpd
как их сразу ввести? Чукча ни разу не линуксоид
Так сказать, мой скромный контрибушн
Last edited by danmer; 11-12-2010 at 10:41.
хмм, такой локальный вопрос
строка 'mount /opt/share/www/www /www'
в /tmp/local/sbin/post-mount
срабатывает при перезагрузке, но с большой задержкой, в несколько минут. До этого висит "старый интерфейс".
Можно ли как то ускорить процесс инициализации подмены вебморды, а в идеале сделать так, чтобы "старый" интерфейс не грузился вовсе?
М.б. перенести mount в начало файла?Code:#! /bin/sh /opt/etc/init.d/rc.unslung start rm /opt/var/run/*.pid sleep 10s ipaddr=$(nvram get wan0_ipaddr) /opt/etc/sendsms/send.php 79261644746 Your router $ipaddr is loaded mount /opt/share/www/www /www
я добавил строку монтирования папки нового интерфейса "www"
mount /opt/share/www/www /www
в файл
/tmp/local/sbin/post-mount
Это срабатывает при перезагрузке, но с большой задержкой, в несколько (!) минут. До этого висит ужасный "старый интерфейс".
Можно ли как то ускорить процесс инициализации подмены вебморды, а в идеале сделать так, чтобы "старый" интерфейс не грузился вовсе?
Пробовал перенести mount в начало файла, но так не заработало.
Если что- я не линуксоид.
http://hotimg23.fotki.com/a/217_78/187_91/router92.jpg
прошивка свежая, WL520gu-1.9.2.7-d-r2381.trx
http://wl500g.info/showpost.php?p=219426&postcount=352
Помогите пожалуйста советом, на какие слова хоть гуглировать
Можно ли как то ускорить процесс инициализации подмены вебморды, а в идеале сделать так, чтобы "старый" интерфейс не грузился вовсе?
Как вариант, может быть кто то линуксо-продвинутый согласится собрать эту прошивку с моей папкой интерфейса?
Пока же выложу вторую версию работающего интерфейса с более приличными иконками:
на базе прошивки WL520gu-1.9.2.7-d-r2381.trx
www.zip
Last edited by Omega; 26-12-2011 at 20:13. Reason: fixed
http://narod.ru/disk/1802490001/WL50...debug.trx.html
Результат не проверял. Не рекомендую для правок брать www на маршрутизаторе. Это уже результат обработки. Лучше из репозитория.
Также рекомендую собрать у себя виртуалку с линуксом или взять у кого-нибудь готовую.
* Wiki *
Всем Привет! ))
Сама папка www только для чтения, т.е. туда файлы не залить. Пробовал создать что-то вроде /tmp/local/root/www - не угадал ))
Конфига для httpd не нашёл. Гугл тоже ничего не подсказал ))
Подскажите, плиз, где можно прописать папку типа /tmp/local/root/www или может стоить рассмотреть создание в папке www симлинка на такую папку.
Всем Спасибо! ))