home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.5 Applications 2002 November / SGI IRIX 6.5 Applications 2002 November.iso / dist / gateway.idb / usr / WebFace / Source / 20-NetworkServices / dhcp / dhcp-netconf-js.cgi.z / dhcp-netconf-js.cgi
Encoding:
Text File  |  2002-06-12  |  13.0 KB  |  267 lines

  1. #!/usr/bin/perl5
  2.  
  3. $js =
  4. "$js_standard
  5. $js_error_box
  6. $js_help
  7. $js_hostname
  8. $js_ip
  9. function checkForm(form) {
  10.     if (!testHostname(form.pro_host_prefix, form.pro_host_prefix.value, \"hostname prefix\", 0)) return (false);
  11.     if (!testRange(form.pro_ipaddress_range)) return (false);
  12.     if (!testIPaddress(form.pro_netmask.value, 1)) {
  13.         errorBox(form.pro_netmask, \"Invalid netmask: \" + form.pro_netmask.value);
  14.         return (false);
  15.     }
  16.     if (!testHostname(form.pro_nis_domain, form.pro_nis_domain.value, \"NIS domain name\", 0)) return (false);
  17.     return (true);
  18. }
  19. function testRange(Ctrl) { 
  20.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  21.         comma = Ctrl.value.indexOf (',', start);  
  22.         if (start == Ctrl.value.length) return (true); 
  23.         if (comma == start) continue; 
  24.         if(comma == -1) str = Ctrl.value.substring(start, Ctrl.value.length); 
  25.         else str = Ctrl.value.substring(start, comma); 
  26.         for (s=0, hyphen=-1; s < str.length; s++) { 
  27.             if (str.charAt(s) == '-') { hyphen = s; continue; } 
  28.             if (! checkInt_c(str.charAt(s), 10)) {
  29.                 if(str.charAt(s) == ' ') 
  30.                     errorBox (Ctrl, \"Please do not use spaces in \\nthe address range list\"); 
  31.                 else 
  32.                     errorBox (Ctrl, \"Illegal character: \" + str.charAt(s) 
  33.                         + \" in address range list\");   
  34.                 return (false); 
  35.             }
  36.     } 
  37.     if (hyphen == -1) { 
  38.         errorBox (Ctrl, \"Illegal range value: \" + str); 
  39.         return (false); 
  40.     } 
  41.     num1 = parseInt(str.substring(0,hyphen)); 
  42.     num2 = parseInt(str.substring(hyphen+1,str.length)); 
  43.     if (num1 > num2) { 
  44.         errorBox (Ctrl, \"Illegal range value: \" + str); 
  45.         return (false); 
  46.     } 
  47.     if (num1 > 255 || num2 > 255) { 
  48.         errorBox (Ctrl, \"Range values must be between 0 and 255.\"); return (false); } 
  49.     } 
  50.     return (true);
  51. }";
  52.  
  53.  
  54. $js_long =
  55. "$js_standard
  56. $js_error_box
  57. $js_help
  58. $js_filename
  59. $js_hostname
  60. $js_iplist
  61. $js_ip
  62.  
  63. function checkForm(form) {
  64.     if (!testGeneral(form)) return (false);
  65.     if (!testServer(form)) return (false);
  66.     if (!testApplication(form)) return (false);
  67.     if (!testServices(form)) return (false);
  68.     if (!testIPperHost(form)) return (false);
  69.     if (!testIPperInterface(form)) return (false);
  70.     if (!testLinkLayer(form)) return (false);
  71.     if (!testTCP(form)) return (false);
  72.     return (true);
  73. }
  74. function testGeneral(form) {
  75.     if(!testInt(form.pro_address_counter,\"IP starting number\")) return (false);
  76.     if(!testHostname(form.pro_host_prefix,form.pro_host_prefix.value,\"hostname prefix\",1)) return (false);
  77.     if(!testInt(form.pro_host_pfx_counter,\"hostname starting number\")) return (false);
  78.     if(!testIPAddr(form.pro_netmask,\"subnet mask\",1)) return (false);
  79.     if(!testInt(form.pro_lease,\"address lease time\")) return (false);
  80.     if(!testRange(form.pro_ipaddress_range,\"IP address range\")) return (false);
  81.     if(!testIPList(form.pro_router_addr,\"router IP address\")) return (false);
  82.     if(!testInt(form.pro_bootfile_size,\"bootfile size\")) return (false);
  83.     if(!testFile(form.pro_bootfile_name,\"bootfile name\")) return (false);
  84.     if(!testInt(form.pro_time_offset,\"time offset\")) return (false);
  85.     if(!testFile(form.pro_meritdump_pathname,\"merit dump file pathname\")) return (false);
  86.     if(!testFile(form.pro_root_pathname,\"root disk file pathname\")) return (false);
  87.     if(!testFile(form.pro_extensions_pathname,\"extensions pathname\")) return (false);
  88.     if(!testHostname(form.pro_TFTPserver_name,form.pro_TFTPserver_name.value,\"TFTP server name\",1)) return (false);
  89.     return (true);
  90. }
  91. function testServer(form) {
  92.     if(!testHostname(form.pro_dns_domain,form.pro_dns_domain.value,\"NIS domain name\",1)) return (false);
  93.     if(!testIPList(form.pro_dnsserver_addr,\"DNS server address\")) return (false);
  94.     if(!testIPAddr(form.pro_propel_server,\"propel server address\",0)) return (false);
  95.     if(!testIPList(form.pro_timeserver_addr,\"time server address\")) return (false);
  96.     if(!testIPList(form.pro_logserver_addr,\"UDP log server address\")) return (false);
  97.     if(!testIPList(form.pro_cookieserver_addr,\"cookie server address\")) return (false);
  98.     if(!testIPList(form.pro_LPRserver_addr,\"LPR server address\")) return (false);
  99.     if(!testIPList(form.pro_resourceserver_addr,\"service location server address\")) return (false);
  100.     if(!testIPList(form.pro_swapserver_addr,\"swap server address\")) return (false);
  101.     if(!testIPList(form.pro_nameserver116_addr,\"IEN 116 name server address\")) return (false);
  102.     if(!testIPList(form.pro_impressserver_addr,\"impress server address\")) return (false);
  103.     if(!testIPList(form.pro_NTPserver_addr,\"NTP server address\")) return (false);
  104.     return (true);
  105. }
  106. function testApplication(form) {
  107.     if(!testIPList(form.pro_X_fontserver_addr,\"X window font server address\")) return (false);
  108.     if(!testIPList(form.pro_X_displaymgr_addr,\"X window manager server address\")) return (false);
  109.     if(!testIPList(form.pro_mobileIP_homeagent_addr,\"mobile home agent server address\")) return (false);
  110.     if(!testIPList(form.pro_SMTPserver_addr,\"SMTP server address\")) return (false);
  111.     if(!testIPList(form.pro_POP3server_addr,\"POP3 server address\")) return (false);
  112.     if(!testIPList(form.pro_NNTPserver_addr,\"NNTP server address\")) return (false);
  113.     if(!testIPList(form.pro_WWWserver_addr,\"WWW server address\")) return (false);
  114.     if(!testIPList(form.pro_fingerserver_addr,\"finger server address\")) return (false);
  115.     if(!testIPList(form.pro_IRCserver_addr,\"Internet chat server address\")) return (false);
  116.     if(!testIPList(form.pro_StreetTalkserver_addr,\"StreetTalk server address\")) return (false);
  117.     if(!testIPList(form.pro_STDAserver_addr,\"STDA server address\")) return (false);
  118.     return (true);
  119. }
  120. function testServices(form) {
  121.     if(!testIPList(form.pro_NetBIOS_nameserver_addr,\"NetBIOS name server address\")) return (false);
  122.     if(!testIPList(form.pro_NetBIOS_distrserver_addr,\"NetBIOS dist server address\")) return (false);
  123.     if(!testHostname(form.pro_nis_domain,form.pro_nis_domain.value,\"NIS domain name\",1)) return (false);
  124.     if(!testIPList(form.pro_nisserver_addr,\"NIS server address\")) return (false);
  125.     if(!testHostname(form.pro_nisplus_domain,form.pro_nisplus_domain.value,\"NIS+ domain name\",1)) return (false);
  126.     if(!testIPList(form.pro_nisplusserver_addr,\"NIS+ server address\")) return (false);
  127.     return (true);
  128. }
  129. function testIPperHost(form) {
  130.     if(!testIPPairs(form.pro_policy_filter,\"policy filter address pair\")) return (false);
  131.     if(!testInt(form.pro_max_reassy_size,\"datagram reassembly size\")) return (false);
  132.     if(!testMaxMin(form.pro_max_reassy_size,\"datagram reassembly size\",576,65535)) return (false);
  133.     if(!testInt(form.pro_IP_ttl,\"IP time to live\")) return (false);
  134.     if(!testMaxMin(form.pro_IP_ttl,\"IP time to live\",1,255)) return (false);
  135.     if(!testInt(form.pro_pathmtu_timeout,\"path MTU aging timeout\")) return (false);
  136.     if(!testIntList(form.pro_pathmtu_table,\"path MTU\")) return (false);
  137.     if(!testMaxMinList(form.pro_pathmtu_table,\"path MTU\",68,65535)) return (false);
  138.     return (true);
  139. }
  140. function testIPperInterface(form) {
  141.     if(!testInt(form.pro_mtu,\"MTU for the interface\")) return (false);
  142.     if(!testMaxMin(form.pro_mtu,\"MTU for the interface\",68,65535)) return (false);
  143.     if(!testIPAddr(form.pro_broadcast,\"broadcast address\",0)) return (false);
  144.     if(!testIPAddr(form.pro_router_solicit_addr,\"router solicitation address\",0)) return (false);
  145.     if(!testIPPairs(form.pro_static_routes,\"static route address pair\")) return (false);
  146.     return (true);
  147. }
  148. function testLinkLayer(form) {
  149.     if(!testInt(form.pro_arpcache_timeout,\"ARP cache timeout\")) return (false);
  150.     return (true);
  151. }
  152. function testTCP(form) {
  153.     if(!testInt(form.pro_TCP_ttl,\"TCP default time to live\")) return (false);
  154.     if(!testMaxMin(form.pro_TCP_ttl,\"TCP time to live\",1,255)) return (false);
  155.     if(!testInt(form.pro_TCP_keepalive_intrvl,\"TCP KeepAlive interval\")) return (false);
  156.     return (true);
  157. }
  158.  
  159. function testFile(Ctrl, what) {
  160.     if (Ctrl.value == \"\") return (true);
  161.     if (!testFilename(Ctrl, what)) return (false);
  162.     return (true);
  163. }
  164. function testMaxMin(Ctrl,what,min,max) {
  165.     if (Ctrl.value == \"\") return (true); 
  166.     start = 0;  while (Ctrl.value.charAt(start) == ' ') { start++; } 
  167.     end = Ctrl.value.length-1; while (Ctrl.value.charAt(end) == ' ') { end--; } 
  168.     str = Ctrl.value.substring(start,end+1); num = parseInt(str); 
  169.     if (num > max) { errorBox (Ctrl, \"The \" + what + \" must be \" + max + \" or less.\"); return (false); } 
  170.     if (num < min) { errorBox (Ctrl, \"The \" + what + \" must be at least \" + min); return (false); }  
  171.     return (true);
  172. }
  173. function testMaxMinList(Ctrl,what,min,max) {
  174.     if (Ctrl.value == \"\") return (true); 
  175.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  176.         comma = Ctrl.value.indexOf (',', start);  
  177.         if (start == Ctrl.value.length) return (true); if (comma == start) continue; 
  178.         if(comma == -1) val = Ctrl.value.substring(start, Ctrl.value.length); 
  179.         else val = Ctrl.value.substring(start, comma); 
  180.         for (s = 0; val.charAt(s) == ' '; s++) ;
  181.         for (e = val.length-1; val.charAt(e) == ' '; e--) ; 
  182.         num = parseInt(val.substring(s,e+1)); 
  183.         if (num > max) { errorBox (Ctrl, \"The \" + what + \" list values must be \\n \" + max + \" or less.\"); return (false); } 
  184.         if (num < min) { errorBox (Ctrl, \"The \" + what + \" list values must be \\nat least \" + min); return (false); } 
  185.     } return (true);
  186. }
  187. function testInt(Ctrl,what) {
  188.     if (Ctrl.value == \"\") return (true); 
  189.     start = 0;  while (Ctrl.value.charAt(start) == ' ') { start++; } 
  190.     end = Ctrl.value.length-1; while (Ctrl.value.charAt(end) == ' ') { end--; } 
  191.     for (n = start; n <= end; n++) { 
  192.         digit = Ctrl.value.charAt(n); 
  193.         if(! checkInt_c(digit, 10)) { errorBox (Ctrl, \"The \" + what + \" \" + Ctrl.value + \"\\nis not a valid integer.\"); return (false); } 
  194.     } return (true);
  195. }
  196. function testIntList(Ctrl,what) {
  197.     if (Ctrl.value == \"\") return (true); 
  198.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  199.         comma = Ctrl.value.indexOf (',', start);  
  200.         if (start == Ctrl.value.length) return (true); if (comma == start) continue; 
  201.         if(comma == -1) val = Ctrl.value.substring(start, Ctrl.value.length); 
  202.         else val = Ctrl.value.substring(start, comma); 
  203.         for (s = 0; val.charAt(s) == ' '; s++) ;
  204.         for (e = val.length-1; val.charAt(e) == ' '; e--) ; 
  205.         while (s <= e) { digit = val.charAt(s); s++; if(! checkInt_c(digit, 10)) { errorBox (Ctrl, \"Illegal value: \" + val + \"\\nin \" + what + \" list.\"); return (false); } } 
  206.     } return (true);
  207. }
  208. function testRange(Ctrl,what) { 
  209.     if (Ctrl.value == \"\") return (true); 
  210.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  211.         comma = Ctrl.value.indexOf (',', start);  
  212.         if (start == Ctrl.value.length) return (true); if (comma == start) continue; 
  213.         if(comma == -1) str = Ctrl.value.substring(start, Ctrl.value.length); 
  214.         else str = Ctrl.value.substring(start, comma); 
  215.         for (s=0, hyphen=-1; s < str.length; s++) { 
  216.             if (str.charAt(s) == '-') { hyphen = s; continue; } 
  217.             if(! checkInt_c(str.charAt(s), 10)) { if(str.charAt(s) == ' ') errorBox (Ctrl, \"Please do not use spaces in \\nthe \" + what + \" list\"); else errorBox (Ctrl, \"Illegal character: \" + str.charAt(s) + \" in \" + what + \" list.\"); return (false); } 
  218.         } 
  219.         if (hyphen == -1) { errorBox (Ctrl, \"Illegal \" + what + \" value: \" + str); return (false); } 
  220.         num1 = parseInt(str.substring(0,hyphen)); num2 = parseInt(str.substring(hyphen+1,str.length)); 
  221.         if (num1 > num2) { errorBox (Ctrl, \"Illegal \" + what + \" value: \" + str); return (false); } 
  222.         if (num1 > 255 || num2 > 255) { errorBox (Ctrl, \"Range values must be between 0 and 255.\"); return (false); }
  223.     } return (true);
  224. }
  225. function testIPAddr(Ctrl,what,netmask) {
  226.     if (Ctrl.value == \"\") return (true); 
  227.     if (!testIPaddress(Ctrl.value,netmask)) { 
  228.         errorBox (Ctrl, \"Illegal \" + what + \": \" + Ctrl.value); 
  229.         return (false); 
  230.     } 
  231.     return (true);
  232. }
  233. function testIPPairs(Ctrl,what) { 
  234.     if (Ctrl.value == \"\") return (true); 
  235.     for (start = 0, comma = 0; comma != -1; start = comma+1) { 
  236.         comma = Ctrl.value.indexOf (',', start);  
  237.         if (start == Ctrl.value.length) return (true); 
  238.         if (comma == start) continue; 
  239.         if(comma == -1) str = Ctrl.value.substring(start, Ctrl.value.length); 
  240.         else str = Ctrl.value.substring(start, comma); 
  241.         for (s=0, hyphen=-1; s < str.length; s++) { 
  242.             if (str.charAt(s) == '-') { hyphen = s; continue; } 
  243.         } 
  244.         if (hyphen == -1) { 
  245.             errorBox (Ctrl, str + \" is not a valid \" + what); 
  246.             return (false); 
  247.         } 
  248.         sub1 = str.substring(0,hyphen); 
  249.         sub2 = str.substring(hyphen+1,str.length); 
  250.         if (sub1 == \"\" || sub2 == \"\") { 
  251.             errorBox (Ctrl, str + \" is not a valid \" + what); 
  252.             return (false); 
  253.         } 
  254.         if (!testIPaddress(sub1,0)) { 
  255.             errorBox (Ctrl, \"Illegal address value: \" + sub1 
  256.                 + \" in\\n\" + what + \" \" + str); 
  257.             return (false); 
  258.         } 
  259.         if (!testIPaddress(sub2,0)) { 
  260.             errorBox (Ctrl, \"Illegal address value: \" + sub2 
  261.                 + \" in\\n\" + what + \" \" + str); 
  262.             return (false); 
  263.         } 
  264.     } 
  265.     return (true);
  266. }";
  267.