光猫的嵌入式Linux系统(中兴zxic)操作手记

初始准备

登录Telnet

光猫的嵌入式Linux系统(中兴zxic)一般不提供SSH登录方式,只有Telnet方式。登录Telnet是操作光猫的嵌入式Linux系统(中兴zxic)的前提条件。

Telnet端口是默认关闭的,打开方式参见:光猫超级管理员账号密码和Telnet登陆

为Telnet用户提权(切换为root用户)

为Telnet用户提权是很多操作的前提,后文提到的所有操作默认都是在提权之后进行的。

使用Telnet登录之后,无论登录用户名是什么,即使是root,登录之后也是同样的用户:csp。这是一个属于csp用户组,没有root权限,不属于root组的账户,很多操作无法执行。

执行以下命令进行提权,切换为root用户:

su
# 对于中国移动光猫,默认的root密码是 aDm8H%MdA
Password: aDm8H%MdA

其他运营商的默认密码参见:光猫超级管理员账号密码和Telnet登陆

还有通过FTP的方式来提升文件操作权限(获取root用户组级别的权限),具体参见:光猫的 Telnet 命令(sidbg或sendcmd)和常用管理操作#使用FTP来单纯提升文件操作权限

系统信息

系统版本
uname -a
Linux zxic 4.1.25+ #3 SMP PREEMPT Wed Oct 11 18:10:21 CST 2023 armv7l GNU/Linux

cat /proc/version
Linux version 4.1.25+ (cmdc@zte) (gcc version 4.9.4 (Buildroot 2017.05-svn2186) ) #3 SMP PREEMPT Wed Oct 11 18:10:21 CST 2023
ZXIC inner version : CMCCV5.2.0B07
ZXIC svn number : 207dcac
ZXIC extra message : SGUG
磁盘挂载分析
mount
rootfs on / type rootfs (rw)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
/dev/mtdblock2 on /tagparam type jffs2 (rw,relatime)
tmpfs on /var type tmpfs (rw,relatime,size=81920k)
tmpfs on /usr/cpkTmp type tmpfs (rw,relatime,size=35840k)
/dev/mtdblock4 on /important_bak type jffs2 (rw,relatime)
/dev/mtdblock5 on /userconfig type jffs2 (rw,relatime)
/dev/mtdblock10 on /usr/local/osgi type jffs2 (rw,relatime)
/dev/mtdblock11 on /usr/data type jffs2 (rw,relatime)
/dev/mtdblock9 on /usr/local/upgrade_module type jffs2 (rw,relatime)
overlay on /sbin type overlay (rw,relatime,lowerdir=/sbin,upperdir=/var/overlay/sbin,workdir=/var/overlay/work/sbin)
/dev/mtdblock14 on /GN25L95_datas type jffs2 (rw,relatime)
/dev/mtdblock8 on /wlan type jffs2 (rw,relatime)
  1. rootfs on / type rootfs (rw)
    这表示根文件系统(root filesystem)挂载在/目录上,类型为rootfs,并且是以读写模式挂载的。rootfs通常包含系统的核心文件和目录,是启动时加载的第一个文件系统。该部分使用了映像作为源,在每次系统重启后都会丢失修改内容。

  2. proc on /proc type proc (rw,relatime)
    这是proc文件系统,它是一个虚拟文件系统,用于提供系统内核和进程信息,以文件的形式供用户空间程序访问。proc文件系统总是挂载在/proc目录下。

  3. sysfs on /sys type sysfs (rw,relatime)
    类似procsysfs也是一个虚拟文件系统,用于提供系统硬件和设备信息。它挂载在/sys目录下。

  4. jffs2 文件系统
    多个mtdblock设备挂载了jffs2文件系统,这通常用于闪存存储。jffs2是JFFS(Journaling Flash File System)的第二个版本,专为闪存设计,支持磨损均衡和坏块管理,适合嵌入式系统使用。这些分区分别挂载在/tagparam, /important_bak, /userconfig, /usr/local/osgi, /usr/data, /usr/local/upgrade_module, /GN25L95_datas, 和 /wlan 目录下。这些分区可以读写,并且系统重启后也不会丢失。

  5. tmpfs 文件系统
    tmpfs是基于内存的文件系统,用于存储临时文件。它挂载在/var/usr/cpkTmp目录下,分别分配了81920k和35840k的大小。由于tmpfs在系统重启后会被清除,所以这些目录不适合存放需要持久化的数据。

  6. overlay 文件系统
    overlay文件系统用于创建一个可写层,覆盖在只读的底层文件系统上。这里,/sbin目录使用了overlay文件系统,其底层目录为/sbin,上层目录为/var/overlay/sbin,工作目录为/var/overlay/work/sbin。这意味着/sbin目录的修改会被记录在/var/overlay/sbin中,而不会影响基础的/sbin目录,但是系统重启后会丢失修改内容。

磁盘空间分析
fdisk -l

Disk /dev/mtdblock0: 268 MB, 268435456 bytes
255 heads, 63 sectors/track, 32 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock0 doesn't contain a valid partition table

Disk /dev/mtdblock1: 2 MB, 2097152 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock1 doesn't contain a valid partition table

Disk /dev/mtdblock2: 4 MB, 4194304 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock2 doesn't contain a valid partition table

Disk /dev/mtdblock3: 33 MB, 33554432 bytes
255 heads, 63 sectors/track, 4 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock3 doesn't contain a valid partition table

Disk /dev/mtdblock4: 4 MB, 4194304 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock4 doesn't contain a valid partition table

Disk /dev/mtdblock5: 8 MB, 8388608 bytes
255 heads, 63 sectors/track, 1 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock5 doesn't contain a valid partition table

Disk /dev/mtdblock6: 33 MB, 33554432 bytes
255 heads, 63 sectors/track, 4 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock6 doesn't contain a valid partition table

Disk /dev/mtdblock7: 6 MB, 6291456 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock7 doesn't contain a valid partition table

Disk /dev/mtdblock8: 4 MB, 4194304 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock8 doesn't contain a valid partition table

Disk /dev/mtdblock9: 2 MB, 2097152 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock9 doesn't contain a valid partition table

Disk /dev/mtdblock10: 31 MB, 31457280 bytes
255 heads, 63 sectors/track, 3 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock10 doesn't contain a valid partition table

Disk /dev/mtdblock11: 104 MB, 104202240 bytes
255 heads, 63 sectors/track, 12 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock11 doesn't contain a valid partition table

Disk /dev/mtdblock12: 31 MB, 31457280 bytes
255 heads, 63 sectors/track, 3 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock12 doesn't contain a valid partition table

Disk /dev/mtdblock13: 2 MB, 2097152 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock13 doesn't contain a valid partition table

Disk /dev/mtdblock14: 0 MB, 655360 bytes
255 heads, 63 sectors/track, 0 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/mtdblock14 doesn't contain a valid partition table

mtdblock设备代表的是NAND或NOR闪存的部分区域(所以会提示该区域不包含分区表),它被划分了多个区域。且有些区域并未被挂载,如mtdblock0。

常用操作

挂载mtdblock设备分区
# 创建挂载目录
mkdir /mnt/mtdblock0

# 挂载设备分区(默认为读写模式)
mount -t jffs2 /dev/mtdblock0 /mnt/mtdblock0

# 查看挂载状态和访问设备分区
df -h
ls -l /mnt/mtdblock0
创建定时任务
# 首先创建目录
mkdir -p /var/spool/cron/root

# 创建定时任务
crontab -e

详细用法参见linux常用命令和shell编程#41. 定时任务

注意:重启之后会丢失定时任务的修改和配置

关于重启之后会丢失配置的解决办法

系统的 /var 目录等均是内存(tmpfs),/etc/usr等目录均为镜像源的rootfs,这些地方的内容在每次重启系统之后就会丢失修改,复原为原始内容。

由于系统启动时依赖的脚本都位于/etc(如/etc/profile/etc/init.d/rcS等),故没有常规方法可以在每次系统启动之后自动执行用户自定义的脚本

但是,用户可以将自己的初始化脚本(脚本里可以包含对/var/etc等目录的其他配置或脚本的更改和生效代码)放在mtdblock的分区上(比如/usr/data等),这些分区在重启之后内容仍然会保留,虽然在系统重启后无法自动执行,但只需要手动执行一次即可完成所有初始化内容。

此外,如果能在mtdblock的分区上找到在启动时被调用的脚本代码(POSIX shell script text executable),可以将自己的脚本文件的调用点加入到该脚本代码的末尾,即可在启动时被自动调用。

更多系统操作

光猫的嵌入式Linux系统本质上和openwrt无异,你甚至可以打造成为一个软路由(主要受限于硬件配置,实际可玩性有限)。更多操作可以参考 WNDR4300刷OpenWrt手记

web服务

光猫内部的web服务的实现要点:

  • 使用了BusyBox版本的httpd服务,其网站根目录位于:/home/httpd
  • 使用的动态脚本语言是JSP,运行在 J2RE 之上(Java 1.2版本)。
  • 使用了开源前端框架 Bootstrap ,以及精简版的 jQuery 等JavaScript 库。

BusyBox官网:https://busybox.net
BusyBox命令帮助:https://busybox.net/downloads/BusyBox.html

# BusyBox 官方的命令帮助信息
httpd [-ifv[v]] [-c CONFFILE] [-p [IP:]PORT] [-u USER[:GRP]] [-r REALM] [-h HOME] or httpd -d/-e/-m STRING

Listen for incoming HTTP requests

Options:

        -i              Inetd mode
        -f              Do not daemonize
        -v[v]           Verbose
        -c FILE         Configuration file (default httpd.conf)
        -p [IP:]PORT    Bind to ip:port (default *:80)
        -u USER[:GRP]   Set uid/gid after binding to port
        -r REALM        Authentication Realm for Basic Authentication
        -h HOME         Home directory (default .)
        -m STRING       MD5 crypt STRING
        -e STRING       HTML encode STRING
        -d STRING       URL decode STRING
  • -i: 指定 httpd 运行在 inetd 模式下。在传统的 Unix 系统中,inetd 是一个监听网络端口并按需启动相应服务的守护进程。此模式下,httpd 将由 inetd 调用,而不是作为一个独立的守护进程运行。

  • -f: 如果使用这个标志,httpd 不会变成守护进程(daemon),而是继续在前台运行。这意味着它不会从控制台断开,你可以看到它的输出和错误信息。

  • -v[v]: 使 httpd 处于详细模式,输出更多的调试信息。使用两个 v 可以增加更多详细程度。

  • -c FILE: 指定一个配置文件,通常默认为 httpd.conf。配置文件包含了 httpd 的各种设置,如文档根目录、访问控制等。

  • -p [IP:]PORT: 指定 httpd 绑定的IP地址和端口号。如果不指定IP,则默认绑定所有接口(*),端口号默认为80(HTTP标准端口)。例如,-p 192.168.1.1:8080 将使服务器仅在192.168.1.1的IP上监听8080端口。

  • -u USER[:GRP]: 在绑定完端口后,将进程的用户ID和组ID改为指定的 USERGRP。这有助于提高安全性,确保 httpd 不是以root身份运行。

  • -r REALM: 设置用于基本认证的安全领域。如果设置了这个参数,httpd 将要求客户端进行HTTP基本认证,才能访问服务器上的资源。

  • -h HOME: 设置文档根目录。这是服务器上存放网页和其他可被访问资源的位置,默认为当前目录(.)。

  • -m STRING, -e STRING, -d STRING: 这些选项不直接与 httpd 的运行相关,而是提供了几个附加的功能:

    • -m STRING: 使用MD5算法加密 STRING 并输出结果。这常用于生成密码的散列值,用于配置文件中的基本认证。
    • -e STRING: 对 STRING 进行HTML实体编码,将特殊字符转换为HTML安全的格式。
    • -d STRING: 对 STRING 进行URL解码,将URL编码的字符串转换回原始字符串。
SN认证页面服务端源代码解析
结论

SN认证页面的浏览器端的源代码分析参见:光猫后台SN认证页面源代码分析。(引用的光猫版本不同,故和此处服务端代码并非完全对应)

此处分析和浏览器端的源代码分析结论并不相同,并未发现存在明显的服务端的限制。(但也不排除底层函数对 OBJ_PON_PWD_ID 事件特别处理添加限制)

不过,这和浏览器端的源代码分析结论并不矛盾,因为本来就不是一个光猫版本,所以,存在不一致很正常。实际上,浏览器端的源代码分析的来源光猫版本控制比较严,Telnet无法开启、认证SN页面本来就是不可修改的,也无法对比服务端源代码。而本服务端源代码分析的来源光猫版本控制比较松,Telnet可以开启,所以,其实也没必要关注认证SN页面。

页面主体结构分析
<!-- pon_pwd_conf_gch.gch -->
<%
// 导入 common_gch.gch 文件,包含通用的函数定义
IMPORT FILE "common_gch.gch";

// 定义变量,用于页面配置
var FP_IDENTITY, FP_OBJNAME, FP_MULTIDISPLAY, FP_PARANUM;
FP_PARANUM = 2;

// 定义被隐含的参数数组,该数组对应的控件将会被设置为hidden
var PARA[2] =
{
  "Password",
  "temp"
};

FP_OBJNAME = "OBJ_PON_PWD_ID";
FP_IDENTITY = "";
FP_MULTIDISPLAY = 0;

// 调用函数来完成整个页面数据获取和表单构建的流程
getPageGCH(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM);
%>

<!-- pon_net_ponpwd_js.gch -->
<script language="javascript">
// 定义被隐含的参数数组
var PON_PARA = new Array(
  "Password"
  "temp"
);

// 函数用于检查字符串是否只包含 ASCII 字符
function checkString(value)
{
  var length = value.length;
  for(var j = 0 ;j < length; j++)
  {
    var xx = value.charCodeAt(j); // 获取字符的 Unicode 编码
    if(!(xx >= 0 && xx <= 255)) // 检查是否在 ASCII 范围内
    {
      return false; // 如果不是,返回 false
    }
  }
  return true; // 如果全部字符都在范围内,返回 true
}

// 函数用于获取错误消息,参数为错误代码
function getmsg(id)
{
  var str = new Array();
  // 初始化错误消息数组,每个元素包含错误代码和对应的消息占位符
  str[0]   = new Array(101, "&?error_101;");
  str[1]   = new Array(102, "&?error_102;");
  // ... 其他错误代码和消息 ...
  str[10]  = new Array(222, "&?error_222;");

  return getMsgFormArray(str, arguments);
}

// 页面加载时调用的函数
function pageLoad(url)
{
  // 设置表单提交的 URL
  getObj("fSubmit").action = url;
  
  // 从页面中获取可能的错误字符串
  var errstr = getValue("IF_ERRORSTR");
  
  // 创建参数列表,可能用于后端通信
  <% 
    var Register_HANDLE = create_paralist();
    
    // 获取用户注册对象的实例
    get_inst(Register_HANDLE, "OBJ_USER_REGISTER", "IGD");
    
    // 从对象实例中获取状态和结果
    var Status = get_para(Register_HANDLE, "Status");
    var Result = get_para(Register_HANDLE, "Result");
    
    // 销毁参数列表
    destroy_paralist(Register_HANDLE);
    
    // 根据状态和结果,以及用户权限,可能禁用按钮和输入框
    if(Status == 0 && Result == 1)
    {
      if(getenv("Right") == 2)
      {
  %>
        // 禁用按钮
        jslDisable("Btn_Submit", "Btn_Cancel");
        
        // 禁用所有输入框
        DisableALL();
  <%
      }
    }
  %>
  
  // 如果有错误信息,显示错误
  if (errstr != "SUCC")
  {
    var errpara = getValue("IF_ERRORPARAM");
    if (errpara != "SUCC")
    {
      if (document.getElementById("Fnt"+errpara) == null)
      {
        msg = getmsg(122);
        ShowErrorForCom(null, null, msg);
      }
      else
      {
        msg = getmsg(118, "Fnt"+errpara);
        ShowErrorForCom("Frm"+errpara, null, msg);
      }
    }
    else
    {
      msg = getmsg(122);
      ShowErrorForCom(null, null, msg);
    }
  }
  
  // 加载页面初始值
  pageGetValue();
}

// 函数用于加载页面初始值
function pageGetValue()
{
  // 设置SN字段的值
  jslSetValue("Frm_PonPwd","Password");
}

// 函数用于设置字体元素的文本
function setFont(id,text)
{
  document.getElementById(id).innerHTML = text;
}

// 函数用于检查表单值
function pageCheckValue()
{
  // 初始化错误消息
  var msg = "";
  
  // 获取SN字段的值
  var Password = getValue("Frm_PonPwd");
  
  // 检查SN是否只包含 ASCII 字符
  if(checkString(Password) != true)
  {
    msg = getmsg(114);
    ShowErrorForCom("Frm_PonPwd","Fnt_PonPwd",msg);
    return false;
  }
  
  // 检查SN是否为空或包含非法字符
  if((Password == "") || (Password.match(/[(\x01-\x2F)|(\x3A-\x40)|(\x5B-\x60)|(\x7B-\x7F)]/)))
  {
    msg = getmsg(222);
    ShowErrorForCom("Frm_PonPwd","&?ponloid0019;",msg);
    return false;
  }
  
  // 检查SN长度是否在1到10之间
  var ckresult = checkStrLengthRange(Password, 1, 10);
  if (ckresult == -3)
  {
    msg = getmsg(102,1,10);
    ShowErrorForCom("Frm_PonPwd","Fnt_PonPwd",msg);
    return false;
  }
  if(ckresult == -1)
  {
    msg = getmsg(101);
    ShowErrorForCom("Frm_PonPwd","Fnt_PonPwd",msg);
    return false;
  }
  
  // 检查SN是否包含空格
  for(var i=0;i<Password.length;i++)
  {
    if(Password.charCodeAt(i) == 32)
    {
      msg = getmsg(009);
      ShowErrorForCom("Frm_PonPwd","Fnt_PonPwd",msg);
      return false;
    }
  }
  
  // 如果所有检查都通过,返回 true
  return true;
}

// 函数用于设置表单值
function pageSetValue()
{
  // 初始化隐藏参数
  HiddenParaInit(PON_PARA);
  
  // 设置SN字段的值
  jslSetValue("Password","Frm_PonPwd");
}

// 函数用于提交表单
function pageSubmit()
{
  // 如果表单值检查通过
  if(pageCheckValue() == true)
  {
    // 禁用提交和取消按钮
    jslDisable("Btn_Submit", "Btn_Cancel");
    
    // 设置表单值
    pageSetValue();
    
    // 设置 IF_ACTION 字段,用于指示后端执行操作
    setValue("IF_ACTION", "apply");
    
    // 提交表单
    getObj("fSubmit").submit();
  }
}

// 函数用于取消操作,即重新加载页面
function pageCancel()
{
  jslDisable("Btn_Submit", "Btn_Cancel");
  getObj("fSubmit").submit();
}
</script>

// 页面调用入口,即:http://192.168.1.1/getpage.gch?pid=1002&nextpage=pon_net_ponsn_t.gch
<!-- pon_net_ponsn_t.gch -->
<%
// 导入配置文件
IMPORT FILE "pon_pwd_conf_gch.gch";
// 导入 JavaScript 文件
IMPORT FILE "pon_net_ponpwd_js.gch";
%>
<!-- 页面的 HTML 结构 -->
<div class="space_0">
<table id="ponloid"  class="table" width="100%" border="0" style="border: none">
<tr height="20px" ><td colspan="2"></td></tr>
<tr>
  <!-- 此处引用语言配置文件langcn.conf:<ponsn0003>SN</ponsn0003> -->
  <td class="td1_2"><font id="Fnt_PonPwd">&?ponsn0003;</font></td>
  <td class="td2" style="position: relative;">
    <!-- 认证SN输入框 -->
    <input name="Frm_PonPwd" id="Frm_PonPwd" type="text" value="" class="inputId"
    
    <!-- 如果用户权限不足且区域代码为 "312",则使输入框变为只读,区域代码在 /etc/init.d/regioncode 文件中查询 -->
    <% if( getenv("Right") != 1 && getenv("CountryCode") == "312") { %>
      readonly
    <% } %>
    />
  </td>
</tr>
<tr>
  <td class="td1_2">&nbsp;</td>
  <td class="td2">&nbsp;</td>
</tr>
</table>
</div>

表单主体结构和提交流程分析

完整的处理代码如下:


// 主体初始化部分:
<!-- pon_pwd_conf_gch.gch -->
<%
IMPORT FILE "common_gch.gch";
var FP_IDENTITY, FP_OBJNAME,FP_MULTIDISPLAY,FP_PARANUM;
FP_PARANUM = 2;
var PARA[2] =
{
"Password",
"temp"
};
FP_OBJNAME = "OBJ_PON_PWD_ID";
FP_IDENTITY = "";
FP_MULTIDISPLAY = 0;
getPageGCH(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM);
%>

// 层层依赖解析:
<!-- common_gch.gch -->
function getPageGCH(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM)
{
create_form_start("fSubmit", "");
getSubmitGCH(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM);
create_form_end();
}

function create_form_start(ID, URL)
{
var v ="<FORM NAME="+ ID +" ID="+ ID +" METHOD='POST' action="+ URL +">\n";
=v;
recordServerOutput(v);
}

function getSubmitGCH(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM)
{
var FP_ACTION   = request("IF_ACTION");
var FP_INDEX    = getInstIndex("new");
var FP_ERRORSTR = "SUCC";
createSubmitHidden(FP_MULTIDISPLAY, PARA, FP_PARANUM, FP_INDEX);
getBasicGCH(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM, FP_ACTION, FP_INDEX, FP_ERRORSTR);
setInstNumHidden(FP_OBJNAME, FP_MULTIDISPLAY);
}

function getInstIndex(flag)
{
var FP_INDEX = request("IF_INDEX");
FP_INDEX = ifIndexNULL(flag, FP_INDEX);
return FP_INDEX;
}

function createSubmitHidden(FP_MULTIDISPLAY, PARA, FP_PARANUM, FP_INDEX)
{
if(0 == FP_MULTIDISPLAY)
{
createSingleInstHidden(PARA, FP_PARANUM);
}
else if(1 == FP_MULTIDISPLAY)
{
createMultiInstHidden(PARA, FP_PARANUM, FP_INDEX);
}
}

function createSingleInstHidden(PARA, FP_PARANUM)
{
create_hidden_newpara(PARA, FP_PARANUM);
createBasicHidden();
}

function create_hidden_newpara(PARA[], num)
{
var v = "";
for(var i = 0; i < num ; i ++)
{
v +="<INPUT type='hidden' name="+ PARA[i] +"   ID="+ PARA[i] +" value=''>\n";
v +="<script language=javascript>Transfer_meaning('";
v +=PARA[i];
v +="','";
v +="');";
v +="</script>\n";
}
=v;
recordServerOutput(v);
}

function createBasicHidden()
{
create_hidden_sep("IF_ACTION", "");
create_hidden_sep("IF_ERRORSTR", "SUCC");
create_hidden_sep("IF_ERRORPARAM", "SUCC");
create_hidden_sep("IF_ERRORTYPE", -1);
}

function create_hidden_sep(ID, value)
{
var v ="<INPUT type='hidden' name="+ ID +" ID="+ ID +" value=''>\n";
v +="<script language=javascript>Transfer_meaning('";
v +=ID;
v +="','";
v +=encodeJS(value);
v +="');";
v +="</script>\n";
=v;
recordServerOutput(v);
}

function createMultiInstHidden(PARA, FP_PARANUM, FP_INDEX)
{
create_hidden_newpara(PARA, FP_PARANUM);
createHigherHidden(FP_INDEX);
}

function createHigherHidden(FP_INDEX)
{
createBasicHidden();
create_hidden_sep("IF_INDEX", FP_INDEX);
create_hidden_sep("IF_INSTNUM", "");
}

function getBasicGCH(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM, FP_ACTION, FP_INDEX, FP_ERRORSTR)
{
var FP_INSTNUM  = 0;
var FP_IDENTITY = "";
if(1 == FP_MULTIDISPLAY && (FP_ACTION == "apply" || FP_ACTION == "delete"))
{
FP_INSTNUM = query_list(FP_OBJNAME, "IGD");
if (FP_INSTNUM != 888 && FP_INSTNUM > 0 && FP_INDEX >= 0)
{
FP_IDENTITY = query_identity(FP_INDEX);
}
}
FP_ERRORSTR = applyOrNewOrDelInst(FP_OBJNAME, FP_ACTION, FP_IDENTITY, PARA, FP_PARANUM, FP_ERRORSTR);
if("SUCC" != FP_ERRORSTR)
{
FP_INDEX    = -1;
FP_IDENTITY = "";
}
FP_INSTNUM = displayInst(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM, FP_ERRORSTR);
getDisplayInstError(FP_ERRORSTR);
return FP_ERRORSTR;
}

function applyOrNewOrDelInst(FP_OBJNAME, FP_ACTION, FP_IDENTITY, PARA, FP_PARANUM, FP_ERRORSTR)
{
if("apply" == FP_ACTION || "new" == FP_ACTION)
{
FP_ERRORSTR = applyOrNewInst(FP_OBJNAME, FP_ACTION, FP_IDENTITY, PARA, FP_PARANUM, FP_ERRORSTR);
}
else if("delete" == FP_ACTION && "" != FP_IDENTITY)
{
del_inst(FP_OBJNAME, FP_IDENTITY);
FP_ERRORSTR = getNewInstError(FP_ERRORSTR);
}
return FP_ERRORSTR;
}

function applyOrNewInst(FP_OBJNAME, FP_ACTION, FP_IDENTITY, PARA, FP_PARANUM, FP_ERRORSTR)
{
if ("apply" == FP_ACTION ||  "new" == FP_ACTION)
{
setInst(FP_OBJNAME, FP_IDENTITY, PARA, FP_PARANUM);
}
return getNewInstError(FP_ERRORSTR);
}

function setInst(FP_OBJNAME, FP_IDENTITY, PARA, FP_PARANUM)
{
var FP_HANDLE = create_paralist();
for(var i = 0; i < FP_PARANUM; i++)
{
setpara(FP_HANDLE, PARA[i]);
}
FP_IDENTITY = set_inst(FP_HANDLE, FP_OBJNAME, FP_IDENTITY);
return FP_IDENTITY;
}

function setpara(handle, para_name)
{
set_para(handle, para_name, request(para_name));
}

function setInstNumHidden(FP_OBJNAME, FP_MULTIDISPLAY)
{
if (FP_MULTIDISPLAY == 1)
{
set_hidden("IF_INSTNUM", getInstNum(FP_OBJNAME));
}
}

function getInstNum(FP_OBJNAME)
{
return query_list(FP_OBJNAME, "IGD");
}

function set_hidden(ID, value)
{
var v="<script language=javascript>Transfer_meaning('";
v +=ID;
v +="','";
v +=encodeJS(value);
v +="');";
v +="</script>\n";
=v;
recordServerOutput(v);
}

function create_form_end()
{
var v = "</FORM>\n";
=v;
recordServerOutput(v);
}

根据主体初始化参数,可以得到的具体化生成的表单大致如下:

<FORM NAME="fSubmit" ID="fSubmit" METHOD='POST'>
    <!-- Hidden fields for PARA array -->
    <INPUT type='hidden' name="Password" ID="Password" value=''>
    <script language=javascript>Transfer_meaning('Password','');</script>
    
    <INPUT type='hidden' name="temp" ID="temp" value=''>
    <script language=javascript>Transfer_meaning('temp','');</script>
    
    <!-- Basic hidden fields -->
    <INPUT type='hidden' name="IF_ACTION" ID="IF_ACTION" value=''>
    <script language=javascript>Transfer_meaning('IF_ACTION','');</script>
    
    <INPUT type='hidden' name="IF_ERRORSTR" ID="IF_ERRORSTR" value='SUCC'>
    <script language=javascript>Transfer_meaning('IF_ERRORSTR','SUCC');</script>
    
    <INPUT type='hidden' name="IF_ERRORPARAM" ID="IF_ERRORPARAM" value='SUCC'>
    <script language=javascript>Transfer_meaning('IF_ERRORPARAM','SUCC');</script>
    
    <INPUT type='hidden' name="IF_ERRORTYPE" ID="IF_ERRORTYPE" value='-1'>
    <script language=javascript>Transfer_meaning('IF_ERRORTYPE','-1');</script>
    
    <!-- No additional hidden fields for IF_MULTIDISPLAY since it's set to 0 -->
    
    <!-- IF_INSTNUM hidden field is not included because FP_MULTIDISPLAY is not 1 -->
    
</FORM>

提交的主流程,即 IF_ACTION 参数为“apply”的处理过程,概述如下:

  1. 初始化参数

    • IF_ACTION 为提交表单请求所带参数
  2. 调用 getBasicGCH 函数

    • 这个函数是处理流程的入口点。
  3. 调用 setInst 函数

    • 创建参数列表FP_HANDLE
    • 遍历PARA数组并为每个参数调用setpara函数来设置值,通过request(para_name)获取参数值。
  4. 调用 displaySingleInst 函数

    • 创建参数列表FP_HANDLE
    • 调用get_inst来获取实例信息。
    • 调用cover_hidden来覆盖隐藏字段。
    • 销毁参数列表FP_HANDLE
Telnet页面服务端源代码解析
<!-- cat tserver_cfg_gch.gch -->
<%
IMPORT FILE "common_gch.gch";
var FP_OBJNAME      = "OBJ_TSERVER_CONF_ID";
var FP_MULTIDISPLAY = 0;
var FP_PARANUM      = 5;
var PARA[5] =
{
"TS_Enable",
"Wan_Enable",
"Lan_Enable",
"TS_UName",
"TS_UPwd"
};
// 根据初始化变量来构造页面的Form,同SN认证页面的表单主体结构和提交流程分析
getPageGCH(FP_OBJNAME, FP_MULTIDISPLAY, PARA, FP_PARANUM);
%>

<!-- cat tele_sec_tserver_js.gch -->
<script language="javascript">
var TSERVER_PARA = new Array(
"TS_Enable",
"Wan_Enable",
"Lan_Enable",
"TS_UName",
"TS_UPwd"
);

// 错误消息
function getmsg(id)
{

var str     = new Array();
str[0]   = new Array(102, "&?error_102;");
str[1]   = new Array(103, "&?error_103;");
...
str[11]   = new Array(1025, "&?error_1025;");

return getMsgFormArray(str, arguments);
}

// 检查是否存在特殊字符
function checkStrSpecilCharacter(value)
{
if(checkNull(value) == false)
{
return -1;
}
var regNumber = /\d+/;
var regString = /[a-zA-Z]+/;
var regSpecil = /[(\x01-\x2F)|(\x3A-\x40)|(\x5B-\x60)|(\x7B-\x7F)]/;
if (value.match(regNumber) && value.match(regString) && value.match(regSpecil))
{
return true;
}
else
{
return -3;
}
return true;
}

// 检测输入值
function pageCheckValue()
{
var msg = "";

if(getValue("Frm_TSUsername")=="")
{
msg =getmsg(101);
ShowErrorForCom("Frm_TSUsername","Fnt_Username",msg);
return false;
}

if(checkNull(getValue("Frm_TSPassword")) == false)
{
msg =getmsg(101);
ShowErrorForCom("Frm_TSPassword","Fnt_Password",msg);
return false;
}
if(checkGenStringForASC(getValue("Frm_TSPassword")) != true)
{
msg = getmsg(114);
ShowErrorForCom("Frm_TSPassword","Fnt_Password",msg);
return false;
}
var value = getValue("Frm_TSPassword");
if(checkStrLengthRange(value, 8, 256) == -3)
{
msg = getmsg(244);
ShowErrorForCom("Frm_TSPassword","Fnt_Password",msg);
return false;
}
if(checkStrSpecilCharacter(value) == -3)
{
msg = getmsg(243);
ShowErrorForCom("Frm_TSPassword","Fnt_Password",msg);
return false;
}
return true;
}
function Telnet_Switch()
{
}

// 页面加载脚本
function pageLoad(url)
{
getObj("fSubmit").action = url;
var errstr= getValue("IF_ERRORSTR");
var errpara = getValue("IF_ERRORPARAM");
OldProcessRet(errstr, errpara);
moveErrLayer(408,130);
pageGetValue();
}

// 根据值来初始化页面控件
function pageGetValue()
{
if(getValue("TS_Enable") == 1)
{
setChecked("Frm_Ts_Enable",true);
jslEnable("Frm_Wan_Enable");
jslEnable("Frm_Lan_Enable");
}
else
{
setChecked("Frm_Ts_Enable",false);
jslDisable("Frm_Wan_Enable");
jslDisable("Frm_Lan_Enable");
}
if(getValue("Wan_Enable") == 1)
{
setChecked("Frm_Wan_Enable",true);
}
else
{
setChecked("Frm_Wan_Enable",false);
}
if(getValue("Lan_Enable") == 1)
{
setChecked("Frm_Lan_Enable",true);
}
else
{
setChecked("Frm_Lan_Enable",false);
}
jslSetValue("Frm_TSUsername", "TS_UName");
jslSetValue("Frm_TSPassword", "TS_UPwd");
}

// 根据页面控件的值设置参数变量
function pageSetValue()
{
if(getChecked("Frm_Wan_Enable") == true)
{
setValue("Wan_Enable",1);
}
else
{
setValue("Wan_Enable",0);
}
if(getChecked("Frm_Lan_Enable") == true)
{
setValue("Lan_Enable",1);
}
else
{
setValue("Lan_Enable",0);
}
if(getChecked("Frm_Ts_Enable") == true)
{
setValue("TS_Enable", 1);
jslEnable("Frm_Wan_Enable");
jslEnable("Frm_Lan_Enable");
}
else
{
setValue("TS_Enable", 0);
jslDisable("Frm_Wan_Enable");
jslDisable("Frm_Lan_Enable");
}
jslSetValue("TS_UName", "Frm_TSUsername");
jslSetValue("TS_UPwd", "Frm_TSPassword");
}

// 提交表单
function pageSubmit()
{
if(pageCheckValue() == true)
{
DisableALL();
pageSetValue();
setValue("IF_ACTION", "apply");
getObj("fSubmit").submit();
}
else
{
}
}
function pageCancel()
{
DisableALL();
getObj("fSubmit").submit();
}
</script>

// 页面调用入口,即:http://192.168.1.1/getpage.gch?pid=1002&nextpage=tele_sec_tserver_t.gch
<!-- cat tele_sec_tserver_t.gch -->
<%
IMPORT FILE "tserver_cfg_gch.gch";
IMPORT FILE "tele_sec_tserver_js.gch";
%>
<table id="TestContent"  class="table" width="100%" border="0" style="border: none">
<tr>
// 文本在langcn.conf:<telnet_001>启用Telnet</telnet_001>
<td class="td1_2">&?telnet_001;</td>
<td class="td2">
<input id="Frm_Ts_Enable" name="Frm_Ts_Enable" class="checkbox_height" type="checkbox" value="" onclick="Telnet_Switch()"/>
</td>
</tr>
<tr>
<td class="td1_2"><font id="Fnt_Username">&?telnet_006;</font></td>
<td class="td2"><input name="" type="text" class="inputId"  name="Frm_Username" id="Frm_TSUsername" value="" size="15" /></td>
</tr>
<tr id="InputPassword" >
<td class="td1_2"><font id="Fnt_Password">&?telnet_007;</font></td>
<td class="td2"><input name="" type="password" class="inputId"  name="Frm_Password" id="Frm_TSPassword" value="" size="15" autocomplete="off"/></td>
</tr>
<tr>
<td class="td1_2">&?telnet_002;</td>
<td class="td2">
<input id="Frm_Wan_Enable" name="Frm_Wan_Enable" class="checkbox_height" type="checkbox" value="" onchange="" />
</td>
</tr>
<tr>
<td class="td1_2">&?telnet_005;</td>
<td class="td2">
<input id="Frm_Lan_Enable" name="Frm_Lan_Enable" class="checkbox_height" type="checkbox" value="" onchange="" />
</td>
</tr>
</table>
其他类似SN、Telnet页面
FTP页面
// 页面调用入口,即:http://192.168.1.1/getpage.gch?pid=1002&nextpage=pon_app_ftp_t.gch
<!-- pon_app_ftp_t.gch -->
<%
IMPORT FILE "pon_app_ftp_gch.gch";
IMPORT FILE "pon_app_ftp_js.gch";
%>
Samba页面
// 页面调用入口,即:http://192.168.1.1/getpage.gch?pid=1002&nextpage=app_samba_cfg_t.gch
<!-- app_samba_cfg_t.gch -->
<%
IMPORT FILE "samba_cfg_gch.gch";
IMPORT FILE "app_samba_cfg_js.gch";
%>
index页面服务端源代码解析
index页面处理机制
// 如果`REDIRECT_SCRIPT`包含特定字符串(如`"&telnet.gch"`、`"&factoryreset.gch"`等),则重定向到对应的脚本文件
<!-- public/index.gch -->
<%
IMPORT FILE "global.gch";
var redirect_script = getenv("REDIRECT_SCRIPT");
if (redirect_script IS NOT NULL
&& (strstr(redirect_script,0,"&telnet.gch") != -1))
{
redirect_script = "telnet.gch";
}
if (redirect_script IS NOT NULL
&& (strstr(redirect_script,0,"&factoryreset.gch") != -1))
{
redirect_script = "factoryreset.gch";
}
if (redirect_script IS NOT NULL
&& (strstr(redirect_script,0,"device_status.gch") != -1))
{
redirect_script = "device_status.gch";
}
if (redirect_script IS NOT NULL
&& (strstr(redirect_script,0,"cmdcexception.gch") != -1))
{
redirect_script = "cmdcexception.gch";
}
if(redirect_script == "web/cmcc/gch/getpage.gch")
{
redirect_script = "web/cmcc/gch/template_user.gch";
}
if (redirect_script IS NOT NULL
&& redirect_script != "N/A"
&& redirect_script != ""
&& redirect_script != "index.gch")
{
switch (redirect_script)
{
case "start.ghtml":
IMPORT FILE "frame.gch";
break;
case "ajaxQueryDevice.gch":
case "ajaxQueryWANRate.gch":
case "ajaxWirelessSpirit.gch":
case "logged_out.gch":
case "query_dir.gch":
case "setlang.gch":
case "system_busy_t.gch":
case "template.gch":
case "templateLight.gch":
case "top.gch":
case "wlan_wapiapkey.gch":
case "manager_dev_query_t.gch":
case "manager_version_query_t.gch":
case "manager_remoteugr_query_t.gch":
case "app_ftp_fresh_t.gch":
case "Get_WANCStatus.gch":
case "web_shell_cmd.gch":
case "tr069_business_t.gch":
case "tr069_registering_t.gch":
case "register.gch":
case "mode_middleware.gch":
case "tr069_registering.gch":
case "tr069_servering.gch":
case "manager_dev_version_t.gch":
case "status_country_code_t.gch":
case "url_write_sn.gch":
case "tr069_updating.gch":
case "tr069_updatingfinish.gch":
case "ajaxComLogic.gch":
case "dev_restart_t.gch":
case "pon_simcard_notonline.gch":
case "pon_simcard_writefail.gch":
case "pon_simcard_newcardreboot.gch":
case "checkSessionToken.gch":
case "gotoshop.gch":
case "gotoshop_getURL.gch":
case "upgrade.gch":
case "upgrade_select.gch":
case "ajax_user_register.gch":
case "wlanWapiCert_dev_query_t.gch":
case "telnet.gch":
case "factoryreset.gch":
case "device_status.gch":
case "cmdcexception.gch":
case "web/cmcc/gch/main.gch":
case "web/cmcc/gch/template_user.gch":
case "web/cmcc/gch/top.gch":
case "web/cmcc/gch/parcntrl_dev_info.gch":

case "web/cmcc/gch/status_bandwidth_gch.gch":
case "web/cmcc/gch/status_terminal_info_gch.gch":
case "web/cmcc/gch/status_term_blktype_gch.gch":
case "web/cmcc/gch/all_mac_gch_user.gch":
case "web/cmcc/gch/parcntrl_dev_info.gch":
case "web/cmcc/gch/fw_mac_gch.gch":
case "web/cmcc/gch/fw_mac_base_gch.gch":
case "web/cmcc/gch/USBStorageFormat.gch":
case "web/cmcc/gch/SpeedTest.gch":
case "web/cmcc/gch/telnetCfg_gch.gch":
case "web/cmcc/gch/setlang.gch":
IMPORT FILE redirect_script;
break;
default:
header("HTTP/1.1 404 Not Found");
var request_uri = getenv("REQUEST_URI");
%>
<HTML>
<HEAD><TITLE>404 Not Found</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#2020ff" VLINK="#4040cc">
<H2>404 Not Found</H2>
The requested URL was not found on this server.
<!--
Padding so that MSIE deigns to show this error instead of its own canned one.
Padding so that MSIE deigns to show this error instead of its own canned one.
Padding so that MSIE deigns to show this error instead of its own canned one.
Padding so that MSIE deigns to show this error instead of its own canned one.
Padding so that MSIE deigns to show this error instead of its own canned one.
Padding so that MSIE deigns to show this error instead of its own canned one.
-->
</BODY>
</HTML>
<%
break;
}
}
%>
Telnet脚本(其他类似)
// 调用形式:http://192.168.1.1/usr=CMCCAdmin&psw=aDm8H%25MdA&cmd=1&telnet.gch
<!-- telnet.gch -->
<%
if(getenv("ponmode")== "XGPON" || getenv("ponmode")== "GPON" )
{
IMPORT FILE "common_gch.gch";
var URL=getenv("REDIRECT_SCRIPT");
var usr,psw,cmd;
var start;
var end;
var flag = 0;

// 从URL中解析出usr、psw和cmd的值
start = strstr(URL, 0, "=");
if (start > 0)
{
usr = substr(URL, 0, start);
if(usr == "usr"){
end = strstr(URL, 0, "&");
}
else {
flag = -1;
}
usr = substr(URL, start+1, end);
}
start = strstr(URL, end, "=");
start = start +end;
if (start > 0)
{
psw = substr(URL, end+1, start);
if(psw == "psw"){
end = strstr(URL, start, "&");
end = end +start;
}
else {
flag = -1;
}
psw = substr(URL, start+1, end);
}
start = strstr(URL, end, "=");
start = start +end;
if (start > 0)
{
cmd = substr(URL, end+1, start);
if(cmd == "cmd"){
end = strstr(URL, start, "&");
end = end +start;
}
else {
flag = -1;
}
cmd = substr(URL, start+1, end);
}
log_gch("****************************usr="+usr+" psw="+psw+" cmd="+cmd);

// 检查cmd是否为"0"或"1",否则直接失败
if(cmd != "0" && cmd != "1")
{
flag = -1;
}
// 从设备中读取管理员和用户的用户名和密码
// 获取的值分别为$userAdmin、$passAdmin(管理员用户名和密码)和$userUser、$passUser(普通用户用户名和密码)。
if(flag == 0){
var FP_OBJNAME  = "OBJ_USERINFO_ID";
var FP_HANDLE = create_paralist();
get_inst(FP_HANDLE, FP_OBJNAME, "IGD.AU1");
var userAdmin = get_para(FP_HANDLE, "Username");
var passAdmin = get_para(FP_HANDLE, "Password");
destroy_paralist(FP_HANDLE);
FP_HANDLE = create_paralist();
get_inst(FP_HANDLE, FP_OBJNAME, "IGD.AU2");
var userUser = get_para(FP_HANDLE, "Username");
var passUser = get_para(FP_HANDLE, "Password");
destroy_paralist(FP_HANDLE);
log_gch("****************************usr="+usr+" psw="+psw+" cmd="+cmd);
// 根据输入的usr和psw验证用户身份
// 用户名:"CMCCAdmin" 或 $userAdmin,密码:"aDm8H%MdA" 或 $passAdmin
// 用户名:$userUser,密码:$passUser
// 否则,验证失败
switch(usr){
case "CMCCAdmin":
case userAdmin:
log_gch("****************************usr="+usr+" psw="+psw+" cmd="+cmd);
if((psw != "aDm8H%MdA" && psw != passAdmin)){
flag = -1;
}
break;
case userUser:
if(psw != passUser){
flag = -1;
}
break;
default:
flag = -1;
}
// 验证通过,更改配置
if(flag == 0){
var FP_HANDLE = create_paralist();
set_para(FP_HANDLE,"TS_Enable",cmd);
set_para(FP_HANDLE,"Wan_Enable",0);
set_para(FP_HANDLE,"Lan_Enable",1);
set_para(FP_HANDLE,"TPage_Mode",1);
set_inst(FP_HANDLE, "OBJ_TSERVER_CONF_ID", "IGD.AU1");
}
}
// 显示成功或错误页面
if(0 == flag){
%>
<HTML>
<HEAD><TITLE>TelnetSet</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#2020ff" VLINK="#4040cc">
<H2>TelnetSet Success!</H2>
</BODY>
</HTML>
<%
}
else {
%>
<HTML>
<HEAD><TITLE>TelnetSet</TITLE></HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#2020ff" VLINK="#4040cc">
<H2>Sorry,Your input is error,please Check!</H2>
</BODY>
</HTML>
<%
}
}
%>

附录

所参考光猫的信息
项目详情
设备型号H5-9
硬件版本号HWVer-A590
软件版本号V32.AA1.04
gch网页

不同光猫系统版本的gch网页文件都有定制、增删,网页文件名称也会有所不同,本版本的所有的gch网页的参考如下:

/home/httpd/manager_SN_register_js.gch
/home/httpd/net_qos_congestion_js.gch
/home/httpd/manager_act_inform_t.gch
/home/httpd/voip_h248qos_t.gch
/home/httpd/fw_alg_gch.gch
/home/httpd/gotoshop_getURL.gch
/home/httpd/net_arpdetect_js.gch
/home/httpd/bucpe_service_switch_js.gch
/home/httpd/sec_filterenable_conf_js.gch
/home/httpd/dns_host_gch.gch
/home/httpd/sec_sc_js.gch
/home/httpd/net_mtu_mtucg_gch.gch
/home/httpd/net_tr069_basic_js.gch
/home/httpd/fw_url_gch.gch
/home/httpd/manager_svr_stimulate_js.gch
/home/httpd/cmc_net_FlowRL_js.gch
/home/httpd/pon_net_wifishare_t.gch
/home/httpd/top.gch
/home/httpd/app_voip_sipdigitmap_js.gch
/home/httpd/sec_fw_servport_js.gch
/home/httpd/app_voip_service_js.gch
/home/httpd/manager_dev_config_js.gch
/home/httpd/net_wlan_secrity_js.gch
/home/httpd/dhcp_newhostinfo_gch.gch
/home/httpd/app_voip_sipmed_t.gch
/home/httpd/pon_net_wifishare_js.gch
/home/httpd/pon_net_backloop_conf_gch.gch
/home/httpd/autorestartgx_cfg_gch.gch
/home/httpd/app_voip_h248_servs_t.gch
/home/httpd/app_voip_VoiceProfile_gch.gch
/home/httpd/rip_gch.gch
/home/httpd/sec_filterout_conf_js.gch
/home/httpd/ipv6_net_manager_js.gch
/home/httpd/pon_net_wlan_high_conf_t.gch
/home/httpd/manager_dev_conf_t_user.gch
/home/httpd/net_ethwan_user_conf_js.gch
/home/httpd/app_voip_h248_servs_js.gch
/home/httpd/e8_net_qos_configuration_t.gch
/home/httpd/upgrade.gch
/home/httpd/net_qos_congestion_statistics_t.gch
/home/httpd/pon_loid_conf_gch.gch
/home/httpd/user_signal_monitor_t.gch
/home/httpd/cmdcexception.gch
/home/httpd/voip_protocal_gch.gch
/home/httpd/common_gch.gch
/home/httpd/app_voip_sipslc_gch.gch
/home/httpd/tele_wanregister_loid.gch
/home/httpd/pon_net_wlan_wps_js.gch
/home/httpd/app_dms_t.gch
/home/httpd/app_voip_sippro_t.gch
/home/httpd/pon_pwd_conf_gch.gch
/home/httpd/pon_voip_cid_sip_gch.gch
/home/httpd/trace_route_gch.gch
/home/httpd/voip_h248main_gch.gch
/home/httpd/net_dhcp_bindonport_t.gch
/home/httpd/frGo2SystemBusy.gch
/home/httpd/pon_manager_led_gch.gch
/home/httpd/e8_net_qos_localapp_new_js.gch
/home/httpd/pon_app_voip_cid_gch.gch
/home/httpd/debug_file_js.gch
/home/httpd/app_mld_snoop_t.gch
/home/httpd/self_diagnose_result.gch
/home/httpd/fw_base_gch.gch
/home/httpd/help_t.gch
/home/httpd/app_voip_h248auth_t.gch
/home/httpd/sec_url_filter_t.gch
/home/httpd/tele_wanregister_success.gch
/home/httpd/devaccinfo_gch.gch
/home/httpd/fw_mac_base_gch.gch
/home/httpd/e8_qos_basic_new_gch.gch
/home/httpd/e8_net_qos_localapp_js.gch
/home/httpd/dhcp_bind_gch.gch
/home/httpd/tele_wanregister_simcard.gch
/home/httpd/manager_dev_restore_js.gch
/home/httpd/qos_qa_new_gch.gch
/home/httpd/fw_filterout_gch.gch
/home/httpd/app_dev_name_js.gch
/home/httpd/app_voip_h248endpoint_js.gch
/home/httpd/voip_sip_server_gch.gch
/home/httpd/gpon_status_link_info_t.gch
/home/httpd/tele_wanregister_sc.gch
/home/httpd/app_virtual_conf_js.gch
/home/httpd/homepage_dev_info_js.gch
/home/httpd/fw_servport_gch.gch
/home/httpd/net_dhcp_specialdevice_t.gch
/home/httpd/app_voip_BasicControl_js.gch
/home/httpd/pon_voip_renew_js.gch
/home/httpd/dhcp_basic_gch.gch
/home/httpd/status_dsliteeth_if_t.gch
/home/httpd/manager_dev_restart_js.gch
/home/httpd/IPv6_internet_wan_query.gch
/home/httpd/dns_dhcphost_gch.gch
/home/httpd/cmc_FlowRL_gch.gch
/home/httpd/dhcp_host_gch.gch
/home/httpd/manager_user_conf_js.gch
/home/httpd/pon_net_cltlmt_t.gch
/home/httpd/net_mtu_mtucg_t.gch
/home/httpd/manager_log_conf_t.gch
/home/httpd/net_dslite_conf_t.gch
/home/httpd/ipv6_net_manager_t.gch
/home/httpd/user_info_gch.gch
/home/httpd/net_vlan_port_binding_js.gch
/home/httpd/status_dslite_if_t.gch
/home/httpd/pon_net_ponloid_js.gch
/home/httpd/net_wlan_conf_t_user.gch
/home/httpd/pon_net_ponsn_t.gch
/home/httpd/dhcp_hostinfo_gch.gch
/home/httpd/speed_test_config_t.gch
/home/httpd/pon_net_backloop_conf_js.gch
/home/httpd/sec_url_filter_conf_js.gch
/home/httpd/mld_snoop_gch.gch
/home/httpd/voip_sip_qos_gch.gch
/home/httpd/net_vxlan_gch.gch
/home/httpd/net_prefix_t.gch
/home/httpd/ddns_client_gch.gch
/home/httpd/voip_rtp_qos_gch.gch
/home/httpd/equip_gch.gch
/home/httpd/app_upnp_conf_t.gch
/home/httpd/pon_net_loid_conf_t.gch
/home/httpd/fw_ip_gch.gch
/home/httpd/net_arpdetect_t.gch
/home/httpd/sec_portfilter_conf_t.gch
/home/httpd/voip_h248main_qos_gch.gch
/home/httpd/tele_wanregister_switch.gch
/home/httpd/wan_lan_query.gch
/home/httpd/voip_vpdtmf_gch.gch
/home/httpd/app_virtual_conf_t.gch
/home/httpd/e8_simcard_loid_t.gch
/home/httpd/weak_signal_conf_t.gch
/home/httpd/app_voip_h248basic_t.gch
/home/httpd/pon_net_backloop_conf_t.gch
/home/httpd/diag_netDiag_arpTable_t.gch
/home/httpd/qos_localapp_gch.gch
/home/httpd/sec_fw_alg_js.gch
/home/httpd/checkSessionToken.gch
/home/httpd/app_mld_conf_t.gch
/home/httpd/app_dmz_conf_t.gch
/home/httpd/voip_h248qos_gch.gch
/home/httpd/app_dev_name_t.gch
/home/httpd/manager_dsl_diag_js.gch
/home/httpd/e8_net_qos_type_t.gch
/home/httpd/pon_simcard_writefail.gch
/home/httpd/log_gch.gch
/home/httpd/voip_linevmedai_gch.gch
/home/httpd/net_11n_conf_t.gch
/home/httpd/app_voip_cid_t.gch
/home/httpd/tele_wanregister.gch
/home/httpd/manager_dsl_diag_t.gch
/home/httpd/tele_wanregister_gd.gch
/home/httpd/dev_restart_t.gch
/home/httpd/host_gch.gch
/home/httpd/manage_tr069_gch.gch
/home/httpd/manager_dev_ping_t.gch
/home/httpd/mirror_gch.gch
/home/httpd/dhcp_bindonport_gch.gch
/home/httpd/serial_config_t.gch
/home/httpd/auth/impl.gch
/home/httpd/auth/api.gch
/home/httpd/auth/common.gch
/home/httpd/auth/timeout_ctl_js.gch
/home/httpd/auth/logout_ctl.gch
/home/httpd/auth/timeout_ctl.gch
/home/httpd/auth/login_ctl.gch
/home/httpd/e8_net_qos_localapp_t.gch
/home/httpd/diagnose_voice_t.gch
/home/httpd/app_iptv_t.gch
/home/httpd/net_sntp_conf_js.gch
/home/httpd/pon_net_user_wlan_conf_js.gch
/home/httpd/sec_fw_alg_t.gch
/home/httpd/voip_h248endpoint_gch.gch
/home/httpd/bucpe_position_info_t.gch
/home/httpd/ipv6_prefix_gch.gch
/home/httpd/app_voip_h248endpoint_t.gch
/home/httpd/e8_net_qos_basic_new_js.gch
/home/httpd/app_upnp_conf_js.gch
/home/httpd/pageinfo_func.gch
/home/httpd/app_voip_sipslc_js.gch
/home/httpd/net_v6_ra_server_t.gch
/home/httpd/pon_net_ponpwd_js.gch
/home/httpd/pon_net_user5_wlan_conf_js.gch
/home/httpd/mode_middleware.gch
/home/httpd/web/cmcc/css/user_common.css
/home/httpd/web/cmcc/css/user_template.css
/home/httpd/web/cmcc/css/user_login_jiulian.css
/home/httpd/web/cmcc/css/user_index.css
/home/httpd/web/cmcc/css/user_login.css
/home/httpd/web/cmcc/css/user_template_cmcc.css
/home/httpd/web/cmcc/css/ulogin.css
/home/httpd/web/cmcc/gch/top.gch
/home/httpd/web/cmcc/gch/status_cpu_mem_js.gch
/home/httpd/web/cmcc/gch/user_signal_monitor_t.gch
/home/httpd/web/cmcc/gch/iot_wifi_setting_t.gch
/home/httpd/web/cmcc/gch/parentcontrol.gch
/home/httpd/web/cmcc/gch/telnetCfg_gch.gch
/home/httpd/web/cmcc/gch/status_display_js.gch
/home/httpd/web/cmcc/gch/fw_mac_base_gch.gch
/home/httpd/web/cmcc/gch/user_net_ethwan_conf_js.gch
/home/httpd/web/cmcc/gch/user_ethwan_t.gch
/home/httpd/web/cmcc/gch/test8.gch
/home/httpd/web/cmcc/gch/usbstoremanagement.gch
/home/httpd/web/cmcc/gch/test9.gch
/home/httpd/web/cmcc/gch/user_manager_onekey_diag_t.gch
/home/httpd/web/cmcc/gch/iot_wifi_setting_gch.gch
/home/httpd/web/cmcc/gch/status_info_t.gch
/home/httpd/web/cmcc/gch/template_user.gch
/home/httpd/web/cmcc/gch/wlanguest.gch
/home/httpd/web/cmcc/gch/user_manager_onekey_diag_gch.gch
/home/httpd/web/cmcc/gch/network_speedtest.gch
/home/httpd/web/cmcc/gch/status_cpu_mem_t.gch
/home/httpd/web/cmcc/gch/status_netconn_t.gch
/home/httpd/web/cmcc/gch/status_adev_t.gch
/home/httpd/web/cmcc/gch/status_terminal_info_gch.gch
/home/httpd/web/cmcc/gch/user_signal_monitor_gch.gch
/home/httpd/web/cmcc/gch/singnalcontrol.gch
/home/httpd/web/cmcc/gch/status_terminal_info_js.gch
/home/httpd/web/cmcc/gch/access_dev_gch.gch
/home/httpd/web/cmcc/gch/test14.gch
/home/httpd/web/cmcc/gch/iot_advance_setting_t.gch
/home/httpd/web/cmcc/gch/status_bandwidth_gch.gch
/home/httpd/web/cmcc/gch/test15.gch
/home/httpd/web/cmcc/gch/status_pon_t.gch
/home/httpd/web/cmcc/gch/status_sysinfo_t.gch
/home/httpd/web/cmcc/gch/status_display_t.gch
/home/httpd/web/cmcc/gch/status_term_blktype_gch.gch
/home/httpd/web/cmcc/gch/test12.gch
/home/httpd/web/cmcc/gch/status_info_js.gch
/home/httpd/web/cmcc/gch/iot_modify_password_js.gch
/home/httpd/web/cmcc/gch/setlang.gch
/home/httpd/web/cmcc/gch/iot_wifi_psk_gch.gch
/home/httpd/web/cmcc/gch/test13.gch
/home/httpd/web/cmcc/gch/test11.gch
/home/httpd/web/cmcc/gch/parcntrl_dev_info.gch
/home/httpd/web/cmcc/gch/user_net_ethwan_conf_t.gch
/home/httpd/web/cmcc/gch/iot_advance_setting_js.gch
/home/httpd/web/cmcc/gch/dhcphost.gch
/home/httpd/web/cmcc/gch/main.gch
/home/httpd/web/cmcc/gch/test10.gch
/home/httpd/web/cmcc/gch/test7.gch
/home/httpd/web/cmcc/gch/USBStorageFormat.gch
/home/httpd/web/cmcc/gch/test6.gch
/home/httpd/web/cmcc/gch/iot_modify_password_gch.gch
/home/httpd/web/cmcc/gch/status_user.gch
/home/httpd/web/cmcc/gch/test5.gch
/home/httpd/web/cmcc/gch/safemanager.gch
/home/httpd/web/cmcc/gch/all_mac_gch_user.gch
/home/httpd/web/cmcc/gch/user_manager_onekey_diag_js.gch
/home/httpd/web/cmcc/gch/test1.gch
/home/httpd/web/cmcc/gch/upnp_gch.gch
/home/httpd/web/cmcc/gch/fw_mac_gch.gch
/home/httpd/web/cmcc/gch/signaloutwall.gch
/home/httpd/web/cmcc/gch/iot_wifi_setting_js.gch
/home/httpd/web/cmcc/gch/SpeedTest.gch
/home/httpd/web/cmcc/gch/iot_modify_password_t.gch
/home/httpd/pon_net_user5_wlan_conf_t.gch
/home/httpd/fw_pm_gch.gch
/home/httpd/frame.gch
/home/httpd/pon_net_cltlmt_js.gch
/home/httpd/ftpclient_gch.gch
/home/httpd/sec_firewall_level_t.gch
/home/httpd/gpon_status_link_info_t_user.gch
/home/httpd/pon_manager_led_time_cfg_gch.gch
/home/httpd/project.conf
/home/httpd/tr069_updating.gch
/home/httpd/manager_forcepush_config_js.gch
/home/httpd/pon_net_wlan_guest_t.gch
/home/httpd/sec_fw_servport_t.gch
/home/httpd/net_dslite_conf_js.gch
/home/httpd/net_dhcp_static_t.gch
/home/httpd/cmc_net_qos_qosconf_down_js.gch
/home/httpd/IPv6_wan_query.gch
/home/httpd/qos_qq_new_gch.gch
/home/httpd/manager_act_inform_js.gch
/home/httpd/cmc_net_qos_qosconf_t.gch
/home/httpd/net_mtu_mtucg_js.gch
/home/httpd/wlan_essid_getSSIDbyIndex_gch.gch
/home/httpd/route_table_gch.gch
/home/httpd/route_static_gch.gch
/home/httpd/pon_net_ponloid_t.gch
/home/httpd/qos_qa_gch.gch
/home/httpd/factoryreset.gch
/home/httpd/tele_sec_tserver_js.gch
/home/httpd/manager_dev_ping_js.gch
/home/httpd/checktoupper.conf
/home/httpd/diag_netDiag_macTable_t.gch
/home/httpd/net_user_wan_conf_t.gch
/home/httpd/net_tr069_cafile_js.gch
/home/httpd/sec_filterin_conf_js.gch
/home/httpd/net_wan_vlan_t.gch
/home/httpd/net_wlan_secrity_FJ_js.gch
/home/httpd/voip_vpcallfeature_gch.gch
/home/httpd/usbrestore_js.gch
/home/httpd/manager_version_query_t.gch
/home/httpd/pon_net_wlan_conf_t.gch
/home/httpd/IPsec_conf_js.gch
/home/httpd/pon_net_LCloid_conf_js.gch
/home/httpd/diag_netDiag_arpTable_js.gch
/home/httpd/qos_qt_gch.gch
/home/httpd/net_ethwan_conf_js.gch
/home/httpd/tele_wanregister_success_cmcc.gch
/home/httpd/app_ddns_conf_js.gch
/home/httpd/eth_wancip_gch.gch
/home/httpd/manager_trace_route_t.gch
/home/httpd/app_mld_conf_js.gch
/home/httpd/manager_log_view_js.gch
/home/httpd/usbbackup_t.gch
/home/httpd/template.gch
/home/httpd/status_ethwan_if_t.gch
/home/httpd/e8_status_wlan_info_t.gch
/home/httpd/voip_fix_gch.gch
/home/httpd/qos_localapp_voip_netqos_gch.gch
/home/httpd/wlan_config.gch
/home/httpd/serial_config_js.gch
/home/httpd/gpon_status_lan_info_t.gch
/home/httpd/SN_write_gch.gch
/home/httpd/net_ethwan_user_conf_t.gch
/home/httpd/app_voip_Dtimer_gch.gch
/home/httpd/tr069_registering.gch
/home/httpd/login_t.gch
/home/httpd/status_usb_info_t.gch
/home/httpd/ddns_hostname_gch.gch
/home/httpd/status_IPsec_conf_t.gch
/home/httpd/pon_net_wlan_wps_t.gch
/home/httpd/epon_status_link_info_t.gch
/home/httpd/app_route_table_t.gch
/home/httpd/app_rip_js.gch
/home/httpd/pon_voip_renew_t.gch
/home/httpd/status_lan_info_t_user.gch
/home/httpd/pon_app_ftp_gch.gch
/home/httpd/voip_sippro.gch
/home/httpd/registerLang.gch
/home/httpd/tele_wanregister_lc.gch
/home/httpd/voip_voiceproc_gch.gch
/home/httpd/manager_autorestart_config_js.gch
/home/httpd/igmp_snoop_gch.gch
/home/httpd/v6_dhcps_gch.gch
/home/httpd/e8_net_qos_configuration_js.gch
/home/httpd/user_signal_monitor_gch.gch
/home/httpd/voip_sip_gch.gch
/home/httpd/pon_voip_siprenew_t.gch
/home/httpd/manager_rm_change_t.gch
/home/httpd/dmenu_func.gch
/home/httpd/all_mac_gch.gch
/home/httpd/device_status.gch
/home/httpd/app_voip_h248auth_js.gch
/home/httpd/app_voip_h248basic_js.gch
/home/httpd/manager_autorestartgx_config_t.gch
/home/httpd/dhcp_specialdevice_gch.gch
/home/httpd/cmc_net_qos_qosconf_down_t.gch
/home/httpd/mac_table_gch.gch
/home/httpd/e8_qos_qb_gch.gch
/home/httpd/app_iptv_js.gch
/home/httpd/pon_status_gemport_info_t.gch
/home/httpd/status_lan_info_t.gch
/home/httpd/net_11n_conf_js.gch
/home/httpd/tele_wait.gch
/home/httpd/app_rip_t.gch
/home/httpd/tr069_business_t.gch
/home/httpd/pon_manager_hltmode_conf_t.gch
/home/httpd/fm_ftpuser_gch.gch
/home/httpd/tele_wanregister_hn2.gch
/home/httpd/voip_switch_gch.gch
/home/httpd/manager_voip_switch_t.gch
/home/httpd/fw_package_ctl.gch
/home/httpd/app_samba_cfg_t.gch
/home/httpd/voip_h248_servs.gch
/home/httpd/SN_register_gch.gch
/home/httpd/app_voip_vpCallTimer_gch.gch
/home/httpd/tserver_cfg_gch.gch
/home/httpd/act_inform_gch.gch
/home/httpd/epon_status_lan_info_t.gch
/home/httpd/global.gch
/home/httpd/usbrestore_t.gch
/home/httpd/net_qos_congestion_t.gch
/home/httpd/pon_voip_renew_gch.gch
/home/httpd/IPsec_conf_gch.gch
/home/httpd/forcepush_cfg_gch.gch
/home/httpd/bucpe_preconfig_info_t.gch
/home/httpd/pon_net_wanuser_conf_js.gch
/home/httpd/dmenu_nowlan.conf
/home/httpd/wlan_config_pri.gch
/home/httpd/weak_signal_conf_js.gch
/home/httpd/bucpe_spdresult_info_t.gch
/home/httpd/net_qos_qostemplate_t.gch
/home/httpd/pon_ethwancpppuser_gch.gch
/home/httpd/system_busy_t.gch
/home/httpd/net_dhcpcleanlink_js.gch
/home/httpd/app_sipline_js.gch
/home/httpd/manager_dev_restore_t.gch
/home/httpd/app_dmz_conf_js.gch
/home/httpd/app_ddns_conf_t.gch
/home/httpd/tele_register_note.gch
/home/httpd/manager_dev_conf_t.gch
/home/httpd/voip_digitalmap.gch
/home/httpd/manager_dev_conf_js.gch
/home/httpd/wan_tty_query.gch
/home/httpd/app_voip_sippro_js.gch
/home/httpd/manager_dev_query_t.gch
/home/httpd/net_qos_congestion_statisticsYN_t.gch
/home/httpd/diagnose_voice_js.gch
/home/httpd/voip_faxt38_gch.gch
/home/httpd/net_v6_dhcp_dynamic_js.gch
/home/httpd/bucpe_dev_info_t.gch
/home/httpd/net_wlan_secrity_t.gch
/home/httpd/pon_cltlmt_gch.gch
/home/httpd/langcn.conf
/home/httpd/v6_br0_dhcp_gch.gch
/home/httpd/app_dms_js.gch
/home/httpd/pon_net_loid_conf_js.gch
/home/httpd/manager_voip_switch_js.gch
/home/httpd/sc_gch.gch
/home/httpd/voip_vpcodec_gch.gch
/home/httpd/ethwancppp_gch.gch
/home/httpd/IPv4_wan_query.gch
/home/httpd/v6_dhcpc_gch.gch
/home/httpd/diag_netDiag_macTable_js.gch
/home/httpd/total_sc_gch.gch
/home/httpd/login.gch
/home/httpd/eth_wancppp_gch.gch
/home/httpd/manager_aduser_conf_t.gch
/home/httpd/voip_h248sub_gch.gch
/home/httpd/app_igmp_snoop_js.gch
/home/httpd/e8_net_qos_basic_js.gch
/home/httpd/tele_wanregister_reset_nopassword.gch
/home/httpd/pon_net_user_wlan_conf_t.gch
/home/httpd/eth_wancbridge_gch.gch
/home/httpd/net_v6_ra_server_js.gch
/home/httpd/public/bootstrap/css/bootstrap.min.css
/home/httpd/public/bootstrap/css/bootstrap.css
/home/httpd/public/bootstrap/css/bootstrap.css.map
/home/httpd/public/bootstrap/css/bootstrap.min.css.map
/home/httpd/public/bootstrap/css/bootstrap-theme.css.map
/home/httpd/public/bootstrap/css/bootstrap-theme.min.css.map
/home/httpd/public/bootstrap/css/bootstrap-theme.css
/home/httpd/public/bootstrap/css/bootstrap-theme.min.css
/home/httpd/public/bootstrap/js/npm.js
/home/httpd/public/bootstrap/js/bootstrap.js
/home/httpd/public/bootstrap/js/bootstrap.min.js
/home/httpd/public/bootstrap/fonts/glyphicons-halflings-regular.woff
/home/httpd/public/bootstrap/fonts/glyphicons-halflings-regular.eot
/home/httpd/public/bootstrap/fonts/glyphicons-halflings-regular.woff2
/home/httpd/public/bootstrap/fonts/glyphicons-halflings-regular.ttf
/home/httpd/public/bootstrap/fonts/glyphicons-halflings-regular.svg
/home/httpd/public/css/mystyles.css
/home/httpd/public/css/user_common.css
/home/httpd/public/css/template_jiulian.css
/home/httpd/public/css/login.css
/home/httpd/public/css/template.css
/home/httpd/public/css/family_main.css
/home/httpd/public/css/stylech.css
/home/httpd/public/css/user_template.css
/home/httpd/public/css/h5.css
/home/httpd/public/css/styleen.css
/home/httpd/public/css/user_login_jiulian.css
/home/httpd/public/css/user_index.css
/home/httpd/public/css/user_login.css
/home/httpd/public/css/user_template_cmcc.css
/home/httpd/public/css/ulogin.css
/home/httpd/public/js/events.js
/home/httpd/public/js/pro_commom.js
/home/httpd/public/js/common_check.js
/home/httpd/public/js/jquery-1.10.2.min.js
/home/httpd/public/js/md5.js
/home/httpd/public/js/common.js
/home/httpd/public/js/menu.js
/home/httpd/public/jquery/jquery.validate.message_cn.js
/home/httpd/public/jquery/jquery-2.1.1.min.js
/home/httpd/public/jquery/jquery.validate.min.js
/home/httpd/public/jquery/jquery-1.5.1.min.js
/home/httpd/public/jquery/jquery-1.7.2.min.js
/home/httpd/public/jquery/jquery.validate.js
/home/httpd/public/jquery/jquery.paging.min.js
/home/httpd/public/jquery/jquery.json-2.3.min.js
/home/httpd/public/jquery/jquery-1.10.2.min.js
/home/httpd/public/jquery/jquery.easy-paging.js
/home/httpd/public/jquery/jquery.json-2.3.js
/home/httpd/public/jquery/jquery.metadata.js
/home/httpd/public/library/plupload.full.min.js
/home/httpd/public/library/jsonUtil.js
/home/httpd/public/library/highcharts-more.js
/home/httpd/public/library/userDefined_valid_methods.js
/home/httpd/public/library/commpage_status_comm.lp
/home/httpd/public/library/json2.js
/home/httpd/public/library/user_common.js
/home/httpd/public/library/highcharts.js
/home/httpd/public/library/lang_ch.js
/home/httpd/public/library/Article.js
/home/httpd/public/library/capsLock.js
/home/httpd/public/library/passwordStrengthCheck.js
/home/httpd/public/library/solid-gauge.src.js
/home/httpd/public/library/echarts.min.js
/home/httpd/public/img/button_nocheck.gif
/home/httpd/public/img/nav_icon_wl.png
/home/httpd/public/img/nav_icon_bz.png
/home/httpd/public/img/login_CMCC_QRCode.png
/home/httpd/public/img/lan-off.gif
/home/httpd/public/img/applink.gif
/home/httpd/public/img/register_content_big.gif
/home/httpd/public/img/wifi_5g_connect.png
/home/httpd/public/img/pon_conn_off.png
/home/httpd/public/img/err_m.png
/home/httpd/public/img/icon_close.png
/home/httpd/public/img/green.gif
/home/httpd/public/img/help.gif
/home/httpd/public/img/lan_grey.png
/home/httpd/public/img/error.gif
/home/httpd/public/img/register_content_none.gif
/home/httpd/public/img/Arrow_2.png
/home/httpd/public/img/red_info.png
/home/httpd/public/img/logo.gif
/home/httpd/public/img/ct_logo.png
/home/httpd/public/img/safe-on.gif
/home/httpd/public/img/speed-on.gif
/home/httpd/public/img/lan_red.png
/home/httpd/public/img/keyoutwall.jpg
/home/httpd/public/img/app.jpg
/home/httpd/public/img/m.png
/home/httpd/public/img/left_bg.gif
/home/httpd/public/img/icon_modify.png
/home/httpd/public/img/nav_icon_aq.png
/home/httpd/public/img/eye_close.png
/home/httpd/public/img/nav_logo.png
/home/httpd/public/img/banner_e8c.gif
/home/httpd/public/img/l.png
/home/httpd/public/img/signal-off.gif
/home/httpd/public/img/status-display-bg.png
/home/httpd/public/img/wifi_bz.jpg
/home/httpd/public/img/lan_green.gif
/home/httpd/public/img/gw_logo.png
/home/httpd/public/img/lengend2.jpg
/home/httpd/public/img/push.gif
/home/httpd/public/img/register_content_big_e8c.gif
/home/httpd/public/img/bt_pwdshow.png
/home/httpd/public/img/yd.jpg
/home/httpd/public/img/lock.png
/home/httpd/public/img/port_bg.png
/home/httpd/public/img/legend.jpg
/home/httpd/public/img/register_content_sichuan.gif
/home/httpd/public/img/keyoutwall3.jpg
/home/httpd/public/img/btn_icon.png
/home/httpd/public/img/jiao_bg.gif
/home/httpd/public/img/usb_port.gif
/home/httpd/public/img/cpu_used_base.png
/home/httpd/public/img/register_banner.gif
/home/httpd/public/img/button_delete_dis.gif
/home/httpd/public/img/lan_green_sub.gif
/home/httpd/public/img/cmcc_login.gif
/home/httpd/public/img/wifi_disconnect.png
/home/httpd/public/img/keyoutwall2.jpg
/home/httpd/public/img/guest-off.gif
/home/httpd/public/img/cpu_used.gif
/home/httpd/public/img/keyoutwall0.jpg
/home/httpd/public/img/up_bg.gif
/home/httpd/public/img/sw_on.png
/home/httpd/public/img/add_icon.png
/home/httpd/public/img/shadow.gif
/home/httpd/public/img/pop_up.gif
/home/httpd/public/img/overtime.gif
/home/httpd/public/img/throwwall.jpg
/home/httpd/public/img/dhcparea_icon.gif
/home/httpd/public/img/keyoutwall1.jpg
/home/httpd/public/img/warn_icon.gif
/home/httpd/public/img/signal-on.gif
/home/httpd/public/img/line_gray.gif
/home/httpd/public/img/person.jpg
/home/httpd/public/img/wired_connect.png
/home/httpd/public/img/s.gif
/home/httpd/public/img/eye_open.gif
/home/httpd/public/img/icon_fold_def.png
/home/httpd/public/img/infomsg.gif
/home/httpd/public/img/store-on.gif
/home/httpd/public/img/button_delete.gif
/home/httpd/public/img/1x26.gif
/home/httpd/public/img/lan_blue.gif
/home/httpd/public/img/modify.png
/home/httpd/public/img/child.gif
/home/httpd/public/img/sidenav_selected_bg.gif
/home/httpd/public/img/img9.png
/home/httpd/public/img/free.gif
/home/httpd/public/img/red.gif
/home/httpd/public/img/mem_used.png
/home/httpd/public/img/img8.png
/home/httpd/public/img/lan_blue_sub.png
/home/httpd/public/img/usb_grey.png
/home/httpd/public/img/nav_logo1.png
/home/httpd/public/img/close.gif
/home/httpd/public/img/bg.gif
/home/httpd/public/img/bottom_brrow.png
/home/httpd/public/img/22x26.gif
/home/httpd/public/img/register_content.gif
/home/httpd/public/img/triangle.jpg
/home/httpd/public/img/cpu_mem_bg.png
/home/httpd/public/img/info.gif
/home/httpd/public/img/enable.gif
/home/httpd/public/img/china-mobile.jpg
/home/httpd/public/img/china-mobile-logo.jpg
/home/httpd/public/img/image_chinamobile.png
/home/httpd/public/img/china-mobile-logo.png
/home/httpd/public/img/icon_unfold_xia.png
/home/httpd/public/img/store-off.gif
/home/httpd/public/img/right_no_icon.png
/home/httpd/public/img/buttons.jpg
/home/httpd/public/img/button_check.gif
/home/httpd/public/img/content_bg.gif
/home/httpd/public/img/px35.gif
/home/httpd/public/img/load.gif
/home/httpd/public/img/lan-on.gif
/home/httpd/public/img/line_white.gif
/home/httpd/public/img/lan_grey_sub.png
/home/httpd/public/img/background_5.png
/home/httpd/public/img/guest-on.gif
/home/httpd/public/img/button_bg_2.gif
/home/httpd/public/img/background_4.png
/home/httpd/public/img/logo.jpg
/home/httpd/public/img/login.gif
/home/httpd/public/img/Logo.png
/home/httpd/public/img/register_ok.gif
/home/httpd/public/img/login_bg.gif
/home/httpd/public/img/button_modify.gif
/home/httpd/public/img/register_no.gif
/home/httpd/public/img/register_content_gd.gif
/home/httpd/public/img/lan_red.gif
/home/httpd/public/img/icon_fold_sel_xia.png
/home/httpd/public/img/powersupper-on.gif
/home/httpd/public/img/sw_off.png
/home/httpd/public/img/trans.png
/home/httpd/public/img/eye_close.gif
/home/httpd/public/img/nav_icon_gl.png
/home/httpd/public/img/mem_used_base.png
/home/httpd/public/img/nas_pic.png
/home/httpd/public/img/parent-on.gif
/home/httpd/public/img/register_banner_e8c.gif
/home/httpd/public/img/bgpng.png
/home/httpd/public/img/background_1.png
/home/httpd/public/img/icon_fold.png
/home/httpd/public/img/parent-off.gif
/home/httpd/public/img/lan_green.png
/home/httpd/public/img/background_3.png
/home/httpd/public/img/wifi_jn.jpg
/home/httpd/public/img/status-subject-selected.png
/home/httpd/public/img/button_modify_dis.gif
/home/httpd/public/img/background_2.png
/home/httpd/public/img/user_popup.gif
/home/httpd/public/img/up.gif
/home/httpd/public/img/delete.png
/home/httpd/public/img/banner.gif
/home/httpd/public/img/port_bg.gif
/home/httpd/public/img/icon_unfold.png
/home/httpd/public/img/empty.gif
/home/httpd/public/img/pencil.png
/home/httpd/public/img/laugh.gif
/home/httpd/public/img/speed-off.gif
/home/httpd/public/img/nav_icon_yy.png
/home/httpd/public/img/usb_port.png
/home/httpd/public/img/red_line.png
/home/httpd/public/img/disable.gif
/home/httpd/public/img/throwwall1.jpg
/home/httpd/public/img/login_top_bg.png
/home/httpd/public/img/nav_icon_zt.png
/home/httpd/public/img/erweima.jpg
/home/httpd/public/img/lan_green_sub.png
/home/httpd/public/img/opened.gif
/home/httpd/public/img/wifi_cq.jpg
/home/httpd/public/img/common.png
/home/httpd/public/img/uploading.gif
/home/httpd/public/img/erweima.png
/home/httpd/public/img/cpu_used.png
/home/httpd/public/img/closed.gif
/home/httpd/public/img/img14.png
/home/httpd/public/img/add_icon.gif
/home/httpd/public/img/powersupper-off.gif
/home/httpd/public/img/down.gif
/home/httpd/public/img/register_content_hubei.gif
/home/httpd/public/img/warn_icon.png
/home/httpd/public/img/safe-off.gif
/home/httpd/public/img/bg_blue.png
/home/httpd/public/img/img11.png
/home/httpd/public/img/fujian_register_content.gif
/home/httpd/public/img/green_line.png
/home/httpd/public/img/person.gif
/home/httpd/public/img/nav_icon_zd.png
/home/httpd/public/img/icon_delete.png
/home/httpd/public/img/eye_open.png
/home/httpd/public/img/wired_disconnet.png
/home/httpd/public/img/Message.png
/home/httpd/public/img/wifi_2.4g_connect.png
/home/httpd/public/img/pop_up_title.gif
/home/httpd/public/img/img10.png
/home/httpd/public/img/img12.png
/home/httpd/public/img/lan_blue.png
/home/httpd/public/img/keyoutwalled.jpg
/home/httpd/public/img/property_icon_101.png
/home/httpd/public/img/nousb.JPG
/home/httpd/public/img/err_b.png
/home/httpd/public/img/free.png
/home/httpd/public/img/lan_blue_sub.gif
/home/httpd/public/img/bg.png
/home/httpd/public/img/img13.png
/home/httpd/public/img/bg.jpg
/home/httpd/public/index.gch
/home/httpd/app_voip_SLCTime_gch.gch
/home/httpd/manager_autorestartgx_config_js.gch
/home/httpd/app_igmp_conf_t.gch
/home/httpd/net_tr069_basic_t.gch
/home/httpd/net_route_static_t.gch
/home/httpd/manager_macbind_t.gch
/home/httpd/voip_adv.gch
/home/httpd/diagnose_voice_gch.gch
/home/httpd/query_dir.gch
/home/httpd/ethwancip_gch.gch
/home/httpd/user_register_gch.gch
/home/httpd/test_over_gch.gch
/home/httpd/bucpe_interface_info_t.gch
/home/httpd/qos_qp_gch.gch
/home/httpd/ethwancbridge_gch.gch
/home/httpd/tele_wanregister_AH.gch
/home/httpd/mld_proxy_gch.gch
/home/httpd/v_rtpadv_gch.gch
/home/httpd/manager_dev_version_js.gch
/home/httpd/all_url_gch.gch
/home/httpd/bridge2route_gch.gch
/home/httpd/usbbackup_js.gch
/home/httpd/anhui_monitor_config_t.gch
/home/httpd/devname_gch.gch
/home/httpd/status_plugin_t.gch
/home/httpd/pon_app_ftp_js.gch
/home/httpd/voip_sipqos_gch.gch
/home/httpd/net_tr069_cafile_t.gch
/home/httpd/sec_firewall_conf_js.gch
/home/httpd/ddns_gch.gch
/home/httpd/net_vxlan_t.gch
/home/httpd/net_dhcp_specialdevice_js.gch
/home/httpd/app_voip_sipmed_js.gch
/home/httpd/net_dsliteeth_conf_t.gch
/home/httpd/manager_test_over_js.gch
/home/httpd/manager_mirro_js.gch
/home/httpd/wlan_security.gch
/home/httpd/manager_SN_register_t.gch
/home/httpd/vlan_port_binding_gch.gch
/home/httpd/ipv6_net_prefix_js.gch
/home/httpd/sec_firewall_inhabit_t.gch
/home/httpd/manager_buss_mgr_t.gch
/home/httpd/tele_wanregister_self_diagnose.gch
/home/httpd/app_voip_sipdigitmap_t.gch
/home/httpd/wan_dsl_query.gch
/home/httpd/setlang.gch
/home/httpd/cmc_net_FlowRL_t.gch
/home/httpd/sec_portfilter_conf_js.gch
/home/httpd/device_status_gch.gch
/home/httpd/tr069_servering.gch
/home/httpd/prefix_gch.gch
/home/httpd/IPsec_conf_t.gch
/home/httpd/dmenu_novoip.conf
/home/httpd/qos_qq_gch.gch
/home/httpd/dev_ping_gch.gch
/home/httpd/net_user_wan_conf_js.gch
/home/httpd/net_dhcp_bindonport_js.gch
/home/httpd/manager_dev_config_t.gch
/home/httpd/pon_net_ponpwd_t.gch
/home/httpd/app_igmp_conf_js.gch
/home/httpd/net_wlan_conf_js_user.gch
/home/httpd/dmenu.conf
/home/httpd/wlan_5g_cmc_config.gch
/home/httpd/net_wlan_essid_js.gch
/home/httpd/sec_macfilter_conf_js.gch
/home/httpd/app_voip_sipadv_js.gch
/home/httpd/fw_level_gch.gch
/home/httpd/gotoshop.gch
/home/httpd/pon_status_stat_info_t.gch
/home/httpd/ethwancip_ppp_brg.gch
/home/httpd/net_dhcp_dynamic_js.gch
/home/httpd/manager_log_view_t.gch
/home/httpd/app_voip_sipqos_t.gch
/home/httpd/manager_mirro_t.gch
/home/httpd/ra_server_gch.gch
/home/httpd/app_ftp_client_js.gch
/home/httpd/e8_net_qos_type_js.gch
/home/httpd/e8_net_qos_basic_new_t.gch
/home/httpd/status_voip_4less1_t.gch
/home/httpd/cmc_net_qos_qosconf_down_gch.gch
/home/httpd/langen.conf
/home/httpd/net_vlan_port_binding_t.gch
/home/httpd/autorestart_cfg_gch.gch
/home/httpd/pon_manager_hltmode_conf_js.gch
/home/httpd/app_voip_cid_gch.gch
/home/httpd/manager_test_over_t.gch
/home/httpd/pon_monitor_config_t.gch
/home/httpd/status_ethlan_dhcp_info_t.gch
/home/httpd/cmc_net_qos_qosconf_js.gch
/home/httpd/pon_ftpclient_gch.gch
/home/httpd/app_dev_domain_t.gch
/home/httpd/return2factory.gch
/home/httpd/wlan_base_gch.gch
/home/httpd/net_dhcpcleanlink_gch.gch
/home/httpd/v6_dhcpdns_gch.gch
/home/httpd/net_sntp_conf_t.gch
/home/httpd/ipv6_net_prefix_t.gch
/home/httpd/voip_rtp_gch.gch
/home/httpd/manager_log_conf_js.gch
/home/httpd/pon_net_wlan_conf_js.gch
/home/httpd/dmenu_nowlan_novoip.conf
/home/httpd/tele_wanregister_cq.gch
/home/httpd/debug_file_t.gch
/home/httpd/status_dev_info_t.gch
/home/httpd/app_route_table_js.gch
/home/httpd/net_qos_speed_js.gch
/home/httpd/sec_firewall_inhabit_js.gch
/home/httpd/frRequestTimeout.gch
/home/httpd/manager_buss_mgr_js.gch
/home/httpd/dms_cfg_gch.gch
/home/httpd/register.gch
/home/httpd/wan_func.gch
/home/httpd/qos_qq_stats_gch.gch
/home/httpd/pon_net_wanuser_conf_t.gch
/home/httpd/voip_faxmodemrptctrl_gch.gch
/home/httpd/fm_ftpservercfg_gch.gch
/home/httpd/net_ethwan_conf_t.gch
/home/httpd/app_mld_snoop_js.gch
/home/httpd/sec_sc_t.gch
/home/httpd/fw_dmz_gch.gch
/home/httpd/manage_server_gch.gch
/home/httpd/manager_forcepush_config_t.gch
/home/httpd/app_voip_sipqos_js.gch
/home/httpd/status_voip_phoneNumber_t.gch
/home/httpd/IPv6_internet_wan_query_2.gch
/home/httpd/common_gch_zxy.gch
/home/httpd/net_vxlan_js.gch
/home/httpd/wan_eth_query.gch
/home/httpd/wlan_driver_gch.gch
/home/httpd/app_ftp_client_t.gch
/home/httpd/weak_signal_cfg_gch.gch
/home/httpd/pon_simcard_notonline.gch
/home/httpd/sec_firewall_attack_t.gch
/home/httpd/pagefunc_js.gch
/home/httpd/manager_buss_mgr_gch.gch
/home/httpd/pon_simcard_newcardreboot.gch
/home/httpd/net_dhcpcleanlink_t.gch
/home/httpd/app_voip_BasicControl_t.gch
/home/httpd/pon_manager_led_time_gch.gch
/home/httpd/samba_cfg_gch.gch
/home/httpd/tele_sec_tserver_t.gch
/home/httpd/status_wanstatu_ipv6wansta_t.gch
/home/httpd/manager_trace_route_js.gch
/home/httpd/ethwanctype_gch.gch
/home/httpd/manager_autorestart_config_t.gch
/home/httpd/write_sninterface_js.gch
/home/httpd/fw_filterin_gch.gch
/home/httpd/qos_qqstats_entry_gch.gch
/home/httpd/wlan_wepkey_gch.gch
/home/httpd/bucpe_traceresult_info_t.gch
/home/httpd/pon_monitor_config_js.gch
/home/httpd/voip_vpPhyInterface_gch.gch
/home/httpd/net_dhcp_dynamic_t.gch
/home/httpd/status_itms_info_t.gch
/home/httpd/hltmode_gch.gch
/home/httpd/voip_h248qos_js.gch
/home/httpd/ipv6_net_manager_gch.gch
/home/httpd/net_route_static_js.gch
/home/httpd/write_sninterface_t.gch
/home/httpd/app_sipline_t.gch
/home/httpd/arpdetect_gch.gch
/home/httpd/manager_dev_restart_t.gch
/home/httpd/qos_localapp_tr069_queue_gch.gch
/home/httpd/app_voip_service_t.gch
/home/httpd/pon_voip_siprenew_js.gch
/home/httpd/sec_filterenable_conf_t.gch
/home/httpd/manager_user_conf_t.gch
/home/httpd/usbbakrst_gch.gch
/home/httpd/app_samba_cfg_js.gch
/home/httpd/self_diagnose_running.gch
/home/httpd/pon_net_wlan_high_conf_js.gch
/home/httpd/igmp_proxy_gch.gch
/home/httpd/app_voip_cid_js.gch
/home/httpd/atm_oam_gch.gch
/home/httpd/epon_status_link_info_t_user.gch
/home/httpd/serial_config_gch.gch
/home/httpd/e8_net_qos_basic_t.gch
/home/httpd/sec_macfilter_conf_t.gch
/home/httpd/pon_manager_led_control_t.gch
/home/httpd/bucpe_service_switch_gch.gch
/home/httpd/sec_filterin_conf_t.gch
/home/httpd/pon_manager_led_control_js.gch
/home/httpd/e8_qos_qb_new_gch.gch
/home/httpd/app_voip_sipadv_t.gch
/home/httpd/net_wlan_essid_t.gch
/home/httpd/net_qos_qostemplate_js.gch
/home/httpd/net_v6_dhcp_dynamic_t.gch
/home/httpd/tr069_registering_t.gch
/home/httpd/pon_loid_conf_lc_gch.gch
/home/httpd/status_country_code_t.gch
/home/httpd/net_qos_speed_t.gch
/home/httpd/pon_status_alarm_info_t.gch
/home/httpd/ddns_service_gch.gch
/home/httpd/net_dhcp_static_js.gch
/home/httpd/dslite_gch.gch
/home/httpd/wlan_config_gch.gch
/home/httpd/wlan_24g_cmc_config.gch
/home/httpd/web_config_file
/home/httpd/fw_mac_gch.gch
/home/httpd/net_prefix_js.gch
/home/httpd/tele_wanregister_reset_password.gch
/home/httpd/tunnel_gch.gch
/home/httpd/sntp_gch.gch
/home/httpd/net_dhcp_dynamic_FJ_js.gch
/home/httpd/tele_register_note_fj.gch
/home/httpd/arp_table_gch.gch
/home/httpd/tele_wanregister_fj.gch
/home/httpd/homepage_dev_info_t.gch
/home/httpd/status_service_info_t.gch
/home/httpd/status_interactive_t.gch
/home/httpd/tr069_updatingfinish.gch
/home/httpd/wan_query.gch
/home/httpd/sec_filterout_conf_t.gch
/home/httpd/wlan_essid.gch
/home/httpd/net_qos_congestion_statistics_js.gch
/home/httpd/app_iptv_gch.gch
/home/httpd/app_voip_sipslc_t.gch
/home/httpd/upgrade_select.gch
/home/httpd/net_wan_vlan_gch.gch
/home/httpd/url_write_sn.gch
/home/httpd/voip_service.gch
/home/httpd/manager_svr_stimulate_t.gch
/home/httpd/pon_monitorconfig_gch.gch
/home/httpd/pon_net_wlan_guest_js.gch
/home/httpd/wlan_cmc_config.gch
/home/httpd/app_dev_domain_js.gch
/home/httpd/upnp_config_gch.gch
/home/httpd/pon_app_ftp_t.gch
/home/httpd/bucpe_service_switch_t.gch
/home/httpd/status_voip_4less_t.gch
/home/httpd/telnet.gch
/home/httpd/ajax_user_register.gch
/home/httpd/vlan_if_query.gch
/home/httpd/device_status_js.gch
/home/httpd/qos_qr_gch.gch
/home/httpd/pon_manager_led_control_gch.gch
/home/httpd/pon_wifishare_gch.gch
/home/httpd/dns_gch.gch
/home/httpd/qos_qq_basic_gch.gch
/home/httpd/ajaxComLogic.gch
/home/httpd/manager_dev_version_t.gch
/home/httpd/qos_localapp_new_gch.gch
/home/httpd/fw_base_conf_gch.gch
/home/httpd/wlan_psk_gch.gch
/home/httpd/tele_wanregister_HB.gch
/home/httpd/net_wan_vlan_js.gch
/home/httpd/app_igmp_snoop_t.gch
/home/httpd/status_dev_hidden_info_t.gch
/home/httpd/voip_rtpred_gch.gch
  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李小白杂货铺

打赏是一种友谊,让我们更亲密。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值