51 | | Con esta configuración sólo podemos ejecutar el cgi llamado exec, situado en cualquier directorio. Hay que ver cual será la configuración definitiva, para poder incluir funciones en la página de incio también estás se deben ejecutar como cgi. |
52 | | |
53 | | Si en las pruebas quisieramos ejecutar cualquier archivo como cgi cambiaríamos segunda la línea por: |
54 | | |
55 | | {{{ |
56 | | cgi.assign = ( "" => "/bin/bash" ) |
57 | | }}} |
58 | | |
59 | | Todo se ejecutaría a través de bash, si fuera html normal se mostraría en blanco |
| 61 | * Todos los script situados en el dir /var/www/ (si las páginas de inicio también son cgi) |
| 62 | |
| 63 | {{{ |
| 64 | $HTTP["url"] =~ "^/" { |
| 65 | cgi.assign = ( "" => "/bin/bash" ) |
| 66 | } |
| 67 | }}} |
| 68 | |
| 69 | En el segundo caso todo se ejecutaría a través de bash, si fuera html normal se mostraría en blanco |
95 | | Las páginas de inicio si no quisieramos incluir funciones en ellas podrían ser html puro. Por ejemplo: |
| 140 | Tenemos varias opciones: |
| 141 | |
| 142 | * html puro: no permiten incluir librerías de funciones, pero son sencillas |
| 143 | * shell script con html (cgi). Un poco más feas pero funcionan con el navegador en modo texto (links2) |
| 144 | * javascript con html: permiten incluir librerías y son fáciles, pero necesitaríamos conseguir un navegador en modo texto que permitiera javascript |
| 145 | |
| 146 | Pasamos a poner un ejemplo de cada: |
| 147 | |
| 148 | __html puro__ |
| 149 | |
| 150 | Las páginas de inicio si no quisieramos incluir funciones en ellas. |
| 151 | |
| 152 | Formato enlace: '''href='exec?hidraListPartitions 1'''' |
114 | | Si queremos incluir funciones ha de ser un shell script que ejecutaremos como cgi. '''Falta''' |
| 171 | __shell script con html (cgi)__ |
| 172 | |
| 173 | Formato enlace: '''href='exec?hidraBoot 1 1$LIB'''' |
| 174 | |
| 175 | Formato inclusión de una librería: '''include path_lib''' |
| 176 | |
| 177 | {{{ |
| 178 | #!/bin/sh |
| 179 | |
| 180 | echo Content-type: text/html |
| 181 | echo |
| 182 | |
| 183 | # Para incluir las librerias que queramos. |
| 184 | LIB="" |
| 185 | function include (){ |
| 186 | if `ls $1 > /dev/null` |
| 187 | then |
| 188 | LIB=$LIB\&$1 |
| 189 | fi |
| 190 | } |
| 191 | |
| 192 | include /var/www/include |
| 193 | include /var/www/include2 |
| 194 | |
| 195 | |
| 196 | /bin/cat << EOF |
| 197 | <html> |
| 198 | <head> |
| 199 | <title>Pagina de inicio</title> |
| 200 | </head> |
| 201 | <body> |
| 202 | |
| 203 | <p><a href='exec?hidraListPartitions 1$LIB'>Listar particiones</a></p> |
| 204 | <p><a href='exec?hidraBoot 1 1$LIB'>Arrancar XP</a></p> |
| 205 | <p><a href='exec?hidraBoot 1 2$LIB'>Arrancar Ubuntu</a></p> |
| 206 | <p><a href='exec?hidraPoweroff$LIB'>Apagar equipo</a></p> |
| 207 | <p><a href='exec?adios "prueba"$LIB'>Adios</a></p> |
| 208 | |
| 209 | |
| 210 | </body> |
| 211 | </html> |
| 212 | EOF |
| 213 | }}} |
| 214 | |
| 215 | __javascript con html__ |
| 216 | |
| 217 | Las funciones de javascript las tenemos en un archivo aparte: /var/www/utils.js |
| 218 | |
| 219 | Formato enlace: '''href='hidraListPartitions 1'''' |
| 220 | |
| 221 | Formato inclusión de una librería: '''include("/var/www/include");''' |
| 222 | |
| 223 | {{{ |
| 224 | <html> |
| 225 | <head> |
| 226 | <script src="utils.js" type="text/javascript"></script> |
| 227 | <script> |
| 228 | // Ejemplo de librerias incluidas |
| 229 | include("/var/www/include"); |
| 230 | include("/var/www/include2"); |
| 231 | </script> |
| 232 | |
| 233 | </head> |
| 234 | <body> |
| 235 | |
| 236 | <!-- Ejemplo de tres tipos de enlaces --> |
| 237 | <p><a href='hola'>hola funcion incluida en /var/www/include2</a></p> |
| 238 | <p><a href='hidraListPartitions 1'>Listar particiones con hidra</a></p> |
| 239 | <p><a href='ListPartitions 1'>Listar particiones con eac</a></p> |
| 240 | <p><a href='hidraBoot 1 2'>Arrancar partition2 con hidra</a></p> |
| 241 | |
| 242 | |
| 243 | </body> |
| 244 | </html> |
| 245 | }}} |
| 246 | |
| 247 | Script utils.js |
| 248 | |
| 249 | {{{ |
| 250 | // Las funciones window.onload, link e include sirven para que podamos tener |
| 251 | // funciones tipo shell script que incluiramoe en la p?gina de inicio con |
| 252 | // include("path_al_fichero"); |
| 253 | |
| 254 | // Todos los enlaces le definimos el evento onclick que llame a la funcion link |
| 255 | window.onload = function() { |
| 256 | for(i=0;i<document.links.length;i=i+1) |
| 257 | document.links[i].onclick = link; |
| 258 | } |
| 259 | |
| 260 | // Modifica la url del enlace haciendo que incluya las archivos que queramos |
| 261 | // quedando la url como: exec?url_inicial&lib=Archivo1&lib=Archivo2 |
| 262 | function link() { |
| 263 | aux=this.pathname.substring(1,this.pathname.length) |
| 264 | for (i=0;i<librerias.length;i=i+1) |
| 265 | aux=aux+"&lib="+librerias[i]; |
| 266 | |
| 267 | this.href='exec?'+aux; |
| 268 | //alert(this.href); |
| 269 | } |
| 270 | |
| 271 | // Incluye las path de los archivos que queramos en un array que luego utilizara |
| 272 | // la funcion link |
| 273 | librerias = new Array(); |
| 274 | function include(libreria){ |
| 275 | librerias.push(libreria); |
| 276 | } |
| 277 | |
| 278 | }}} |
| 279 | |
| 280 | Mejora: En vez de usar un array en la función include directamente crear la cadena que queremos unir al enlace |