А не интереснее ли было бы сделать возможность пользователям фтп устанавливать домашние каталоги? Допустим выбор private dir/home dir
Да, отличный
Нет, лучше поменять
Дизайн не имеет значения
А не интереснее ли было бы сделать возможность пользователям фтп устанавливать домашние каталоги? Допустим выбор private dir/home dir
ASUS RT-N16 (1.9.2.7-rtn) + multi-wan (2x PPPoE, было на WL-500W)
Нужно делать так как нужно, а как не нужно - делать не нужно.
Сегодня достиг серъезного прогреса. Мои html файлы читают информацию из nvram и отображаются:
http://bitbucket.org/vadim/wl500-ui/downloads/ui-2.png
Я прицепил хард драйв к роутеру, создал папку для тестового интерфейса, зашарил его по nfs, и редактирую прямо на роутере из редактора на моем компе. Далее я стартовал второй экземпляр httpd на порту 8080, и вижу результат как только сохраняю файл в редакторе.
Следующий шаг это сделать сохранение изменений.
После этого было бы неплохо что бы кто то помог с переносом основной части интерфейса.
Last edited by Omega; 28-08-2014 at 00:19. Reason: fixed
Взят очередной барьер. Удалось изменить имя хоста из jscript.
Изменения можно смотреть здесь:
http://bitbucket.org/vadim/wl500-ui/...t/abf144259538
Следующий этап - сделать полностью функциональной одну страницу, и реализовать "Finish", на данный момент работает только "Apply".
Если есть время и желание - имеется актуальная задача. Необходимо на js реализовать всплывающее окно выбора USB-модема на странице Advanced_ConnectionMode_Content.asp и подстановка VID:PID.
Вычитывание доступных модемов можно сделать по аналогии с http://code.google.com/p/wl500g/sour.../rc/usbmodem.c - метод hotplug_usb_modeswitch
Запуск команды cat /proc/bus/usb/devices для получения исходных данных скрипту через syscmd_out.asp
Предложения по развитию веб-интерфейса.
Этап 1.
- Контроль качества кода, соблюдение стандартов.
- Широкое использование javascript, уменьшение объема страниц за счет динамической генерации разметки. AJAX по необходимости (отстутсвие перезагрузки страниц, асинхронная докачка данных).
- Перевод взаимодействия с веб-сервером на формат JSON. Позволит:
- Сделать возможным разработку веб-интерфейса в отсутствии веб-сервера (прием и передачу файла JSON легко сделать переключаемой на локальную файловую систему).
- Выделить скрипты из кода веб-сервера (в т.ч. в виде новой монолитной реализации cgi-скрипта), что позволит легко сменить веб-сервер (busybox.httpd, lighthttpd по выбору). Для JSON потребуются скрипты получения и заполнения nvram + формирование дерева параметров + формирование дерева статистики.
- Работа с JSON возможна по корню дерева с произвольной глубиной – получить/установить параметры (например по странице) или просмотреть статистику работы (по странице или по дереву, аналогичному SNMP MIB или что-то похожее на /proc/). Преимущество – унифицированный интерфейс и возможность выборки и загрузки нужной порции данных.
- То, что будет сформировано на странице зависит от данных и не является жестко свёрстанным.
- Пример - мультиван для параметра "LanWan" (3 закладки):
Code:{ "LanWan": [ { "proto": "eth0", "ip_adddr": "10.14.53.63", "metric": 1 }, { "proto": "wimax", "ip_adddr": "0.0.0.0", "metric": 10 }, { "proto": "usbmodem", "ip_adddr": "0.0.0.0", "metric": 5 } ] "WimaxSetup": { "check_connection": "1" } }- Локали с возможностью переключения языка из веб-интерфейса (JSON-файлы на диске).
- Реализация переключения упрощенного и полного интерфейса управления.
- SVG непосредственно на страницах и генерация картинок на стороне браузера.
- Возможность подключения внешних пользовательских страниц web-интерфейса с внешнего диска. При наличии статистики в формате JSON, соответствующей Mib SNMP маршрутизатора, предоставит возможность рисовать любые графики состояния.
Этап 2
- Получение списка файлов в директории, редактирование файлов скриптов через веб-интерфейс (пример – управление камерой Axis 207)
- Управление пакетами ipkg через веб-интерфейс. Возможность подключения пакета, вносящего изменения в веб-интерфейс за счет подключаемых страниц.
- Управление разметкой подключенных дисков, проверка целостности файловой системы, файловые операции.
- Java-applet для ssh-подключения непосредственно из окна браузера
По-моему не стоит тратить время на подключение нового интерфейса на nvram напрямую. Нормальный мультиван в виде переменного набора страниц таким образом реализовать не удастся. + проблема пересесть на другой web-сервер. Лучше переводить всё на JSON или что-нибудь подобное.
Огромная благодарность создателям прошивки. недавно rt-n16 пытался использовать на последней офф прошивке, так ничего не вышло, а благодаря вашей все летает.
Собствено вопрос оптимизации, выноса лишних файлов.
слил с роутера папку www, хотел спросить:
1) Файл phrase.js - 0 байт. ссылки на него присутствуют в Basic_GOperation_Content.asp и Basic_ROperation_Content.asp. Можно наверно и ссылки и сам файл ликвидировать. Он реально пустой.
2) redirect.asp - 0 байт. ссылок на него вообще нигде нет. видимо планировалось такое название, но используется redirecting.asp, который лежит на месте.
можно как-то с вами связаться, чтоб пока есть время я иногда чистил некоторые части веб-фейса от лишних ссылок, присылал (на ящик к примеру), а вы решали выкладывать или нет.
ПС включены, прошрамер я хреновый, но в хтмл понимаю больше. и так в rtn16 больше 10% прошивке занимает веб. давайте я его немного почищу, может будет быстрее и лучше.
wl-500gpv2
Отличное начало!
Патчи можно выкладывать тут либо слать на наши адреса, желательно ставя в копию всех
http://code.google.com/p/wl500g/people/list
ASUS WL5xx: FW 1.9.2.7-d-rXXXX / обсуждение прошивки [RU] / firmware discussion [EN] | bip irc proxy
ASUS RT-N1x: FW 1.9.2.7-rtn-rXXXX / обсуждение прошивки [RU] / firmware discussion [EN] | fake ident daemon
при быстром взгляде на опрос я неправильно ответил, "да, отличный", я думал речь о предложенном варианте. А оказывается о старом. Предложенный эскиз несомненно лучше и выглядит многообещающе. Ценность дизайна нельзя недооценивать. Но надо не забывать, что дизайн - понятие широкое и включает в себя удобство пользования, функциональность и прочие прелести.
Заметил, что если выставить в System Setup - Operation Mode - режим Access Point, то из раздела Status & Log пропадает большинство вкладок. Часть пропаж ясны, но вот почему не остаются такие как System Utilization и Diagnostic Info? Нагрузка на роутер и информация о нем не зависят от режима работы же.
wl500gp, 1.9.2.7-d-r2381
При отключении NFS и камер в веб интерфейсе они остаются. Может сделать как-то так?
Code:--- 1.9.2.7-d-orig/www/mkweb 2011-01-04 17:41:13.000000000 +0200 +++ 1.9.2.7-d/www/mkweb 2011-01-06 22:23:13.125159981 +0200 @@ -118,6 +118,18 @@ if [ -n "$1" ]; then sed -ri '/WiMAX/d' ../web_$MODEL/Advanced_LANWAN_Content.asp fi + if [ "$CONFIG_RCAMD" != "y" ]; then + echo "Removing WebCam pages..." + rm -rf ../web_$MODEL/Advanced_WebCam*.asp + sed -ri '/Web Camera/d' ../web_$MODEL/index.js + fi + + if [ "$CONFIG_NFSD" != "y" ]; then + echo "Removing NFS pages..." + rm -rf ../web_$MODEL/Advanced_NFS*.asp + sed -ri '/NFS Server/d' ../web_$MODEL/index.js + fi + if [ "$CONFIG_MODEM" != "y" ]; then echo "Removing 3G/cdma pages..." rm -f ../web_$MODEL/Main_ChatStatus_Content.asp
ASUS RT-N15U
Меня все время волновало, почему неправильно отображается загрузка CPU в rtn-ветке. Посмотрел - оказывается, не учитывается iowait, irq, softirq, добавленные в ядре 2.6, которых не было в 2.4.
Может патчик добавить?
Правда, не знаю, насколько корректно на графике добавлять прерывания и прочее к sys, но ведь это не юзерские процессы.Code:Index: graph_cpu.svg =================================================================== --- graph_cpu.svg (revision 2454) +++ graph_cpu.svg (working copy) @@ -161,9 +161,9 @@ var data=obj.content.split("\n"); var ugmt=(Date.parse(data[0]))/1000; data=data[1].split(/\s+/); - var tot=parseInt(data[1])+parseInt(data[2])+parseInt(data[3])+parseInt(data[4]); + var tot=parseInt(data[1])+parseInt(data[2])+parseInt(data[3])+parseInt(data[4])+parseInt(data[5])+parseInt(data[6])+parseInt(data[7])+parseInt(data[8]); var idle=parseInt(data[4]); - var sys=parseInt(data[3]); + var sys=parseInt(data[3])+parseInt(data[5])+parseInt(data[6])+parseInt(data[7])+parseInt(data[8]); } catch (e) { return; }
Я думаю, не помешала бы вот такая кнопочка в веб интерфейсе, давно хотел сделать.
Code:--- www/web_asus_en/index.js 2011-01-04 17:41:13.000000000 +0200 +++ www/web_asus_en/index.js 2011-01-06 23:00:20.201159181 +0200 @@ -150,7 +150,9 @@ function generateTree() { appendChild(aux1, generateDocEntry(0, "System Log", "Main_LogStatus_Content.asp", "")); } aux1 = appendChild(foldersTree, leafNode("Logout")); + aux1 = appendChild(foldersTree, leafNode("Save & Restart")); + } function clickOnFolderLink(folderName) { @@ -165,6 +167,10 @@ function clickOnFolderLink(folderName) { top.folderFrame.location = "Main_Index_HomeGateway.asp"; } else if (folderName == "Logout") { logout(); + } else if (folderName == "Save & Restart") { + top.folderFrame.location = "SaveRestart.asp"; } else if (folderName == "Quick Setup") { if (mode == 'AP') top.folderFrame.location = "Basic_AOperation_Content.asp";
ASUS RT-N15U
Кстати, раз уж про mkweb написали, там давно один баг есть - при отключении cdma остается в меню usb ppp log. Патчик из моей версии прошивки -
Code:Index: mkweb =================================================================== --- mkweb (revision 2454) +++ mkweb (working copy) @@ -120,7 +123,7 @@ rm -f ../web_$MODEL/Main_ChatStatus_Content.asp rm -f ../web_$MODEL/Advanced_ConnectionMode_Content.asp rm -f ../web_$MODEL/Main_SysInfo_Content.asp - sed -ri '/3G\/CDMA Modem/d;/Main_SysInfo_Content/d' ../web_$MODEL/index.js + sed -ri '/3G\/CDMA Modem/d;/Main_SysInfo_Content/d;/Main_ChatStatus_Content/d' ../web_$MODEL/index.js sed -ri '/usbmodem/d' ../web_$MODEL/Advanced_LANWAN_Content.asp fi
Верно подмечено, спасибо.
Однако, web интерфейс - это абстракция над тем, что и с какими версиями крутится внутри. Поэтому править нужно не svg файл, а httpd, чтобы он сразу выдавал total, idle и sys.
iowait вообще добавлять к загруженности не стоит, как в procps 2.x, irq/sirq - нужно.
Да, давно хотел добавить, все руки не доходили.
Пара замечаний - доступ к favicon.ico должен быть без авторизации и только к нему, шаблон *.ico - уже с авторизацией, если когда нибудь это и понадобится. саму иконку я бы выдрал из официальных морд, чёб нет.
попробуй вот это, должно прозрачно работать на всех ветках
Code:Index: web_ex.c =================================================================== --- web_ex.c (revision 2455) +++ web_ex.c (working copy) @@ -2081,24 +2081,43 @@ fputs("\r\n", stream); /* terminator */ } +struct cpu_jiff { + /* Linux 2.4.x has only first four */ + unsigned long long user; + unsigned long long nice; + unsigned long long sys; + unsigned long long idle; + unsigned long long iowait; + unsigned long long irq; + unsigned long long softirq; + unsigned long long steal; + unsigned long long guest; +}; + static void do_cpustat(char *url, FILE *stream) { - char line[256]; - int i, llen; - char buffer[256]; - int strbuffer = 0; - buffer[strbuffer++] = '\n'; - FILE *in = fopen("/proc/stat", "rb"); - if (in == NULL) return; - if (fgets(line, sizeof(line), in) == NULL) return; - llen = strlen(line); - for (i = 0; i < llen; i++) { - buffer[strbuffer++] = line[i]; + FILE *fp; + char line[80]; + struct cpu_jiff cpu; + + fp = fopen("/proc/stat", "rb"); + if (fp == NULL) + return; + memset(&cpu, 0, sizeof(cpu)); + + if (fgets(line, sizeof(line), fp) + && sscanf(line, "cpu %llu %llu %llu %llu %llu %llu %llu %llu %llu", + &cpu.user, &cpu.nice, &cpu.sys, &cpu.idle, + &cpu.iowait, &cpu.irq, &cpu.softirq, &cpu.steal, &cpu.guest) >= 4) + { + /* procps 2.x does not count iowait as busy time */ + cpu.sys += cpu.irq + cpu.softirq + cpu.steal + cpu.guest; + cpu.idle += cpu.iowait; + websWrite(stream, "\ncpu %llu %llu %llu %llu", + cpu.user, cpu.nice, cpu.sys, cpu.idle); } - buffer[strbuffer] = 0; - fclose(in); - websWrite(stream, "%s", buffer); + fclose(fp); } static void
Last edited by Omega; 02-03-2011 at 17:12. Reason: 2 post merged
ASUS WL5xx: FW 1.9.2.7-d-rXXXX / обсуждение прошивки [RU] / firmware discussion [EN] | bip irc proxy
ASUS RT-N1x: FW 1.9.2.7-rtn-rXXXX / обсуждение прошивки [RU] / firmware discussion [EN] | fake ident daemon