$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI); // Aplicación var aplicacion = { // Función encargada de mostrar la interfaz gráfica de la aplicación gui : function() { aplicacion.listarConfiguraciones(); aplicacion.mostrarConfiguracion(); // Al hacer click en el menu principal aparecerán los formularios // correspondientes $('#navadmin').click(function() { $('#config .title').html('Administrar'); $('#config h2').html('Administrar'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #adminconfig').show(); }); $('#navload').click(function() { $('#config .title').html('Cargar'); $('#config h2').html('Cargar'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #loadconfig').show(); }); $('#navstore').click(function() { $('#config .title').html('Guardar'); $('#config h2').html('Guardar'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #storeconfig').show(); }); $('#navshow').click(function() { $('#config .title').html('Show'); $('#config h2').html('Show'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #show').show(); }); $('#navconfigure').click(function() { $('#config .title').html('Configurar Conmutador'); $('#config h2').html('Configurar Conmutador'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #configure').show(); }); $('#navarchivo').click(function() { $('#config .title').html('Descargar Archivo'); $('#config h2').html('Descargar Archivo'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #archivo').show(); }); $('#navls').click(function() { $('#config .title').html('Listado de archivos'); $('#config h2').html('Listado de archivos'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #ls').show(); }); $('#navping').click(function() { $('#config .title').html('Ping'); $('#config h2').html('Ping'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #ping').show(); }); $('#navcaptura').click(function() { $('#config .title').html('Captura'); $('#config h2').html('Captura'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #captura').show(); }); $('#navifconfig').click(function() { $('#config .title').html('Muestra Configuracion'); $('#config h2').html('Muestra Configuracion'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #ifconfig').show(); }); $('#navroute').click(function() { $('#config .title').html('Muestra Tabla de rutas'); $('#config h2').html('Muestra Tabla de rutas'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #route').show(); }); $('#navsubir').click(function() { $('#config .title').html('Subir archivo'); $('#config h2').html('Subir archivo'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #subir').show(); }); $('#navborrar').click(function() { $('#config .title').html('Borrar archivos'); $('#config h2').html('Borrar archivos'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #borrar').show(); }); $('#navtftp').click(function() { $('#config .title').html('Transferencia TFTP'); $('#config h2').html('Transferencia TFTP'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #tftp').show(); }); $('#navwget').click(function() { $('#config .title').html('Transferencia WGET'); $('#config h2').html('Transferencia WGET'); $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $('#config #wget').show(); }); $('select[name="idconfig"]').change(function() { $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); $(this).parents('form').find('input[name="nombre"]').val(''); if ($(this).val() && $(this).val() != "new" && $(this).val() != "default") { var config = eval('(' + unescape($.cookie('config' + $(this).val())) + ')'); $(this).after('
\'--> Modificado: ' + config['modificado'].replace('+', ' a las ') + '
'); $(this).parents('form').find('input[name="nombre"]').val(config['nombre']); } }); // Información para el usuario del tiempo disponible antes de finalizar // su turno var turno_fin = $.cookie('turno_fin'); var fecha = new Date(); var fin = parseInt(turno_fin.substr(0, 2)) * 3600 + parseInt(turno_fin.substr(3, 2)) * 60; var ahora = fecha.getHours() * 3600 + fecha.getMinutes() * 60 + fecha.getSeconds(); $('#time').countdown({ until : (fin - ahora - 5 * 60), onExpiry : function() { $('#time').countdown('change',{ until : (5 * 60), onExpiry : function() {$('#main_content').block({ message : '

Su turno ha finalizado

Ya no puede acceder a la aplicación hasta su próximo turno. Los cambios no guardados han sido descartados.

', css : {width : '500px'}}); } }); $('#main_content').block({ message : '

¡Atención!: Restan 5 minutos para finalizar su turno

Se recomienda que proceda a almacenar los cambios realizados y cierre la aplicación antes de que expire dicho tiempo.

', css : {width : '500px'}}); }, compact : true }); }, // Función que devuelve la hora actual time : function() { var time = new Date(); time = time.toTimeString().substring(0, 8); return time; }, // Función para listar las configuraciones existentes listarConfiguraciones : function(formid) { var lista = ''; if (document.cookie && document.cookie != '') { var split = document.cookie.split(';'); for ( var i = 0; i < split.length; i++) { var name_value = split[i].split("="); name_value[0] = name_value[0].replace(/^ /, ''); if (name_value[0].substring(0, 6) == 'config') { var config = eval('(' + unescape(decodeURIComponent(name_value[1])) + ')'); lista = lista + '' + "\n"; } } } $('#config .configslist').html(lista); }, // Función encargada de mosrtrar la configuración actual de un elemento mostrarConfiguracion : function() { var idred = eval('(' + unescape($.cookie('idred')) + ')'); var svg_url = '/images/red' + idred + '.svg'; $('#diagrama').svg('destroy'); $('#diagrama').svg({ loadURL : svg_url, onLoad : function() { $('g').each(function() { var nodo = true; var id = $(this).attr('id').split(':'); var cid = id[0] + id[1]; if (id[0] == 'pc') { var config = eval('(' + unescape($.cookie(cid)) + ')'); if (config) { var msg = '
PC ' + id[1] + '
'; } else { var msg = '
Configuración no definida
'; } } else if (id[0] == 'conmutador') { var topologia = eval('(' + unescape($.cookie(cid)) + ')'); if (topologia) { var msg = '
Conmutador ' + id[1] + '
'; } else { var msg = '
Configuración no definida
'; } } else { nodo = false; } if (nodo) { $(this).qtip({ content : msg, position : { target : 'mouse', corner : {target : 'rightMiddle', tooltip : 'leftMiddle'} }, style : { tip : 'leftMiddle', border : {width : 1, radius : 2, color : '#444'} }, hide : { when : 'mouseout', fixed : true } }); } }); } }); }, // Función encargada de mostrar los formularios en el panel derecho mostrarFormulario : function(nodo) { var id = $(nodo).attr('id').split(':'); var elemento = id[0]; id = id[1]; $('#config form:visible').hide(); $('#config .input_error, #config .input_info').remove(); $('#config input, #config select').removeClass('invalid'); if (elemento == 'pc') { $('#config .title').html('PC ' + id); $('#config h2').html('PC ' + id); if ($.cookie(elemento + id)) { var config = eval('(' + unescape($.cookie('pc' + id)) + ')'); $('#config #pc input[name="id"]').attr('value', id); $('#config #pc input[name="ip"]').attr('value', config.ip); $('#config #pc input[name="mascara"]').attr('value', config.mascara); $('#config #pc input[name="puerta"]').attr('value', config.puerta); $('#config #pc input[name="dns1"]').attr('value', config.dns1); $('#config #pc input[name="dns2"]').attr('value', config.dns2); $('#config #pc').show(); } } else if (elemento == 'conmutador') { $('#config .title').html('Conmutador ' + id); $('#config h2').html('Conmutador ' + id); if ($.cookie(elemento + id)) { $('#config #conmutador input[name="id"]').attr('value', id); $('#config #conmutador').show(); } } }, // Función encargada de mostrar los errores producidos tras la última petición al servidor mostrarErrores : function(data) { if (data.stderr.error == 'validacion') { var msg = '

>> (' + aplicacion.time() + ') El formulario contiene campos no validos

'; $.each(data.stderr.info, function(i, value) { $('input[name=' + i + '], select[name=' + i + ']').addClass('invalid').after('
\'--> ' + value + '
'); }); $('#resultados').prepend(msg); } else if (data.stderr.error == 'aplicacion') { $.each(data.stderr.info, function(i, value) { $('#resultados').prepend('

>> (' + aplicacion.time() + ') ' + value + '

'); }); } else { var msg = ''; $.each(data.stderr.info, function(i, value) { msg = msg + '

' + value + '

'; }); $('#main_content').block({ message : '
' + msg + '
', css : { width : '500px', border : '2px solid #FBC2C4', background : '#FBE3E4', color : '#8A1F11' } }); } }, // Iniciar la aplicación start : function() { $.post('/admin/aplicacion.php', {act : 'start'}, function(data) { if (data.stderr.error) { var msg = ''; $.each(data.stderr.info, function(i, value) { msg = msg + '

' + value + '

'; }); $('#main_content').block({ message : '

¡Imposible iniciar!

' + msg + '
', css : {width : '500px'} }); } else { document.location = '/aplicacion/'; } }, 'json'); }, // Finalizar la aplicación end : function() { $.post('/admin/aplicacion.php', {act : 'end'}, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { document.location = '/aplicacion/'; } }, 'json'); }, // Enviar configuración de un PC setPC : function(config) { $.post('/admin/aplicacion.php', config, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { $('#resultados').prepend('

>> (' + aplicacion.time() + ') ' + data.stdout + '

'); // Se actualiza la ventana flotante que contiene la configuración del PC aplicacion.mostrarConfiguracion(); } }, 'json'); }, // Enviar configuración de un Conmutador setConmutador : function() { var data = eval("(" + $('#upload').contents().text() + ")"); if (data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { $('#resultados').prepend('

>> (' + aplicacion.time() + ') ' + data.stdout + '

'); } } $.unblockUI(); }, // Realizar show show : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); act = elem[0].replace("act=",''); accion = elem[2].replace("accion=",''); accion2 = elem[3].replace("accion2=",''); accion2 = accion2.replace("%3F", '?'); accion2 = accion2.replace("%2C", ','); accion2 = accion2.split('+').join(' '); var msg = '

>> (' + aplicacion.time() + ') ' + act + ' ' + accion + ' ' + accion2 + ':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Configurar conmutador configure : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); act = elem[0].replace("act=",''); accion = elem[2].replace("accion=",''); accion2 = elem[3].replace("accion2=",''); accion2 = accion2.replace("%3F", '?'); accion2 = accion2.replace("%2F", '/'); accion2 = accion2.replace("%2C", ','); accion2 = accion2.split('+').join(' '); var msg = '

>> (' + aplicacion.time() + ') ' + act + ' ' + accion + ' ' + accion2 + ':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Realizar visualizacion de archivos del PC especificado ls : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); origen = elem[1].replace("idorigen=",''); rol = elem[2].replace("rol=",''); rol = rol.replace("+", ' '); var msg = '

>> (' + aplicacion.time() + ') Resultado del listado de archivos del PC '+ origen+' con rol '+ rol +':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Realizar ping a la dirección IP especificada ping : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); origen = elem[1].replace("idorigen=",''); destino = elem[2].replace("ipdestino=",''); var msg = '

>> (' + aplicacion.time() + ') Resultado del comando ping desde el PC ' + origen + ' a la dirección ' + destino +':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Realizar captura trafico captura : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); origen = elem[1].replace("idorigen=",''); var msg = '

>> (' + aplicacion.time() + ') Resultado de la captura en el PC ' + origen + ':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Realizar visualizacion de configuracion del PC especificado ifconfig : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); origen = elem[1].replace("idorigen=",''); var msg = '

>> (' + aplicacion.time() + ') Configuración del PC ' + origen + ':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Realizar visualizacion de la tabla de rutas del PC especificado route : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); origen = elem[1].replace("idorigen=",''); var msg = '

>> (' + aplicacion.time() + ') Tabla de rutas del PC ' + origen + ':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Subir archivo subir : function() { var data = eval("(" + $('#upload2').contents().text() + ")"); if (data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var msg = '

>> (' + aplicacion.time() + ') Resultado de la subida:


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } } $.unblockUI(); }, // Realizar borrado de archivos borrar : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); origen = elem[1].replace("idorigen=",''); rol = elem[2].replace("rol=",''); rol = rol.replace("+", ' '); var msg = '

>> (' + aplicacion.time() + ') Listado de archivos del PC '+ origen+' con rol '+ rol +' tras el borrado:


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Realizar transferencia TFTP entre dos pc's tftp : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); cliente = elem[1].replace("idcliente=",''); servidor = elem[2].replace("ipservidor=",''); var msg = '

>> (' + aplicacion.time() + ') Resultado de la transferencia TFTP desde el servidor '+ servidor+' al PC '+ cliente +':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Realizar transferencia WGET entre dos pc's wget : function(info) { $.post('/admin/aplicacion.php', info, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { var elem = info.split("&"); cliente = elem[1].replace("idcliente=",''); servidor = elem[2].replace("ipservidor=",''); var msg = '

>> (' + aplicacion.time() + ') Resultado de la transferencia WGET desde el servidor '+ servidor+' al PC '+ cliente +':


'; $.each(data.stdout, function(i, value) { msg = msg + '

' + value + '

'; }); msg = msg + '
'; $('#resultados').prepend(msg); } }, 'json'); }, // Guardar/Cargar/Borrar la configuración especificada configs : function(inputs) { $.post('/admin/aplicacion.php', inputs, function(data) { if (data.stderr.error) { aplicacion.mostrarErrores(data); } else { $('#resultados').prepend('

>> (' + aplicacion.time() + ') ' + data.stdout + '

'); aplicacion.listarConfiguraciones(); } }, 'json'); } }; e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


DESARROLLO DE UN ENTORNO DE PRÁCTICAS PARA REDES MULTISERVICIO

: Martín Redondo, Alberto Jesús
: Ingeniería Telecomunicación
Contenido del proyecto:
Directorio raíz  >  ARCHIVOS  >  redes  >  js  >  interfaz.js