Elevar privilegios router

Iniciado por mr-medi, 6 Noviembre 2019, 21:39 PM

0 Miembros y 1 Visitante están viendo este tema.

mr-medi

Buenas, resulta que escaneando los puertos de mi IP publica me encuentro con el puerto 22 abierto e indagando un poco más veo que se trata del router ya que los suele usar el ISP para la administración remota.
Es entonces cuando decido conectarme por shh al router y comprobar que realmente funciona, la cosa es que la salida de los comandos están limitados y me gustaría poder ver todas las funcionalidades y sobre todo entender como consiguen que los usuarios tengamos una version limitada y ellos puedan hacer lo que quieran, se trata de una cuestión de asignar permisos o tal vez que haya que iniciar sesión como root en el router?. Cabe decir que los comandos funcionan, si haces un "reboot" se reinicia el router pero al no tener  la salida no sabes si lo estas haciendo bien o mal.
Muchas gracias y un saludo

<?php
       header
("Location: TheHackerWay");

@XSStringManolo

Cita de: MetaNoia en  6 Noviembre 2019, 21:39 PM
Buenas, resulta que escaneando los puertos de mi IP publica me encuentro con el puerto 22 abierto e indagando un poco más veo que se trata del router ya que los suele usar el ISP para la administración remota.
Es entonces cuando decido conectarme por shh al router y comprobar que realmente funciona, la cosa es que la salida de los comandos están limitados y me gustaría poder ver todas las funcionalidades y sobre todo entender como consiguen que los usuarios tengamos una version limitada y ellos puedan hacer lo que quieran, se trata de una cuestión de asignar permisos o tal vez que haya que iniciar sesión como root en el router?. Cabe decir que los comandos funcionan, si haces un "reboot" se reinicia el router pero al no tener  la salida no sabes si lo estas haciendo bien o mal.
Muchas gracias y un saludo
Qué guapo jaja. Me recordáste a una técnica de hace unos años con la que un atacante malicioso se saltaba CORS con un iframe oculto cargando la interfaz web del router 192.168.0.1 en la web del atacante y utilizando una técnica de arrastrar imágenes para que el usuario sin saberlo arrastrara su contraseña y usuario default del router desde la página del atacante al iframe del panel de admin de su router y pulsara enter. El usuario pensaba que estaba resolviendo un captcha o jugando a un juego.

Sabiendo que el ISP utiliza el router mediante comandos al servidor del router, yo les pediría que me pasasen el listado para conocer todas las posibilidades que ofrece el router.
Buscaría info sobre el router, firmware, servidor que utiliza...

Si no te la dan, pon a correr el wireshark y diles que te cambien varios ajustes en la red y capturas las peticiones que hacen al router.

Hay muchos papers por ahí con este tipo de info que buscas.


mr-medi

#2
Cita de: string Manolo en  6 Noviembre 2019, 23:04 PM
Qué guapo jaja. Me recordáste a una técnica de hace unos años con la que un atacante malicioso se saltaba CORS con un iframe oculto cargando la interfaz web del router 192.168.0.1 en la web del atacante y utilizando una técnica de arrastrar imágenes para que el usuario sin saberlo arrastrara su contraseña y usuario default del router desde la página del atacante al iframe del panel de admin de su router y pulsara enter. El usuario pensaba que estaba resolviendo un captcha o jugando a un juego.

Sabiendo que el ISP utiliza el router mediante comandos al servidor del router, yo les pediría que me pasasen el listado para conocer todas las posibilidades que ofrece el router.
Buscaría info sobre el router, firmware, servidor que utiliza...

Si no te la dan, pon a correr el wireshark y diles que te cambien varios ajustes en la red y capturas las peticiones que hacen al router.

Hay muchos papers por ahí con este tipo de info que buscas.


La verdad es que he estado mirando en foros y esa información la tienen restringida desde las nuevas actualizaciones.
He pensado en dos alternativas para acceder a la completa funcionalidad del router desde comandos, la primera consiste en que sabiendo la versión ssh que utiliza podría explotar alguna vulnerabilidad y conseguir acceso completo, ¿seria posible o tan solo accedería como usuario y tendría la versión limitada?
Y la segunda si no te he entendido mal consiste en que mi ISP de forma remota ejecuta un comando, yo lo capture y en base a eso averiguar el comando utilizado?, es una buena idea lo único que accediendo de forma normal por ssh no te pinta la salida de los comandos y en caso de error no sabre si lo habré hecho bien, sabrías si hay alguna forma de saltarse eso?
Tampoco se como funciona la gestión del router por ssh pero me imagino que haya varios usuarios con distintos permisos.
Un saludo y gracias por responder.
Edito:
He estado investigando y he encontrado a gente con la misma pregunta que yo y lo que han hecho a sido downgradear la version del firmware para no tener la version capada y es una opcion que me estoy planteando aunque estoy abierto a sugerencias, por si hay alguien interesado aqui os dejo el link https://www.forocoches.com/foro/showthread.php?t=7024832.
Tambien meroseando por el codigo javascript entrando a la configuracion avanzada de mi router he encontrado esto

//   if ( user == '1234' )
      menuAdmin(options);
//   else if ( user == 'support' )
//      menuSupport(options);
//   else if ( user == 'user' )
//      menuUser();

sabeis de alguna manera para acceder a esas funciones comentadas, un saludo

<?php
       header
("Location: TheHackerWay");

kub0x

Los routers, hoy día, por convención y modernismo activan el protocolo TR-069 para la actualización remota de dispositivos. Esto implica que cada vez que nuestra ISP lanza un parche lo distribuye por dicho canal. Dicho protocolo es medianamente seguro, tampoco está tan mal ya que utiliza criptografía para verificar y autenticar a la otra parte (ISP). Sucede que este protocolo siempre lo desactivo, lo encuentro intrusivo, ya que en cualquier momento tu config del router se cambia a la default, ya que flashea directamente el nuevo firmware en tu router.

Si deseas tener el control de tu router nada más te lo instalan:

Cambia las DNS en el router, para que tus PCs usen las del router. Deshabilita TR-069. Borra los certificados que vengan en tu router. En el firewall, desactiva el uso de ICMP y bloquea todas las IPs que se listan ahí, ya que pertenecen a tu ISP y les habilita sólo a ellos a entrar/salir por ciertos puertos. Desactiva VoIP si no lo usas (una interfaz comunicante menos).

Lo recomendable es que si manejas distros Linux y conceptos de red, te instales DD-WRT o similares, para tener el control al 100%. Otra forma sería que consiguieras un exploit para volcar todos los archivos JS,HTML y demás del router, hay info de como realizar esto en internet.

Cita de: MetaNoia en  6 Noviembre 2019, 23:23 PM
Tambien meroseando por el codigo javascript entrando a la configuracion avanzada de mi router he encontrado esto

//   if ( user == '1234' )
      menuAdmin(options);
//   else if ( user == 'support' )
//      menuSupport(options);
//   else if ( user == 'user' )
//      menuUser();

sabeis de alguna manera para acceder a esas funciones comentadas, un saludo

En teoría si. Crea un botón mediante el inspector de Firefox/Chrome y haz que dicho botón lanze la función que comentas. Obviamente, tendrás que descomentar esas líneas y trucar el usuario al llamar a la función. Así debería funcionar a no ser que por debajo mire también la password, cosa que parece que no ya que solo checkea el user.

Saludos.
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


@XSStringManolo

Instenta un downgrade del protocolo seguro. Para el panel puede que te funcione el siguiente código. https://pastebin.com/YdtccScA Supongo que en opciones/parámetros va la contraseña.
Para usarlo ve al panel del router donde viste ese código y le metes el javascript que te hice en la barra de direcciones y enter. Si no te va pasa el fuente del router.

mr-medi

Cita de: kub0x en 15 Noviembre 2019, 12:29 PM
Los routers, hoy día, por convención y modernismo activan el protocolo TR-069 para la actualización remota de dispositivos. Esto implica que cada vez que nuestra ISP lanza un parche lo distribuye por dicho canal. Dicho protocolo es medianamente seguro, tampoco está tan mal ya que utiliza criptografía para verificar y autenticar a la otra parte (ISP). Sucede que este protocolo siempre lo desactivo, lo encuentro intrusivo, ya que en cualquier momento tu config del router se cambia a la default, ya que flashea directamente el nuevo firmware en tu router.

Si deseas tener el control de tu router nada más te lo instalan:

Cambia las DNS en el router, para que tus PCs usen las del router. Deshabilita TR-069. Borra los certificados que vengan en tu router. En el firewall, desactiva el uso de ICMP y bloquea todas las IPs que se listan ahí, ya que pertenecen a tu ISP y les habilita sólo a ellos a entrar/salir por ciertos puertos. Desactiva VoIP si no lo usas (una interfaz comunicante menos).
Buenas, he cambiado las DNS del router por las de OpenNIC (https://www.opennic.org/) que tenia ganas de probarlas ,es una buena idea usar ese tipo de DNS? y también bloquee las ips del ISP en el firewall. En cuanto a lo de borrar el cliente TR-069 no es posible con la versión actual del firmware y también lo de desactivar el VoIp(se activa automáticamente nada mas desactivarlo).
Citar
Lo recomendable es que si manejas distros Linux y conceptos de red, te instales DD-WRT o similares, para tener el control al 100%. Otra forma sería que consiguieras un exploit para volcar todos los archivos JS,HTML y demás del router, hay info de como realizar esto en internet.
Al final me he decidido por tu consejo de instalar algún firmware de software libre, solo que he mirado las siguientes opciones pero no son compatibles con mi modelo: LibreCMC (https://librecmc.org/),LEDE (https://openwrt.org/toh/start),Gargoyle (https://www.gargoyle-router.com/index.php),OpenWRT (https://openwrt.org ) y la de DD-WRT, que me aconsejas hacer?
Y una ultima pregunta, por que me aparece que tengo el puerto 22 abierto si en la configuración no aparece tal regla?
Un saludo y gracias

<?php
       header
("Location: TheHackerWay");

mr-medi

#6
Cita de: @?0!,5^34 en 15 Noviembre 2019, 15:09 PM
Instenta un downgrade del protocolo seguro. Para el panel puede que te funcione el siguiente código. https://pastebin.com/YdtccScA Supongo que en opciones/parámetros va la contraseña.
Para usarlo ve al panel del router donde viste ese código y le metes el javascript que te hice en la barra de direcciones y enter. Si no te va pasa el fuente del router.
El parametro 'options' es un array que guarda el valor de las posiciones de cada apartado de configuracion,a continuacion te paso los trozos de codigo mas importantes.
En el array no parece que este la contraseña, ¿puede ser que se guarde en algun fichero del router?
Tambien he intentado acceder a funciones propias del usuario 'support' pero me salta un error 404
menu.html

<html><head>
<meta http-equiv='Pragma' content='no-cache'>
<link rel=stylesheet href='stylemain.css' type='text/css'>
<link rel=stylesheet href='colors.css' type='text/css'>
<script language='javascript' src='menuTree.js'></script>
<script language='javascript' src='menuTitle.js'></script>
<script language='javascript' src='menuBcm.js'></script>
<title></title>
<base target="_self">
</head>
<body class='mainMenuBody' topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
   <script language='javascript'>
<!-- hide
  var options = new Array('1234',
                          'annex_a',
                          'MER',
                          '1',
                          '1',
                          '0',
                          '1',
                          'SIP',
                          '0',
                          '1',
                          '1',
                          '1',
                          '1',
                          '0',
                          '0',
                          '&nbsp',
                          '1',
                          'false',
                          '1',
                          '0',
                          '',  //SUPPORT_SES                          
                          '1',
                          '0',
                          '1',
                          '1',
                          '1',
                          '',
                          '0',
                          '1',
                          '1',
                          '1',
                          '1',
                          '1',
                          '6838',
                          '2',
                          '0',                          
                          '1',
                          '0',
                          '0',
                          '1',
                          '2',
                          '0',
                          '0',
                          '0',
                          '0',
                          '1',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',  // WAPI
                          '0',
                          '1',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',
                          '1',
                          '&nbsp',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',
                          '0',
                          '1',
                          '1',
                          '0'
                         );
  createBcmMenu(options);
  initializeDocument();
// done hiding -->
   </script>
</body>
</html>


menuBcm.js

var MENU_OPTION_USER              = 0;
var MENU_OPTION_STANDARD          = 1;
var MENU_OPTION_PROTOCOL          = 2;
var MENU_OPTION_FIREWALL          = 3;
var MENU_OPTION_NAT               = 4;
var MENU_OPTION_IP_EXTENSION      = 5;
var MENU_OPTION_WIRELESS          = 6;
var MENU_OPTION_VOICE             = 7;
var MENU_OPTION_SNMP              = 8;
var MENU_OPTION_UPNP              = 9;
var MENU_OPTION_DDNSD             = 10;
var MENU_OPTION_SNTP              = 11;
var MENU_OPTION_EBTABLES          = 12;
var MENU_OPTION_BRIDGE            = 13;
var MENU_OPTION_TOD               = 14;
var MENU_OPTION_SIPROXD           = 15;
var MENU_OPTION_DHCPEN            = 16;
var MENU_OPTION_QOS               = 17;
var MENU_OPTION_PORTMAP           = 18;
var MENU_OPTION_IPP               = 19;
var MENU_OPTION_WIRELESS_SES      = 20;
var MENU_OPTION_RIP               = 21;
var MENU_OPTION_IPSEC             = 22;
var MENU_OPTION_CERT              = 23;
var MENU_OPTION_WL_QOS            = 24;
var MENU_OPTION_TR69C             = 25;
var MENU_OPTION_VDSL              = 26;
var MENU_OPTION_URLFILTER         = 27;
var MENU_OPTION_IPV6_SUPPORT      = 28;
var MENU_OPTION_IPV6_ENABLE       = 29;
var MENU_OPTION_DNSPROXY          = 30;
var MENU_OPTION_POLICY_ROUTING    = 31;
var MENU_OPTION_OMCI              = 32;
var MENU_OPTION_CHIPID            = 33;
var MENU_OPTION_WIRELESS_NUM_ADAPTOR =34;
var MENU_OPTION_DIAG_P8021AG      =35;
var MENU_OPTION_ETHWAN            =36;
var MENU_OPTION_PTMWAN            =37;
var MENU_OPTION_PWRMNGT           =39;
var MENU_OPTION_VOICE_NTR         =40;
var MENU_OPTION_ATMWAN            =41;
var MENU_OPTION_MOCAWAN           =42;
var MENU_OPTION_VOICE_DECT        =43;
var MENU_OPTION_DSL_BONDING       =44;
var MENU_OPTION_MULTICAST         =45;
var MENU_OPTION_VPN               =46;
var MENU_OPTION_STORAGESERVICE    =47;
var MENU_OPTION_SUPPORT_MOCA      =48;
var MENU_OPTION_STANDBY           =49;
var MENU_OPTION_DLNA              =50;
var MENU_OPTION_WIRELESS_WAPI_AS  =51;
var MENU_OPTION_AUTODETECTION     =52;
var MENU_OPTION_GPONWAN           =53;
var MENU_OPTION_POLICE_ENABLE     =54;
var MENU_OPTION_MODSW_WEBUI       =55;
var MENU_OPTION_EPONWAN           =56;
var MENU_OPTION_SAMBA             =57;
var MENU_OPTION_BMU               =58;
var MENU_OPTION_BUILD_VDSL        =59;
var MENU_OPTION_SUPPORT_LAN_VLAN  =60;
var MENU_OPTION_OPTICAL           =61;
var MENU_OPTION_WIFIWAN           =62;
var MENU_OPTION_MODSW_WEBUI_ADMIN =63;
var MENU_OPTION_MODSW_WEBUI_SUPPORT =64;
var MENU_OPTION_MODSW_BASELINE    =65;
var MENU_OPTION_MODSW_OSGIEE      =66;
var MENU_OPTION_MODSW_LINUXEE     =67;
var MENU_OPTION_MODSW_LINUXPFP    =68;
var MENU_OPTION_SUPPORT_ETHPORTSHAPING =69;
var MENU_OPTION_BUILD_TMS         =70;
var MENU_OPTION_VOICE_SIP_CCTK    =71;
var MENU_OPTION_BUILD_ALG         =72;
var MENU_OPTION_IGMP_TV_SERVICES  =73;

function menuAdmin(options) {
  var std = options[MENU_OPTION_STANDARD];
  var proto = options[MENU_OPTION_PROTOCOL];
  var firewall = options[MENU_OPTION_FIREWALL];
  var ipExt = options[MENU_OPTION_IP_EXTENSION];
  var wireless = options[MENU_OPTION_WIRELESS];
  var voice = options[MENU_OPTION_VOICE];
  var snmp = options[MENU_OPTION_SNMP];
  var ddnsd = options[MENU_OPTION_DDNSD];
  //Tank_liu,20170718,remove the Internet ,START
  //var sntp = options[MENU_OPTION_SNTP];
  var sntp = 0;
  //Tank_liu,20170718,remove the Internet ,END
  var ebtables = options[MENU_OPTION_EBTABLES];
  var bridge = options[MENU_OPTION_BRIDGE];
  var tod = options[MENU_OPTION_TOD];
  var QosEnabled = options[MENU_OPTION_QOS];
  var vlanconfig = options[MENU_OPTION_PORTMAP];
  var ipp = options[MENU_OPTION_IPP];
  var dlna = options[MENU_OPTION_DLNA];
  var wireless_ses = options[MENU_OPTION_WIRELESS_SES];
  var rip = options[MENU_OPTION_RIP];
  var ipsec = options[MENU_OPTION_IPSEC];
  var certificate = options[MENU_OPTION_CERT];
  var wlqos = options[MENU_OPTION_WL_QOS];
  var tr69c = options[MENU_OPTION_TR69C];
  var ipv6Support = options[MENU_OPTION_IPV6_SUPPORT];
  var ipv6Enable = options[MENU_OPTION_IPV6_ENABLE];
  var upnp = options[MENU_OPTION_UPNP];
  var urlfilter = options[MENU_OPTION_URLFILTER];
  var dnsproxy = options[MENU_OPTION_DNSPROXY];
  var pr = options[MENU_OPTION_POLICY_ROUTING];
  //RTF_DEF, Zeon, #11880, Delete the "OMCI Configuration" menu (and its corresponding sub-menus) from the Advanced Page
  //var omci = options[MENU_OPTION_OMCI];
  var omci = 0;
  //End #11880
  var numWl = options[MENU_OPTION_WIRELESS_NUM_ADAPTOR];
  var p8021ag = options[MENU_OPTION_DIAG_P8021AG];
  var ethwan = options[MENU_OPTION_ETHWAN];
  var ptm = options[MENU_OPTION_PTMWAN];
  var pwrmngt = options[MENU_OPTION_PWRMNGT];
  var standby = options[MENU_OPTION_STANDBY];
  var voiceNtr = options[MENU_OPTION_VOICE_NTR];
  var atm = options[MENU_OPTION_ATMWAN];
  var mocawan = options[MENU_OPTION_MOCAWAN];
  var gponwan = options[MENU_OPTION_GPONWAN];
  var eponwan = options[MENU_OPTION_EPONWAN];
  var dect = options[MENU_OPTION_VOICE_DECT];
  var dslbonding = options[MENU_OPTION_DSL_BONDING];
  var multicast = options[MENU_OPTION_MULTICAST];
  var vpn = options[MENU_OPTION_VPN];
  var storageservice = options[MENU_OPTION_STORAGESERVICE];
  var sambaservice = options[MENU_OPTION_SAMBA];
  var mocaCfg = options[MENU_OPTION_SUPPORT_MOCA];
  var wireless_wapi = options[MENU_OPTION_WIRELESS_WAPI_AS];
  var autoDetection = options[MENU_OPTION_AUTODETECTION];
  var policeEnable = options[MENU_OPTION_POLICE_ENABLE];
  var isDsl = 0;
  var modsw_webui = options[MENU_OPTION_MODSW_WEBUI];
  var modsw_webui_admin = options[MENU_OPTION_MODSW_WEBUI_ADMIN];
  var modsw_baseline = options[MENU_OPTION_MODSW_BASELINE];
  var modsw_linuxpfp = options[MENU_OPTION_MODSW_LINUXPFP];
  var bmu = options[MENU_OPTION_BMU];
  var buildVdsl = options[MENU_OPTION_BUILD_VDSL];
  var lanvlanEnable = options[MENU_OPTION_SUPPORT_LAN_VLAN];
  var wifiwan = options[MENU_OPTION_WIFIWAN];
  var supportEthPortShaping = options[MENU_OPTION_SUPPORT_ETHPORTSHAPING];
  var buildTms = options[MENU_OPTION_BUILD_TMS];
  var sipCctk = options[MENU_OPTION_VOICE_SIP_CCTK];
  var anywan = (ptm == '1' || atm == '1' || mocawan == '1' ||
      ethwan == '1' || wifiwan == '1' || gponwan == '1' || eponwan == '1');
  var buildAlg = options[MENU_OPTION_BUILD_ALG];
  var igmpTvServices = options[MENU_OPTION_IGMP_TV_SERVICES];

// Configure advanced setup/layer 2 interface
if (atm == '1' ) {
isDsl = 1;
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'dslatm.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'dslatm.cmd'));
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_DSL_ATM_INTERFACE), 'dslatm.cmd'));
}
if (ptm == '1') {
isDsl = 1;
if (atm != '1') {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'dslptm.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'dslptm.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_DSL_PTM_INTERFACE), 'dslptm.cmd'));
}
if (gponwan == '1' ) {
if (!(atm == '1' || ptm == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'gponwan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'gponwan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_GPONWAN_INTERFACE), 'gponwan.cmd'));
}
if (eponwan == '1' ) {
if (!(atm == '1' || ptm == '1' || gponwan == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'eponwan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'eponwan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_EPONWAN_INTERFACE), 'eponwan.cmd'));
}
if (ethwan == '1' ) {
if (!(atm == '1' || ptm == '1' || gponwan == '1' || eponwan == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'ethwan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'ethwan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_ETH_INTERFACE), 'ethwan.cmd'));
}
if (wifiwan == '1' ) {
if (!(atm == '1' || ptm == '1' || gponwan == '1' || eponwan == '1' || ethwan == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'wifiwan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'wifiwan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_WIFI_INTERFACE), 'wifiwan.cmd'));
}
if (mocawan == '1') {
if (!(atm == '1' || ptm == '1' || ethwan == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'mocawan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'mocawan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_MOCA_INTERFACE), 'mocawan.cmd'));
}  

if (anywan)
insDoc(nodeAdvancedSetup, gLnk('R', getMenuTitle(MENU_WAN),'wancfg.cmd'));
else
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'lancfg2.html'));

nodeLAN = insDoc(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAN),'lancfg2.html'));
if ( lanvlanEnable == '1' )
insDoc(nodeLAN, gLnk('R', getMenuTitle(MENU_LAN_VLAN),'lanvlancfg.html'));

if (vpn == '1') {
nodeVPN = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_VPN), 'l2tpacwan.cmd'));
insDoc(nodeVPN, gLnk('R', getMenuTitle(MENU_VPN_L2TPAC), 'l2tpacwan.cmd'));
}

  if ( ipv6Enable == '1' ) {
     insDoc(nodeLAN, gLnk('R', getMenuTitle(MENU_LAN6),'ipv6lancfg.html'));
  }

  if (autoDetection == '1')
     insDoc(nodeAdvancedSetup, gFld(getMenuTitle(MENU_AUTODETECTION), 'autodetection.cmd?action=view'));

  if ( mocaCfg == '1' ) {
     insDoc(nodeAdvancedSetup, gLnk('R', getMenuTitle(MENU_MOCA_CONFIGURATION),'mocacfg.html'));
  }

  if (anywan) {
     if ( proto != 'Not Applicable' && ipExt != '1' ) {
        // NAT menu is always displayed now
        nodeNat = insDoc(nodeAdvancedSetup, gFld(getMenuTitle(MENU_SC_NAT), 'scvrtsrv.cmd?action=view'));
        insDoc(nodeNat, gLnk('R', getMenuTitle(MENU_SC_VIRTUAL_SERVER), 'scvrtsrv.cmd?action=view'));
        insDoc(nodeNat, gLnk('R', getMenuTitle(MENU_SC_PORT_TRIGGER), 'scprttrg.cmd?action=view'));
        if ( buildAlg == '1' )
           insDoc(nodeNat, gLnk('R', getMenuTitle(MENU_SC_ALG), 'scalg.cmd?action=view'));
        insDoc(nodeNat, gLnk('R', getMenuTitle(MENU_SC_DMZ_HOST), 'scdmz.html'));
        insDoc(nodeNat, gLnk('R', getMenuTitle(MENU_SC_HAIRPIN_NAT), 'schairpin.html'));
'scoutflt.cmd?action=view'));
        nodeFirewall = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_SC_SECURITY), 'scbidirectionalflt.cmd?action=view'));
        nodeIpFlt = insFld(nodeFirewall, gFld(getMenuTitle(MENU_SC_IP_FILTER), 'scbidirectionalflt.cmd?action=view'));
        insDoc(nodeIpFlt, gLnk('R', getMenuTitle(MENU_SC_BIDIRECTINOAL), 'scbidirectionalflt.cmd?action=view'));
        insFld(nodeFirewall, gFld(getMenuTitle(MENU_MAC_FILTER),'scmacflt.cmd?action=view'));
        if ( tod == '1' )
        {
           nodeParentalControl = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_PARENTAL_CNTL),'todmngr.tod?action=view'));
           insDoc(nodeParentalControl, gFld(getMenuTitle(MENU_TOD),'todmngr.tod?action=view'));

           if ( urlfilter == '1' )
           {
              insDoc(nodeParentalControl, gFld(getMenuTitle(MENU_URLFILTER),'urlfilter.cmd?action=view'));
           }
        }
        else if ( urlfilter == '1' )
        {
           nodeParentalControl = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_PARENTAL_CNTL),'urlfilter.cmd?action=view'));
           insDoc(nodeParentalControl, gFld(getMenuTitle(MENU_URLFILTER),'urlfilter.cmd?action=view'));
        }
     }

     // Configure QoS class menu
     nodeQos = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_QOS),'qosqmgmt.html'));
     insDoc(nodeQos, gLnk('R', getMenuTitle(MENU_QOS_QUEUE), 'qosqueue.cmd?action=view'));
     if (policeEnable == '1')
        insDoc(nodeQos, gLnk('R', getMenuTitle(MENU_QOS_POLICER), 'qospolicer.cmd?action=view'));
     insDoc(nodeQos, gLnk('R', getMenuTitle(MENU_QOS_CLASS), 'qoscls.cmd?action=view'));
     if (supportEthPortShaping == '1')
     {
        insDoc(nodeQos, gLnk('R', getMenuTitle(MENU_QOS_PORT_SHAPING), 'qosportshaping.html'));
     }

     // Configure routing menu
     nodeRouting = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_ROUTING), 'rtdefaultcfg.html'));
     insDoc(nodeRouting, gLnk('R', getMenuTitle(MENU_RT_DEFAULT_ROUTE), 'rtdefaultcfg.html'));
     insDoc(nodeRouting, gLnk('R', getMenuTitle(MENU_RT_STATIC_ROUTE),'rtroutecfg.cmd?action=viewcfg'));
  }
  else {
     nodeRouting = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_ROUTING), 'rtroutecfg.cmd?action=viewcfg'));
     insDoc(nodeRouting, gLnk('R', getMenuTitle(MENU_RT_STATIC_ROUTE),'rtroutecfg.cmd?action=viewcfg'));
  }

  if (pr == '1' )
     insDoc(nodeRouting, gLnk('R', getMenuTitle(MENU_POLICY_ROUTING),'prmngr.cmd?action=view'));

  if ( (proto == 'PPPoE' && ipExt == '0') ||
       (proto == 'PPPoA' && ipExt == '0') ||
       (proto == 'MER') ||
       (proto == 'IPoA') ) {

     if ( rip == '1' )
        insDoc(nodeRouting, gLnk('R', getMenuTitle(MENU_RT_RIP),'ripcfg.cmd?action=view'));
     // configure dns server
     nodeDnsSetup = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_DNS), 'dnscfg.html'));
     insDoc(nodeDnsSetup, gLnk('R', getMenuTitle(MENU_DNS_SETUP), 'dnscfg.html'));
     // configure ddns client
     if ( ddnsd == '1' )
        insDoc(nodeDnsSetup, gLnk('R', getMenuTitle(MENU_DDNS), 'ddnsmngr.cmd'));
  }
  // Configure print server
  if ( ipp == '1' )
     insDoc(nodeAdvancedSetup, gFld(getMenuTitle(MENU_IPP), 'ippcfg.html'));

  // Configure dlna
  if ( dlna == '1' )
     insDoc(nodeAdvancedSetup, gFld(getMenuTitle(MENU_DLNA), 'dlnacfg.html'));

  // Configure wireless menu

  if ( parseInt(numWl) != 0 ) {
     if(numWl != '1')
        wlanMenu = insFld(foldersTree, gFld(getMenuTitle(MENU_WIRELESS_SETTINGS), wlItemsCgiCmd[0]));

     for(i = 0; i < parseInt(numWl); i++)
     {
        // Configure wireless menu
        if(numWl == '1')
           nodeWireless = insFld(foldersTree, gFld(getMenuTitle(MENU_WIRELESS_SETTINGS), wlItemsCgiCmd[0]));
        else
           nodeWireless = insFld(wlanMenu, gFld(wlmenuTitle[i], wlItemsCgiCmd[i]));

        insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_BASIC), 'wlcfg.html'));
        insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_SECURITY), 'wlsecurity.html'));
/*20171102 tank remove*/
        //insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_MAC_FILTERING), 'wlmacflt.cmd?action=view'));
        insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_WDS), 'wlwds.cmd?action=view'));
        insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_ADVANCED), 'wlcfgadv.html'));
        //SUPPORT_SES
        if ( wireless_ses == '1' ) {
           insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_SES), 'wlses.html'));      
        }

        insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_STATION_LIST), 'wlstationlist.cmd'));

        if(i==0) //i.e. 2.4GHz part
        {
           insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_GUEST_SECURITY), 'wlsecurityadvanced.html'));
        }
else if (i==1) //i.e. 5G part
{
           insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_GUEST_SECURITY), 'wl5Gsecurityadvanced.html'));
}
     }

  }


    /*Storage Service menu */
  if(storageservice == '1')
  {
     nodeStorage = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_STORAGESERVICE), 'storageservicecfg.cmd?view'));
     insDoc(nodeStorage, gLnk('R', getMenuTitle(MENU_STORAGE_INFO), 'storageservicecfg.cmd?view'));
     if(sambaservice == '1'){
        insDoc(nodeStorage, gLnk('R', getMenuTitle(MENU_STORAGE_USERACCOUNT), 'storageuseraccountcfg.cmd?view'));
     }
  }

  // Configure voice menu
  if ( voice == 'MGCP' ) {
     nodeVoice = insFld(foldersTree, gFld(getMenuTitle(MENU_VOICE_SETTINGS), 'voicemgcp_basic.html'));
     insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_MGCP), 'voicemgcp_basic.html'));
     if( voiceNtr != '2' ) {
        insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_NTR), 'voicentr.html'));
     }
  }
  else if ( voice == 'SIP' ) {
     nodeVoice = insFld(foldersTree, gFld(getMenuTitle(MENU_VOICE_SETTINGS), 'voicesip_basic.html'));
     insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_SIP_BASIC), 'voicesip_basic.html'));
     insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_SIP_ADVANCED), 'voicesip_advanced.html'));
     insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_SIP_DEBUG), 'voicesip_debug.html'));
     if(sipCctk == '1'){
        insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_SIP_CCTK), 'voicesip_cctk.html'));
     }
     if( voiceNtr != '2' ) {
        insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_NTR), 'voicentr.html'));
     }
     if( dect == '1' ) {
        insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_DECT), 'voicedect.html'));
     }
  }

  // Configure VLAN port mapping menu
  if ( anywan && vlanconfig == '1' ) {
     insDoc(nodeAdvancedSetup, gLnk('R', getMenuTitle(MENU_INTF_GROUPING),'portmap.cmd'));
  }

  if ( ipv6Support == '1' ) {
     nodeIpTunnel = insDoc(nodeAdvancedSetup, gFld(getMenuTitle(MENU_IP_TUNNEL),'tunnelcfg.cmd?action=viewcfg'));
     insDoc(nodeIpTunnel, gLnk('R', getMenuTitle(MENU_6IN4_TUNNEL),'tunnelcfg.cmd?action=viewcfg'));
     insDoc(nodeIpTunnel, gLnk('R', getMenuTitle(MENU_4IN6_TUNNEL),'tunnelcfg.cmd?action=view'));
  }

  if ( ipsec == '1' ) {
     insDoc(nodeAdvancedSetup, gLnk('R', getMenuTitle(MENU_SC_IPSEC), 'ipsec.cmd?action=view'));
  }
  if (certificate == '1')  {
     nodeCert = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_CERT), 'certlocal.cmd?action=view'));
     insDoc(nodeCert, gLnk('R', getMenuTitle(MENU_CERT_LOCAL), 'certlocal.cmd?action=view'));
     insDoc(nodeCert, gLnk('R', getMenuTitle(MENU_CERT_CA), 'certca.cmd?action=view'));
  }

  // Configure standby menu item
  if ( standby == '1' )
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_STANDBY), 'standby.html'));

  // Configure power management
  if ( pwrmngt == '1' )
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_PWRMNGT), 'pwrmngt.html'));
 
  if ( bmu == '1' )
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_BMU), 'bmu.html'));

  if ( multicast == '1' )
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_MULTICAST), 'multicast.html'));

  if ( igmpTvServices == '1' )
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_IGMP_TV_SERVICES), 'igmpTvServices.html'));
 
  // Configure diagnostics menu
  nodeDiagnostics = insFld(foldersTree, gFld(getMenuTitle(MENU_DIAGNOSTICS), 'diag.html'));
  if (buildTms == '1') {
     insDoc(nodeDiagnostics, gLnk('R', getMenuTitle(MENU_DIAGNOSTICS),'diag.html'));
     insDoc(nodeDiagnostics, gLnk('R', getMenuTitle(MENU_DIAGETHOAM),'diagethoam.html'));
  }else if (p8021ag == '1'){
     insDoc(nodeDiagnostics, gLnk('R', getMenuTitle(MENU_DIAGNOSTICS),'diag.html'));
     insDoc(nodeDiagnostics, gLnk('R', getMenuTitle(MENU_DIAGP8021AG),'diag8021ag.html'));
  }

  // Configure management menu
  nodeMngr = insFld(foldersTree, gFld(getMenuTitle(MENU_MANAGEMENT), 'backupsettings.html'));

  nodeSettings = insFld(nodeMngr, gFld(getMenuTitle(MENU_TL_SETTINGS), 'backupsettings.html'));
  insDoc(nodeSettings, gLnk('R', getMenuTitle(MENU_TL_SETTINGS_BACKUP),'backupsettings.html'));
  insDoc(nodeSettings, gLnk('R', getMenuTitle(MENU_TL_SETTINGS_UPDATE),'updatesettings.html'));
  insDoc(nodeSettings, gLnk('R', getMenuTitle(MENU_TL_SETTINGS_DEFAULT), 'defaultsettings.html'));

  insFld(nodeMngr, gFld(getMenuTitle(MENU_TL_SYSTEM_LOG), 'logintro.html'));
  if ( anywan )
     insFld(nodeMngr, gFld(getMenuTitle(MENU_TL_SECURITY_LOG), 'seclogintro.html'));
  if ( snmp == '1' )
     insFld(nodeMngr, gFld(getMenuTitle(MENU_TL_SNMP), 'snmpconfig.html'));
  if ( tr69c == '1' )
     insFld(nodeMngr, gFld(getMenuTitle(MENU_TR69C), 'tr69cfg.html'));
  if ( omci == '1' ) {
     nodeOmci = insFld(nodeMngr, gFld(getMenuTitle(MENU_OMCI_CFG), 'omcicfg.cmd?action=view'));
     insDoc(nodeOmci, gLnk('R', getMenuTitle(MENU_OMCI_GET_SET),'omcicfg.cmd?action=view'));
     insDoc(nodeOmci, gLnk('R', getMenuTitle(MENU_OMCI_CREATE),'omcicreate.cmd?action=view'));
     insDoc(nodeOmci, gLnk('R', getMenuTitle(MENU_OMCI_GET_NEXT),'omcigetnext.cmd?action=view'));
     insDoc(nodeOmci, gLnk('R', getMenuTitle(MENU_OMCI_MACRO),'omcimacro.cmd?action=view'));
     insDoc(nodeOmci, gLnk('R', getMenuTitle(MENU_OMCI_DOWNLOAD),'omcidownload.html'));
     insDoc(nodeOmci, gLnk('R', getMenuTitle(MENU_OMCI_SYSTEM),'omcisystem.html'));
  }  
  if ( sntp == '1' && proto != 'Bridge' && !(proto=='PPPoE' && ipExt=='1') && !(proto=='PPPoA' && ipExt=='1') )
     insFld(nodeMngr, gFld(getMenuTitle(MENU_SNTP), 'sntpcfg.html'));

  nodeAccCntr = insFld(nodeMngr, gFld(getMenuTitle(MENU_ACC_CNTR), 'password.html'));
  insDoc(nodeAccCntr, gLnk('R', getMenuTitle(MENU_ACC_CNTR_PASSWORD), 'password.html'));

  if ( modsw_webui == '1' && modsw_webui_admin == '1' && ( modsw_baseline == '1' || modsw_linuxpfp == '1' ) ) {

     if ( modsw_baseline == '1' ) {
         nodeModSw = insFld(nodeMngr, gFld(getMenuTitle(MENU_MODSW), 'modSwEE.cmd'));
         insDoc(nodeModSw, gLnk('R', getMenuTitle(MENU_MODSW_EE),'modSwEE.cmd'));
         insDoc(nodeModSw, gLnk('R', getMenuTitle(MENU_MODSW_DU),'modSwDU.cmd'));
         insDoc(nodeModSw, gLnk('R', getMenuTitle(MENU_MODSW_EU), 'modSwEU.cmd'));

         if ( modsw_linuxpfp == '1' )
             insDoc(nodeModSw, gLnk('R', getMenuTitle(MENU_MODSW_PFP), 'modSwPFP.cmd'));
     }
     else {
          nodeModSw = insFld(nodeMngr, gFld(getMenuTitle(MENU_MODSW), 'modSwPFP.cmd'));
          insDoc(nodeModSw, gLnk('R', getMenuTitle(MENU_MODSW_PFP), 'modSwPFP.cmd'));
     }

  }

  insFld(nodeMngr, gFld(getMenuTitle(MENU_TL_UPDATE_SOFTWARE), 'upload.html'));

  insFld(nodeMngr, gFld(getMenuTitle(MENU_RESET_ROUTER), 'resetrouter.html'));

}

function menuSupport(options) {
  var std = options[MENU_OPTION_STANDARD];
  var proto = options[MENU_OPTION_PROTOCOL];
  var ipExt = options[MENU_OPTION_IP_EXTENSION];
  var wireless = options[MENU_OPTION_WIRELESS];
  var voice = options[MENU_OPTION_VOICE];
  var snmp = options[MENU_OPTION_SNMP];
  var ddnsd = options[MENU_OPTION_DDNSD];
  var sntp = options[MENU_OPTION_SNTP];
  var QosEnabled = options[MENU_OPTION_QOS];
  var ipp = options[MENU_OPTION_IPP];
  var rip = options[MENU_OPTION_RIP];
  var tr69c = options[MENU_OPTION_TR69C];
  var ipv6Support = options[MENU_OPTION_IPV6_SUPPORT];
  var ipv6Enable = options[MENU_OPTION_IPV6_ENABLE];
  var upnp = options[MENU_OPTION_UPNP];
  var dnsproxy = options[MENU_OPTION_DNSPROXY];
  var omci = options[MENU_OPTION_OMCI];
  var numWl = options[MENU_OPTION_WIRELESS_NUM_ADAPTOR];
  var wireless_ses = options[MENU_OPTION_WIRELESS_SES];
  var ethwan = options[MENU_OPTION_ETHWAN];
  var ptm = options[MENU_OPTION_PTMWAN];
  var pwrmngt = options[MENU_OPTION_PWRMNGT];
  var standby = options[MENU_OPTION_STANDBY];
  var voiceNtr = options[MENU_OPTION_VOICE_NTR];
  var atm = options[MENU_OPTION_ATMWAN];
  var mocawan = options[MENU_OPTION_MOCAWAN];
  var gponwan = options[MENU_OPTION_GPONWAN];
  var eponwan = options[MENU_OPTION_EPONWAN];
  var dect = options[MENU_OPTION_VOICE_DECT];
  var dslbonding = options[MENU_OPTION_DSL_BONDING];
  var vpn = options[MENU_OPTION_VPN];
  var storageservice = options[MENU_OPTION_STORAGESERVICE];
  var sambaservice = options[MENU_OPTION_SAMBA];
  var mocaCfg = options[MENU_OPTION_SUPPORT_MOCA];
  var wireless_wapi = options[MENU_OPTION_WIRELESS_WAPI_AS];
  var policeEnable = options[MENU_OPTION_POLICE_ENABLE];
  var bmu = options[MENU_OPTION_BMU];
  var isDsl = 0;
  var modsw_webui = options[MENU_OPTION_MODSW_WEBUI];
  var modsw_webui_support = options[MENU_OPTION_MODSW_WEBUI_SUPPORT];
  var modsw_baseline = options[MENU_OPTION_MODSW_BASELINE];
  var modsw_linuxpfp = options[MENU_OPTION_MODSW_LINUXPFP];
  var buildVdsl = options[MENU_OPTION_BUILD_VDSL];
  var lanvlanEnable = options[MENU_OPTION_SUPPORT_LAN_VLAN];
  var wifiwan = options[MENU_OPTION_WIFIWAN];
  var supportEthPortShaping = options[MENU_OPTION_SUPPORT_ETHPORTSHAPING];
  var anywan = (ptm == '1' || atm == '1' || mocawan == '1' ||
      ethwan == '1' || wifiwan == '1' || gponwan == '1' || eponwan == '1');

// Configure advanced setup/layer 2 interface
if (atm == '1' ) {
isDsl = 1;
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'dslatm.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'dslatm.cmd'));
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_DSL_ATM_INTERFACE), 'dslatm.cmd'));
}
if (ptm == '1') {
isDsl = 1;
if (atm != '1') {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'dslptm.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'dslptm.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_DSL_PTM_INTERFACE), 'dslptm.cmd'));
}  
if (gponwan == '1' ) {
if (!(atm == '1' || ptm == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'gponwan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'gponwan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_GPONWAN_INTERFACE), 'gponwan.cmd'));
}
if (eponwan == '1' ) {
if (!(atm == '1' || ptm == '1') || gponwan == '1' ) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'eponwan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'eponwan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_EPONWAN_INTERFACE), 'eponwan.cmd'));
}
if (ethwan == '1' ) {
if (!(atm == '1' || ptm == '1' || gponwan == '1'  || eponwan == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'ethwan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'ethwan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_ETH_INTERFACE), 'ethwan.cmd'));
}
if (wifiwan == '1' ) {
if (!(atm == '1' || ptm == '1' || gponwan == '1' || eponwan == '1' || ethwan == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'wifiwan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'wifiwan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_WIFI_INTERFACE), 'wifiwan.cmd'));
}
if (mocawan == '1') {
if (!(atm == '1' || ptm == '1' || ethwan == '1')) {
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'mocawan.cmd'));
nodeLayer2Inteface = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAYER2_INTERFACE), 'mocawan.cmd'));
}
insDoc(nodeLayer2Inteface, gLnk('R', getMenuTitle(MENU_MOCA_INTERFACE), 'mocawan.cmd'));
}  

if (anywan)
insDoc(nodeAdvancedSetup, gLnk('R', getMenuTitle(MENU_WAN),'wancfg.cmd'));
else
nodeAdvancedSetup = insFld(foldersTree, gFld(getMenuTitle(MENU_ADVANCED_SETUP), 'lancfg2.html'));

nodeLAN = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_LAN),'lancfg2.html'));
if ( lanvlanEnable == '1' )
insFld(nodeLAN, gFld(getMenuTitle(MENU_LAN_VLAN),'lanvlancfg.html'));
 
if (vpn == '1') {
nodeVPN = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_VPN), 'l2tpacwan.cmd'));
insDoc(nodeVPN, gLnk('R', getMenuTitle(MENU_VPN_L2TPAC), 'l2tpacwan.cmd'));
}

  if ( ipv6Enable == '1' ) {
     insDoc(nodeLAN, gLnk('R', getMenuTitle(MENU_LAN6),'ipv6lancfg.html'));
  }

  if ( mocaCfg == '1' ) {
     insDoc(nodeAdvancedSetup, gLnk('R', getMenuTitle(MENU_MOCA_CONFIGURATION),'mocacfg.html'));
  }

  if (anywan) {
     // Configure QoS class menu
     nodeQos = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_QOS),'qosqmgmt.html'));
     insDoc(nodeQos, gLnk('R', getMenuTitle(MENU_QOS_QUEUE), 'qosqueue.cmd?action=view'));
     if (policeEnable == '1')
        insDoc(nodeQos, gLnk('R', getMenuTitle(MENU_QOS_POLICER), 'qospolicer.cmd?action=view'));
     insDoc(nodeQos, gLnk('R', getMenuTitle(MENU_QOS_CLASS), 'qoscls.cmd?action=view'));
     if (supportEthPortShaping == '1')
     {
        insDoc(nodeQos, gLnk('R', getMenuTitle(MENU_QOS_PORT_SHAPING), 'qosportshaping.html'));
     }
 
     // Configure routing menu
     nodeRouting = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_ROUTING), 'rtdefaultcfg.html'));
     insDoc(nodeRouting, gLnk('R', getMenuTitle(MENU_RT_DEFAULT_ROUTE), 'rtdefaultcfg.html'));
     insDoc(nodeRouting, gLnk('R', getMenuTitle(MENU_RT_STATIC_ROUTE),'rtroutecfg.cmd?action=viewcfg'));

     if ( (proto == 'PPPoE' && ipExt == '0') ||
          (proto == 'PPPoA' && ipExt == '0') ||
          (proto == 'MER') ||
          (proto == 'IPoA') ) {
        // configure rip
        if ( rip == '1' )
           insDoc(nodeRouting, gLnk('R', getMenuTitle(MENU_RT_RIP),'ripcfg.cmd?action=view'));
        // configure dns server
        nodeDnsSetup = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_DNS), 'dnscfg.html'));
        insDoc(nodeDnsSetup, gLnk('R', getMenuTitle(MENU_DNS_SETUP), 'dnscfg.html'));
        // configure ddns client
        if ( ddnsd == '1' )
           insDoc(nodeDnsSetup, gLnk('R', getMenuTitle(MENU_DDNS), 'ddnsmngr.cmd'));
     }
  }
 
  if (isDsl == 1)
  {
     // Configure ADSL Setting Menu based on Annex
     if ( std == 'annex_c' )
        insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_DSL), 'adslcfgc.html'));
     else if (buildVdsl == '1')
        insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_DSL), 'xdslcfg.html'));
     else
        insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_DSL), 'adslcfg.html'));

     if (dslbonding == '1')
        insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_DSL_BONDING), 'dslbondingcfg.html'));
  }


  // Configure print server
  if ( ipp == '1' )
     insDoc(nodeAdvancedSetup, gFld(getMenuTitle(MENU_IPP), 'ippcfg.html'));
 
  // Configure upnp
  if (upnp == '1')
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_UPNP), 'upnpcfg.html'));

  // Configure dnsproxy
  if (dnsproxy == '1')
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_DNSPROXY), 'dnsproxycfg.html'));
 
  // Configure standby menu item
  if ( standby == '1' )
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_STANDBY), 'standby.html'));

  // Configure power management
  if ( pwrmngt == '1' )
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_PWRMNGT), 'pwrmngt.html'));
 
  if ( bmu == '1' )
     insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_BMU), 'bmu.html'));

  // Configure wireless menu
  if ( parseInt(numWl) != 0 ) {

      if(numWl != '1')
          wlanMenu = insFld(foldersTree, gFld(getMenuTitle(MENU_WIRELESS_SETTINGS), wlItemsCgiCmd[0]));

      for(i = 0; i < parseInt(numWl); i++)
      {
  // Configure wireless menu
           if(numWl == '1')
               nodeWireless = insFld(foldersTree, gFld(getMenuTitle(MENU_WIRELESS_SETTINGS), wlItemsCgiCmd[0]));
    else
 nodeWireless = insFld(wlanMenu, gFld(wlmenuTitle[i], wlItemsCgiCmd[i]));
     insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_BASIC), 'wlcfg.html'));
     insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_SECURITY), 'wlsecurity.html'));
  /*20171102 tank remove*/
     //insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_MAC_FILTERING), 'wlmacflt.cmd?action=view'));
     insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_WDS), 'wlwds.cmd?action=view'));
     insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_ADVANCED), 'wlcfgadv.html'));
     //SUPPORT_SES
     if ( wireless_ses == '1' ) {
        insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_SES), 'wlses.html'));      
     }
     
     insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_STATION_LIST), 'wlstationlist.cmd'));
 


       }
     if ( wireless_wapi == '1' ) {      
         if (numWl == '1') {
            insDoc(nodeWireless, gLnk('R', getMenuTitle(MENU_WL_WAPI_AS), 'wlwapias.html'));
         }
         else {
            insDoc(wlanMenu, gLnk('R', getMenuTitle(MENU_WL_WAPI_AS), 'wlwapias.html'));
         }
     }
  }

    /*Storage Service menu */
  if(storageservice == '1')
  {
     nodeStorage = insFld(nodeAdvancedSetup, gFld(getMenuTitle(MENU_STORAGESERVICE), 'storageservicecfg.cmd?view'));
     insDoc(nodeStorage, gLnk('R', getMenuTitle(MENU_STORAGE_INFO), 'storageservicecfg.cmd?view'));
     if(sambaservice == '1'){
        insDoc(nodeStorage, gLnk('R', getMenuTitle(MENU_STORAGE_USERACCOUNT), 'storageuseraccountcfg.cmd?view'));
     }
  }

  // Configure voice menu
  if ( voice == 'MGCP' ) {
     nodeVoice = insFld(foldersTree, gFld(getMenuTitle(MENU_VOICE_SETTINGS), 'voicemgcp_basic.html'));
     insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_MGCP), 'voicemgcp_basic.html'));
     if( voiceNtr != '2' ) {
        insDoc(nodeVoice, gLnk('R', getMenuTitle(MENU_VOICE_NTR), 'voicentr.html'));
     }    
  }
//   if ( user == '1234' )
      menuAdmin(options);
//   else if ( user == 'support' )
//      menuSupport(options);
//   else if ( user == 'user' )
//      menuUser();
}

<?php
       header
("Location: TheHackerWay");