123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307 |
- {% extends "base.html" %}
- {% macro comprobar_error(tipo) -%}
- {% if errors is defined and errors[tipo] %}
- <img src="/static/imgs/aviso.png" width="24" heigth="24">
- <span class="text-warning">
- ({{ errors[tipo]|e }})
- </span>
- {% endif %}
- {%- endmacro %}
- {% block content %}
- <!-- Algo de codigo javascript -->
- <script src="/static/js/validaciones.js"></script>
- <h3>Agregar un nodo a la Red</h3>
- {% if errors is defined %}
- <div class="panel panel-warning">
- <div class="panel-body">
- <a href="#ingredientes">Errores</a> detectados, marcados con <img src="/static/imgs/aviso.png" width="24" height="24">
- {% if errors['excepcion'] != "" %}
- <br>
- <b>{{ errors['excepcion'] }}</b>
- {% endif %}
-
- {% if errors['nodo_similar'] != "" %}
- <br>
- <b>{{ errors['nodo_similar'] }}</b>
- {% endif %}
- </div>
- </div>
- {% endif %}
- <p>
- Esta herramienta te permite <b>obtener</b> el software necesario para instalarlo en tu enrutador, encenderlo, conectarte a LaOtraRed y ayudar a expandirla.
- </p>
- <p>
- Únete en tres pasos:
- <ol>
- <li><a href="#cocinar_firmware">Cocinar el firmware</a></li>
- <li><a href="#instalar_firmware">Instalar el firmware generado en el enrutador</a></li>
- <li><a href="#montar_nodo">Montar tu nodo</a></li>
- </ol>
- </p>
- <h4 id="cocinar_firmware">Paso 1</h4>
- <h4>Cocinar el firmware</h4>
- <p>
- Llena el siguiente formulario y haz click en "generar imagen" para generar la imagen de firmware necesaria, se le asignará un bloque de direcciones IP exclusivo a tu nodo y se mantendrá este registro como público para que quienes quieran unirse a la red, sepan donde están los nodos más cercanos. Asegúrate de tener en cuenta <a href="#">¿qué es un nodo en la red distribuida?</a>, recuerda que al generar la imagen de firmware aceptas seguir los <a href="#">principios de convivencia</a> en LaOtraRed.
- </p>
- <p class="panel panel-warning">
- <b>Aviso:</b> La imagen de firmware se genera utilizando la herramienta de construcción del proyecto <a href="#">lede</a> y <a href="https://git.laotrared.net/LaOtraRed-dev/generador-firmwares-script">este script</a>, <b>no damos ninguna garantía</b> o nos hacemos responsables si el equipo se daña, el firmware que descargues es software libre, salvo quizás algunas pequeñas partes (<a href="#">más información</a>).
- </p>
- <p>
- Si estás de acuerdo sigamos adelante.
- </p>
-
- <!-- Formulario Nuevo nodo -->
- <h4 id="ingredientes">Ingredientes</h4>
- {% if errors is defined %}
- <div class="panel panel-warning">
- <div class="panel-body">
- <a href="#ingredientes">Errores</a> detectados, marcados con <img src="/static/imgs/aviso.png" width="24" height="24">
- {% if errors['excepcion'] != "" %}
- <br>
- <b>{{ errors['excepcion'] }}</b>
- {% endif %}
-
- {% if errors['nodo_similar'] is defined %}
- <br>
- <b>{{ errors['nodo_similar'] }}</b>
- <a href="/nodos/"{{ errors['id_nodo_similar'] }}>
- Este el nodo
- </a>
- {% endif %}
- </div>
- </div>
- {% endif %}
- <small>Los campos con (<b>*</b>) son obligatorios</small>
- <form name="agregar_nodo_form" id="id_agregar_nodo_form" action="/nuevo" method="POST">
- <div class="panel panel-primary">
- <div class="panel-body">
- <!-- agregar proteccion contra csrf -->
- <!-- <input name="csrfmiddlewaretoken" value="QMLnfWAR0GGoOHCddXXAUTzeU0NkyXlrdxX4Bsqd3Ijwp0hziqDhqcM8R91a9nuD" type="hidden"> -->
- <p>
- <a href="#ref_modelo" id="campo_modelo">
- <img src="../static/imgs/pregunta.png" width="24" height="24"
- title="haz click para ver detalles"">
- </a>
- <b>Modelo de enrutador</b>:
- <br>
- <span class="text-danger">Escoge con cuidado</span> <b>*</b>
- <span style="padding:7px; background-color:#EFE79E">
- <select id="id_modelos" name="modelos" required="" style="font-family: mono">
- {# modelos 2.4Ghz #}
- <option value="-">----------2.4 Ghz--------</option>
- {% for router in contexto['modelos_posibles'][0] %}
- <option value="{{ router }}">{{ router }}</option>
- {% endfor %}
- <option value="-">----------DUAL BAND (2.4 y 5 Ghz)--------</option>
- {% for router in contexto['modelos_posibles'][1] %}
- <option value="{{ router }}">{{ router }}</option>
- {% endfor %}
- <!-- <option value="generic ar71xx">generic AR71xx (no recomendado)</option> -->
- </select>
- </span>
- {# <button onclick="validarAgregarNodo()">comprobar</button> #}
- <span id="res_modelos"> </span>
- {{ comprobar_error('modelo') }}
- </p>
- <p>
- <a href="#ref_ips_publicas" id="campo_ips_publicas">
- <img src="../static/imgs/pregunta.png" width="24" height="24"
- title="¿cúantos servidores con IP publica requieres?"">
- </a>
- <b>Número de direcciones IP públicas que necesitas:</b> <b>*</b>
- <select id="id_ips_publicas" name="ips_publicas" required="">
- <option value="14">14 máximo</option>
- <option value="30">30 máximo</option>
- <option value="62">62 máximo</option>
- <option value="126">126 máximo (condicionado)</option>
- <option value="254">254 máximo (condicionado)</option>
- </select>
- {{ comprobar_error(tipo='ips_publicas') }}
- <span id="res_ips_publicas"> </span>
- </p>
- <p>
- <a href="#ref_ips_privadas" id="campo_ips_privadas">
- <img src="../static/imgs/pregunta.png" width="24" height="24"
- title="¿cúantos clientes esperas conecten a tu nodo?"">
- </a>
- <b>Número de direcciones IP privadas que necesitas:</b>
- <select id="id_ips_privadas" name="ips_privadas">
- <option value="30">30 máximo</option>
- <option value="62">62 máximo</option>
- <option value="126">126 máximo</option>
- </select>
- {{ comprobar_error(tipo='ips_privadas') }}
- <span id="res_ips_privadas"></span>
- </p>
-
- <h3>Datos del responsable</h3>
- <p>
- <b>Nombre(s):</b> <input id="id_nombres" name="nombres" max_length="200" type="text" required="" > <b>*</b>
- {{ comprobar_error('nombres') }}
- <span id="res_nombres"></span>
- </p>
- <p>
- <b>Apellido(s):</b> <input id="id_apellidos" name="apellidos" max_length="200" type="text" required="" > <b>*</b>
- {{ comprobar_error('apellidos') }}
- <span id="res_apellidos"></span>
- </p>
-
- <p>
- <b>Correo electrónico:</b> <input id="id_email" name="email" max_length="254" type="email" required="" > <b>*</b>
- <br>
- (<span class="text-warning">Se necesita tu <b>email</b></span> para enviarte notificaciones)
- <span id="res_email"></span>
- </p>
- <p>
- <b>Teléfono:</b> <input id="id_telf" name="telf" max_length="20" type="text">
- {{ comprobar_error('telf') }}
- </p>
-
- <h3>Información del nodo</h3>
- <p>
- <b>Nombre del nodo:</b> <input id="id_nombre_nodo" name="nombre_nodo" max_length="200" type="text"> *
- {{ comprobar_error('nombre_nodo') }}
- <span id="res_nombre_nodo"></span>
- </p>
- <p>
- <b>Información adicional del nodo:</b>
- <br>
- <textarea id="id_descripcion" name="descripcion" rows="4" cols="40" max_length="2599" type="text-area" placeholder="Si quieres, comenta algo de tus planes para este nodo"></textarea>
- {{ comprobar_error('descripcion') }}
- </p>
- <p>
- <b>¿Deseas compartir tu ubicación?:</b>
- SI<input type="radio" id="id_ubicacion" name="compartir_ubicacion" value="SI" checked >
- NO<input type="radio" id="id_ubicacion" name="compartir_ubicacion" value="NO" >
- <br>
- <span class="text-warning">Si marcas "<b>SI</b>", permites que otros puedan ver la ubicación que proporciones de este nodo. Esto ayudará planificar enlaces con tu nodo.</span>
- </p>
- <p>
- <b>Clave de edición:</b> <input id="id_clave" name="clave" max_length="100" type="password" required="" > <b>*</b>
- <br>
- (Con esta clave podrás ajustar detalles de tu nodo a futuro, si la olvidas puedes restaurarla con tu email)
- {{ comprobar_error('clave') }}
- <span id="res_clave"></span>
- </p>
- <!-- Notas -->
- <hr>
- <h4>Detalles importantes</h4>
- <b>Modelo enrutador:</b>
- <p id="ref_modelo">
- Debes especificar el modelo de tu enrutador para que se genere la imagen de firmware correcta, esta aplicación generará una imagen de firmware para el modelo que escojas. <span class="text-danger">Si instalas la imagen de firmware en un modelo de enrutador diferente, este podría quedar inutilizable</span>.
- </p>
- <p>
- Si tu modelo de enrutador no está en la lista, puedes escojer <b>bajo tu propio riesgo</b> el modelo genérico para la arquitectura ar71xx, <code>este paso no es recomendable</code> a menos que sepas lo que haces. <a href="#campo_modelo">↑</a>.
- </p>
-
- <b> IPs públicas: </b>
- <p id="ref_ips_publicas">
- Se refiere al número de servidores públicos con direcciones IP propias que necesitas en tu nodo, típicamente no necesitarás mas de 5. (revisa <a href="#">poner servicios en la red</a> para más información) <a href="#campo_ips_publicas">↑</a>.
- </p>
-
- <b> IPs privadas: </b>
- <p id="ref_ips_privadas">
- Se refiere al número de <a href="#">dispositivos clientes</a> o consumidores de servicios que esperas se conecten a tu nodo, por defecto se asignará <b>hasta 30</b>. <a href="#campo_ips_privadas">↑</a>.
- </p>
- <hr>
- <div class="row">
- <div class="col-md-4">
- <button onclick="validarAgregarNodo()"
- class="btn btn-lg btn-primary btn-block">
- generar Firmware
- </button>
- <br>
- <input type="submit" id="construccion"
- {#class="btn btn-lg btn-primary btn-block"#}
- value="Enviar"
- style="background-color: #FFFFD; font-size:2px; color:#FFDDFD"
- {# onclick="getEstado()" #} >
- </div>
- <div class="col-md-8">
- Esto puede tomar algunos minutos o algunos segundos.
- </div>
- </div>
- <!-- ajax actualizaciones -->
- <div class="row" id="proceso_construccion">
-
- <script>
-
- function getEstado(){
- var request = new XMLHttpRequest();
- request.open("GET", "/nuevo/_construccion");
- request.onreadystatechange = function(){
- var div = document.getElementById("resultado");
- var cont = JSON.parse(this.responseText)
- if (this.readyState == this.DONE && this.status == 200){
- if(this.responseText != null){
- if (cont.estado == "No")
- div.innerHTML = '<span class="label label-danger">' + cont.estado + "</span>";
- else if(cont.estado == "construyendo")
- div.innerHTML = '<span class="label label-warning">' + cont.estado + "</span>";
- else if(cont.estado == "terminado")
- div.innerHTML = '<span class="label label-warning">' + cont.estado + "</span><br> <b>En 10 segundos</b> podrás descargar el firmware.";
- }
- else {
- div.innerHTML = "Error: no data";
- }
- }
- };
- request.send();
- }
- </script>
-
- <div class="col-md-6">
- Firmware construido?
- <span id="resultado">
- <!-- controlado por ajax -->
- </span>
- </div>
- <div class="col-md-6">
- <span id="url_descarga">
- ...
- </span>
- </div>
-
- </div>
- </div>
-
- </div>
- <br>
- </form>
- <!-- --------------------- -->
- <!-- javascripts --->
- {# <script src="{{ url_for('static', filename='js/jquery.js') }}" type="text/javascript"> </script> #}
- <!-- <script src="../static/js/signals1.js'"></script> -->
-
- {% endblock %}
|