Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Mi problema es el siguiente: estoy creando un formulario sencillo mediante HTML, con toda la validación correspondiente en JavaScript, para gestionar la configuración de un servicio. Básicamente necesito que al ejecutar el formulario me cargue datos del fichero de configuración (si existe previamente) y los coloque en los textbox del formulario. Una vez modificados esos campos, al hacer submit, el CGI, de nuevo, capta los datos y así actualiza el fichero. Algo así como los entornos HTML de configuración de los routers domésticos.
Tengo todo el código HTML con el JavaScript y funciona en local pero al desplegarlo desde el servidor con Perl no funciona (he tratado de comprobar los caracteres que necesitan ser escapados, pero algo se me "escapa" definitivamente xD).
Por otra parte he mirado algunos tutoriales sobre el módulo CGI, pues creo que ahorran mucho trabajo, pero no consigo encontrar documentación sencilla pero a la vez que reúna todo lo que necesito, que no es más que captar los parámetros de la query_string y desplegar el código con los diferentes campos del formulario rellenos con los datos del hash (que cargo con los datos del fichero). Supongo que para desplegar JavaScript dentro del HTML no podré usar los métodos del módulo CGI.
Ni siquiera sé si se puede gestionar todo desde un único script Perl (que cargue de fichero si se abre el formulario, o en caso de producirse un submit guarde a fichero).
¿Alguna sugerencia de por qué no funciona el JavaScript si se despliega desde el CGI?
Using perl Syntax Highlighting
- #!/usr/bin/perl -w
- #### funcion mostrarForm ############
- print "Content-type: text/html\n\n";
- print<<"FIN";
- <HTML>
- <HEAD><TITLE>CONFIGURACION THE CROW</TITLE>
- <SCRIPT type="text/javascript">
- <!--
- function datoErroneo(id){
- document.getElementById(id).value = "";
- document.getElementById(id).style.backgroundColor = "#FFD700";
- }
- function datoCorrecto(id,valor){
- document.getElementById(id).style.backgroundColor = "#FFFFFF";
- document.getElementById(id).value = valor;
- }
- function esRed(dir){
- dir = dir.split(".");
- return (dir[3]=="0");
- }
- // (..................)
- function validarNombre(nombre,id){
- patron = /[*-+^@#\\s]/;
- // averiguamos si es nombre de HOST o de DOMINIO
- aux = (id.indexOf("HOST") != -1)?"HOST":"DOMINIO";
- if(!patron.test(nombre)){
- datoCorrecto(id,nombre);
- //alert("NOMBRE DE " + aux + " correcto");
- return true;
- }else{
- datoErroneo(id);
- //alert("NOMBRE DE " + aux + " incorrecto");
- return false;
- }
- }
- function habilitarVRRP(valor){
- // habilitar interfaz,id de red, prioridad e IP de VRRP
- document.getElementById("ifname").disabled = !valor;
- document.getElementById("vrid").disabled = !valor;
- document.getElementById("prio").disabled = !valor;
- document.getElementById("ip").disabled = !valor;
- return;
- }
- function habilitarPuertos(valor){
- // habilitar puertos si inet activado
- document.getElementById("ALLOWED_TCP").disabled = !valor;
- document.getElementById("ALLOWED_UDP").disabled = !valor;
- return;
- }
- function habilitarDHCP(valor){
- // habilitar servidor DHCP
- document.getElementById("dhcp-helper").disabled = !valor;
- return;
- }
- function validarPrioridad(prio,id,tipo){
- switch(tipo){
- case "1": if(prio.length==0 || isNaN(prio) || prio<1 || prio>255){
- datoErroneo(id);
- return false;
- }
- break;
- case "2": if(prio.length==0 || isNaN(prio) || prio<1 || prio>99999){
- datoErroneo(id);
- return false;
- }
- break;
- case "3": if(prio.length==0 || isNaN(prio) || prio<1 || prio>4){
- datoErroneo(id);
- return false;
- }
- break;
- }
- datoCorrecto(id,prio*1);
- return true;
- }
- function validarInterfaz(ifaz,id){
- patron = /[*-+^@#\\s]/;
- if(!patron.test(ifaz)){
- datoCorrecto(id,ifaz);
- //alert("INTERFAZ correcto");
- return true;
- }else{
- datoErroneo(id);
- //alert("INTERFAZ incorrecto");
- return false;
- }
- }
- function validarNumRedes(num,id){
- if(isNaN(num) || num<0 || num>10){
- datoErroneo(id);
- //alert("CANTIDAD incorrecta");
- return false;
- }
- datoCorrecto(id,num * 1);
- //alert("CANTIDAD correcta");
- return true;
- }
- //-->
- </SCRIPT>
- </HEAD>
- <BODY>
- <FORM name=formulario ENCTYPE=TEXT/PLAIN METHOD=POST><br>
- Direccion IP del dispositivo (Ej.:192.168.4.35/24): <INPUT TYPE=text id=IPADDR NAME=IPADDR style=text-align:center SIZE=18 MAXLENGTH=18 onchange=validarIPLarga(value,id)><br><br>
- (....)
- </html>
Coloreado en 0.006 segundos, usando GeSHi 1.0.8.4