定制界面

概述

定制界面功能是指用户可以独自设计并嵌入用于进行路由器设置的界面 (支持WWW浏览器的用户接口)。路由器中备有用于从主机HTTP传输设置的接口,用户使用JavaScript创建界面。

雅马哈路由器中虽然配备了WWW浏览器设置支援功能,但是以前不能由各个用户更改设置画面。通过使用本功能,嵌入多个定制界面,从而可以根据登录用户切换界面。

本资料中,首先记述界面数据的保存地址,说明按照登录用户切换保存的多个数据的设置方法。然后,说明具体的定制界面的创建方法,最后记载本功能中使用的命令一览表。

支持机型和固件版本

雅马哈RTX系列在以下的机型及固件中支持定制界面功能。

机型 固件
RTX820 Rev.11.03.16以后
RTX1200 Rev.10.01.20以后
RTX800 Rev.10.01.20以后

详细

界面数据的保存地址

本功能中,创建的界面数据 (HTML文件等) 的保存地址可以使用路由器的内置闪存ROM (RTFS)或者外部存储器。用httpd custom-gui user命令设置每个用户的基点目录时,输入绝对路径或者使用环境变量PWD相应的相对路径。绝对路径和相对路径的具体指定方法请参照RTFS的外部规格书

根据登录用户进行界面的切换

从浏览器访问路由器的首页后,出现Basic认证的对话框。可以根据在这里输入的用户名改变输出到浏览器的界面。下面通过具体示例解说路由器的设置方法和动作。

设置的概要

作为使用定制界面的用户,登录user1、user2、user3、匿名用户这四个用户,如下表设置各用户的基点目录。

用户名 媒体 基点目录
user1 内置闪存ROM (RTFS) /gui/user1
user2 内置闪存ROM (RTFS) /gui/user2
user3 USB存储器 usb1:/gui/user3
匿名用户 内置闪存ROM (RTFS) /gui/anonymous

路由器的设置

首先用login user命令进行登录用户的注册。不需要注册匿名用户。

# login user user1 user1
# login user user2 user2
# login user user3 user3

接着,用httpd custom-gui user命令设置各用户使用的界面数据。

用户user1使用内置闪存ROM (RTFS) 的/gui/user1,因此directory指定为/gui/user1。在index中指定以“/ (斜杠)”结束的URL访问时显示的文件名。这里设为default.html。

# httpd custom-gui user user1 directory=/gui/user1 index=default.html

用户user2时也同样设置。

# httpd custom-gui user user2 directory=/gui/user2 index=default.html

匿名用户时省略用户名。

# httpd custom-gui user directory=/gui/anonymous index=default.html

使用set命令在目录中指定相对路径时,设置如下。

# set PWD=/gui
# httpd custom-gui user user1 directory=user1 index=default.html
# httpd custom-gui user user2 directory=user2 index=default.html
# httpd custom-gui user directory=anonymous index=default.html

用户user3使用USB存储器内的数据,因此设置如下。

# httpd custom-gui user user3 directory=usb1:/gui/user3 index=default.html

除上述设置之外,还需要以下的设置。

  • 用httpd service命令启用HTTP服务器功能
  • 用httpd host命令使主机可以访问路由器。
  • 用user attribute命令使各用户的connection属性中包含HTTP。
  • 用GUI的命令从定制界面进行需要管理员权限的操作时,user attribute命令中各用户的administrator属性应为on。
  • httpd custom-gui use命令应为on。

动作

访问IP地址为192.168.100.1的路由器首页 (http://192.168.100.1/),解说用各用户名登录时的动作。

从首页的认证对话框用用户user1登录后,被重定向为http://192.168.100.1/custom/user1/,/gui/user1/default.html被输出。

访问/custom/user1以下的其它URL时,将/gui/user1作为基点,文件被查看。示例如下:

URL 被查看的文件路径
http://192.168.100.1/custom/user1/nat/ /gui/user1/nat/default.html
http://192.168.100.1/custom/user1/tunnel/template.html /gui/user1/tunnel/template.html

用户user2、user3时也相同。匿名用户时,URL为http://192.168.100.1/custom/anonymous.user/。

设置了httpd custom-gui user命令的用户不能访问内置于路由器中的一般界面。即使直接输入URL访问一般界面,也不会被重定向至定制界面,因而出现认证错误。

登录用户的权限

显示每个用户的定制界面需用一般权限(用户名+登录密码)登录。用管理权限(用户名+管理密码)无法显示。

用GUI的命令从定制界面进行需要管理权限的操作时,需要继一般权限登录后用管理权限进行登录。详细内容在主机向路由器的设置传输中进行说明。

界面的创建方法

说明创建用于进行路由器设置的界面。并且,前提条件是掌握HTTP协议、HTML以及JavaScript相关的基本知识。

主机向路由器传输设置

通过对/custom/execute请求POST方法,从PC等的主机向路由器进行设置传输。设置内容记述于POST方法的内容部分。数据格式为在GUI使用的每个路由器命令,之间用换行码隔开。换行码为CRLF。

下例为从Mozilla Firefox向路由器发送请求时。

POST /custom/execute HTTP/1.1
Host: 192.168.100.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://192.168.100.1/custom/
Content-Length: 752
Content-Type: application/xml; charset=UTF-8
Pragma: no-cache
Cache-Control: no-cache

#1177336751
ip lan2 address 10.0.0.1/8
syslog debug on
show config

内容部分的第1行为会话ID。这是获取界面数据时由路由器所提供的值,因安全性方面的原因 (CSRF对策) 必须记述在内容部分的首行。若该值不存在或者与路由器保有的值不一致,则设置不会被反映,服务器返回506 CGI Permission Denied。该值的获取方法将在界面的样例中进行解说。

若发送了包括需要管理员权限的命令在内的请求,则该命令不会被执行,出现认证对话框。这时需要重新用管理员权限进行登录。

执行结果的获取

执行命令的结果将作为POST请求的答复、以文本格式被路由器发送。内容与从界面输入命令时输出的消息相同。例如,执行show config后将显示所设置的命令一览表。并且,如果输入错误的命令,将出现错误消息。

获取执行结果时可选择回显的ON/OFF。回显ON时,输入的命令和执行结果都被输出。回显OFF时,只有执行结果被输出。回显OFF的状态下,若没有执行结果的内容,则不输出任何内容。

回显默认为OFF。设为ON时,POST请求的内容部分第2行 (会话ID的下一行) 中记述为#echoback=on。

主机至路由器的设置传输的范例中,在回显ON或OFF状态下,对于所发送请求的答复分别如下。

回显ON时

输入的命令和输出内容全都被传输。

HTTP/1.0 200 OK
Date: Sun, 18 Oct 2009 21:40:42 GMT
Expires: Sun, 18 Oct 2009 21:40:42 GMT
Server: YAMAHA-RT
Allow: HEAD, GET, POST
Content-Type: text/plain;charset=shift_jis

# ip lan2 address 10.0.0.1/8
# syslog debug on
# show config
# RTX1200 Rev.10.01.16 (Tue Sep 29 15:44:22 2009)
# MAC Address : 00:a0:de:37:b5:04, 00:a0:de:37:b5:05, 00:a0:de:37:b5:06
# Memory 128Mbytes, 3LAN, 1BRI
# main:  RTX1200 ver=b0 serial=D26009558 MAC-Address=00:a0:de:37:b5:04 MAC-Address=00:a0:de:37:b5:05 MAC-Address=00:a0:de:37:b5:06
# Reporting Date: Oct 19 06:40:42 2009
login password *
administrator password *
login user user1 *
ip lan1 address 192.168.0.1/24
ip lan2 address 10.0.0.1/8
syslog debug on
httpd custom-gui user user1 directory=/gui/user1 index=default.html
#
回显OFF时

只有show config的输出内容被传输。

HTTP/1.0 200 OK
Date: Sun, 18 Oct 2009 21:40:42 GMT
Expires: Sun, 18 Oct 2009 21:40:42 GMT
Server: YAMAHA-RT
Allow: HEAD, GET, POST
Content-Type: text/plain;charset=shift_jis

# RTX1200 Rev.10.01.16 (Tue Sep 29 15:44:22 2009)
# MAC Address : 00:a0:de:37:b5:04, 00:a0:de:37:b5:05, 00:a0:de:37:b5:06
# Memory 128Mbytes, 3LAN, 1BRI
# main:  RTX1200 ver=b0 serial=D26009558 MAC-Address=00:a0:de:37:b5:04 MAC-Address=00:a0:de:37:b5:05 MAC-Address=00:a0:de:37:b5:06
# Reporting Date: Oct 19 06:40:42 2009
login password *
administrator password *
login user user1 *
ip lan1 address 192.168.0.1/24
ip lan2 address 10.0.0.1/8
syslog debug on
httpd custom-gui user user1 directory=/gui/user1 index=default.html

退出登录

雅马哈路由器的HTTP服务器中,不可从同一个IP地址同时登录多个用户。因此,一旦某个用户登录后,其他用户要从同一个主机进行登录,必须等待登录计时器到期或者进行退出登录处理。

为了在定制界面进行退出登录处理,将内容部分第1行中的会话ID、第2行记述的#logout的POST请求发送给/custom/execute。正确退出登录后,服务器将返回200 OK。

需要注意的是:退出登录处理后请立即关闭浏览器。继续访问其他页面的话,将再次进行登录的处理。

统计信息的图表

定制界面的前提为使用GUI的命令,因此,基本上能够进行路由器几乎所有功能相关的设置以及查看。但是,统计信息却无法用GUI的命令获取数据,需要从WWW浏览器设置支援功能的“统计信息”的页面显示图表、或者将数据写入外部存储器。

由于上述情况,准备了设想用内部框架等嵌入定制界面的统计信息专用页面。WWW浏览器设置支援功能的“统计信息”页面中会一次性显示多个图表,而定制界面专用的统计信息页面中可通过指定URL参数获取特定的图表。

URL的指定方法如下所述。

http://(路由器的IP地址)/custom/stat_graph.html?type=type[&span=SPAN][&if=INTERFACE][&class=CLASS]

type参数中指定图表的种类。设置值与含义如下:

设置值 含义
cpu CPU使用率
memory 内存使用率
flow 快速路径的流量数
route 路由数
nat NAT入口数
filter 策略过滤或者动态过滤的会话数
traffic 流量统计
qos QoS统计

用span参数指定数据的获取间隔。能够获取的数据的最大数是固定的,通过指定间隔也决定了获取期间。设置值与含义如下所述。

设置值 含义
1s 1秒钟间隔、过去2分钟
1m 1分钟间隔、过去2小时
12m 12分钟间隔、过去1天
6h 6小时间隔、过去30天

if参数中指定lan1、pp1、tunnel1等接口名称。

class参数中指定QoS的等级。

关于span、if、class的各个参数,必须指定的内容因type参数的设置值而异。对应关系如下:

type参数的设置值 必要的参数
cpu、memory、flow、route、filter span
nat、traffic span、if
qos if、class

type为QoS统计时,获取期间固定为10秒钟间隔、过去20分钟。

通信的时序

自访问路由器的首页起、传输设置、至获取执行结果的时序如下所示。

+----------+                                          +----------+
|   主机   |                                          |  路由器  |
+-----+----+                                          +-----+----+
      |                                                     |
      |     访问http://192.168.100.1/并登录                 |
      |---------------------------------------------------->|
      |                                                     |
      |   重定向至http://192.168.100.1/custom/user/         |
      |<----------------------------------------------------|
      |                                                     |
      |     POST设置至/custom/execute                       |
      |---------------------------------------------------->|
      |                                                     |
      |     发送执行结果                                    |
      |<----------------------------------------------------|
      |                                                     |

GUI的样例

介绍定制界面的样例。JavaScript及HTML相关的详细信息请参照参考书及说明网站等。

  • 使用JavaScript的XMLHttpRequest对象,发送内容部分记述了路由器设置命令的POST请求。由路由器发送的执行结果将设于responseText属性中。
  • 为了获取会话ID,将/custom/custom_gui_lib.js作为外部文件读入,调用getSessionId()方法。该方法的返回值为会话ID。

样本文件为(日文)。应用场景为:将据点端路由器通过PPPoE连接至互联网,通过IPsec与中心端路由器建立通道。

从非浏览器的HTTP客户端使用设置用API

要在/custom/execute (REST API)中POST设置,为了CSRF对策,必须添加会话ID。想要从使用Perl或Ruby等语言创建的简易HTTP客户端进行路由器的设置时,为了获取会话ID,必须搭载JavaScript的引擎,然而这并不容易。

本功能中,考虑到从WWW浏览器以外的HTTP客户端进行设置的情况,另外准备了不需要添加会话ID的REST API。URL为/custom/api。

使用该API需要以下的设置。

HTTP客户端/custom/api对POST路由器的设置命令时,通过URL参数指定httpd custom-gui api password命令所设置的密码。

例如,如果密码为doremi,则URL如下。

http://(路由器的IP地址)/custom/api?password=doremi

访问这个URL时,不需要Basic认证。而且,如前文所述,不需要会话ID且未采取CSRF对策,因此,请勿从浏览器访问。

另外,为了在对于/custom/api的请求中将回显设为ON,内容部分的第1行记述为#echoback=on。

命令

环境变量的设置

[格式]
set NAME=VALUE
no set NAME[=VALUE]
[设置值]
  • NAME ... 环境变量名
  • VALUE ... 设置值
[说明]

设置路由器的环境变量。
环境变量名的命名规则如下所述。

  • 能够使用半角英文数字和下划线 '_',但是第一个字符不能为下划线或者数字。
  • 变量名的长度没有限制,但是set命令不能超过命令行的最大长度 (4095字符),否则无法执行。
  • 区分英文字母的大小写。例如,abc和Abc作为不同的变量被处理。
[注释]

环境变量 "PWD" 的设置值为文件操作命令中相对路径的基点。若"PWD"未设置,相对路径的基点为斜杠(/)ROM (RTFS)的路由目录 '/'。

是否使用定制界面的设置

[格式]
httpd custom-gui use USE
no httpd custom-gui use [USE]
[设置值]
  • USE
    • on ... 使用
    • off ... 不使用
[说明]

设置是否使用定制界面

[初始值]
off

使用定制界面的用户的设置

[格式]
httpd custom-gui user [USER] directory=PATH [index=NAME]
no httpd custom-gui user [USER...]
[设置值]
  • USER ... 用户名
  • PATH ... 基点目录的绝对路径或者相对路径
  • NAME ... 用以斜杠'/'结束的URL访问时输出的文件名
[说明]
  • 设置使用定制界面的用户。访问http://(路由器的IP地址)/,用本命令已注册的用户名登录后,将被重定向至http://(路由器的IP地址)/custom/USER/
  • 省略USER时,则为针对匿名用户的设置。此时,URL为http://(路由器的IP地址)/custom/anonymous.user/。
  • PATH中用绝对路径或者使用了set命令的相对路径指定基点目录。NAME中指定从浏览器用以'/'结束的URL访问时所显示的文件名。
[注释]
  • 设置本命令时,非匿名用户需要事先用login user命令注册用户。如果对于未注册的用户设置本命令就会出错。
  • RTX1200的外部存储器中不能使用自动检索功能。并且,不能在NAME中指定包含斜杠 '/'的字符串。
  • 已设置本命令的用户不能访问内置于路由器的一般界面。
[初始值]
index=index.html

是否使用定制界面API的设置

[格式]
httpd custom-gui api use USE
no httpd custom-gui api use [USE]
[设置值]
  • USE
    • on ... 使用
    • off ... 不使用
[说明]
  • 设置是否受理对于API用的URL "http://(路由器的IP地址)/custom/api" 的POST请求
[注释]
  • 要使用API用的URL,除了本命令外,还需要设置httpd custom-gui use on。
    即使将本命令设为on,若不设置httpd custom-gui api password命令,也无法使用API用的URL。
[初始值]
off

用于访问定制界面API的密码的设置

[格式]
httpd custom-gui api password PASSWORD
no httpd custom-gui api password [PASSWORD]
[设置值]
  • PASSWORD ... 密码
[说明]
  • 设置向API用的URL发送POST请求时的密码。可使用最多32个字符的半角英文数字。
    例如,用本命令已设置密码doremi时,URL为http://(路由器的IP地址)/custom/api?password=doremi。

SYSLOG消息一览

级别 输出消息 含义
INFO Login succeeded for HTTP: IP_ADDR USER_NAME IP地址为IP_ADDR的用户USER_NAME已登录路由器的HTTP服务器。
'administrator' succeeded for HTTP: IP_ADDR USER_NAME IP地址为IP_ADDR的用户USER_NAME已升级为管理用户。
Logout from HTTP: IP_ADDR USER_NAME IP地址为IP_ADDR的用户USER_NAME已从路由器的HTTP服务器退出登录。
DEBUG [CUSTOM_GUI] Execute 'COMMAND' 用定制界面功能执行了命令COMMAND。

返回顶部Return to Top