Ok, totalmente de acuerdo con lo que contáis, tenía en la cabeza la web central porque se me había metido en la cabezota que los usuarios debían autenticarse y validarse, pero no, es cierto, la unión de nodos a la red no requiere un sistema de registro/validación de usuario con su dirección de correo y con contraseñas, etc. etc, una simple validación de que la direccion de correo es correcta, o que el teléfono es correcto, y a rular. Me gusta!<div>
<br></div><div>Según ese esquema la web central es únicamente informativa y no necesaria para el funcionamiento de la red.</div><div><br></div><div>Muy bien, pues yo he continuado con el proceso de arquitecturar la web de un nodo, de momento mi roadmap, basado en vuestros datos es el siguiente:</div>
<div><br></div><div>* Conseguir que cualquier nodo de la red pueda clonar un repositorio y tener funcionando la web del nodo inmediatamente.</div><div>* La mayor parte de la web no requerirá server-side-scripting, se compone totalmente en la capa de cliente (gracias a angularJS).</div>
<div>* La parte de Server-Side-Scripting se realizará mediante una API REST, el lenguaje de programación que yo eligiría salvo que no penséis como yo sería NodeJS/express. Es fácil de instalar en cualquier distribución moderna, prácticamente igual de fácil que Ruby/Python, y un poco más complicado (no mucho) que PHP, pero con grandes ventajas respecto a este.</div>
<div><br></div><div>Bueno, he hecho el esqueleto de la web con angularJS, echadle un vistazo si queréis, y si tenéis un momento probadlo en vuestro nodo. Os cuento.</div><div><br></div><div>* Podéis ver la demo de la versión actual con las secciones funcionando aquí: <a href="http://loom.gotdns.org/pln/app/#/main">http://loom.gotdns.org/pln/app/</a></div>
<div>* Podéis poner en marcha esta versión en vuestro nodo clonando el repositorio GIT:</div><div> <a href="https://github.com/PhoneLiberationNet/pln-node-webapp">https://github.com/PhoneLiberationNet/pln-node-webapp</a></div>
<div><br></div><div>* El archivo que almacena la información de un nodo es el node.json[0]. ¿Podéis confirmar que toda la información que he incluido en ese archivo es pública? ¿O hay información que debería ser privada? Si modificáis ese archivo con vuestros datos, la web que habéis clonado se adecuará a esa nueva información.</div>
<div><br></div><div>[0] <a href="https://github.com/PhoneLiberationNet/pln-node-webapp/blob/master/node.json">https://github.com/PhoneLiberationNet/pln-node-webapp/blob/master/node.json</a></div><div><br></div><div>Podríamos tener un directorio con todos los JSON de los nodos, al estilo:</div>
<div>$ ls -l nodes/</div><div>nodes/patiomaravillas.json</div><div>nodes/loom.json</div><div>nodes/plnmataro.json</div><div>...</div><div><br></div><div>De manera que para poner en marcha la web de un nodo sólo habría que linkar el json a la raiz, al estilo:</div>
<div><br></div><div>$ ln -s nodes/loom.json node.json</div><div><br></div><div><br></div><div>Bueno ya me diréis qué os parece, no me enrollo mucho más. Sólo una cosa, si queréis ir completando las secciones de la web, está todo dividido por plantillas, por lo que ya se podría añadir información a la sección de documentación, por ejemplo, editando la plantilla que encontraréis en app/templates/documentacion.html. Lo mismo con el resto.</div>
<div><br></div><div>Venga un saludo</div><div><br></div><div><br></div><div><br></div><div><br><div class="gmail_quote">El 2 de septiembre de 2012 23:54, Santiago Crespo <span dir="ltr"><<a href="mailto:pln-lists.marsupi.org@flanera.net" target="_blank">pln-lists.marsupi.org@flanera.net</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hola,<br>
<br>
Para mi, idealmente los pasos serían:<br>
<br>
1. Usuario llega a **cualquier web de cualquier nodo** que tenga
IP pública. Por ejemplo al nodo "aaa".<div class="im"><br>
<div><br>
2. Lee la descripción del proyecto, le gusta, quiere darse de
alta en la red.<br>
</div>
<br></div>
3. Pulsa el botón de unirse a la red:<br>
- rellena los datos, <br>
- ** elige otros 2 o 3 o x nodos a los que conectarse: "abc" y
"zxy"**<br>
- **demuestra que es humano**<br>
- **La web comprueba automáticamente la validez y disponibilidad
de los datos introducidos (números PLN solicitados, los otros
nodos a los que conectarse responden y realmente admiten más
conexiones, etc)** <br>
- Almacena sus datos en **unos ficheros de texto** y le manda un
e-mail de confirmación. <br>
- Se valida el correo mediante un enlace por ejemplo. También se
podría validar el teléfono de contacto mediante una llamada
automática que lea unos números.<br>
<br>
5. **El sistema autoconfigura el DUNDi del nodo local ("aaa") para
admitir al nuevo miembro**<br>
<br>
6. **El nodo "aaa" envía la solicitud automáticamente a los nodos
"abc" y "zxy" con los datos ya revisados del nuevo nodo.**. Esta
solicitud se realiza dentro de la VPN. Sólo se admiten éstas
peticiones desde la red 1.x.x.x<br>
<br>
7. **Los nodos "abc" y "zxy" se autoconfiguran el DUNDi para
admitir al nuevo nodo.**<br>
<br>
8. **La web le envía al admin del nuevo nodo los ficheros
necesarios (de configuración, listados, etc)**<br>
<br>
9. El usuario configura su nodo, crea sus claves públicas/privada
tinc y DUNDi, abriendo puertos y ubicando las claves en **el
servidor web de su nodo**.<br>
<br>
10. Todo automágico: Los nodos "aaa", "abc" y "zxy" prueban cada X
horas a descargarse las claves públicas (DUNDi y tinc) del nuevo
nodo. Cuando lo consiguen, hacen un reload del asterisk y del tinc
para que carguen las claves. Una vez responda a ping, prueba a
resolver los números PLN del nuevo nodo vía DUNDi cada X horas.
Cuando funcione, se envía un mail a los admins implicados
informando del suceso y dando la bienvenida al nuevo nodo :)<br>
<br>
Respondo debajo a las preguntas..<div class="im"><br>
<br>
On 02/09/12 18:14, David Rubert wrote:<br>
</div></div><div class="im">
<blockquote type="cite">Wenas de nuevo!
<div><br>
</div>
<div>Estaba yo cavilando a ver cómo darle forma a la parte de la
web, y a la manera de darse de alta un admin de asterisk recien
llegado, nuevo de trinca ,sin ningún padrino que ya le haya
informado sobre cómo funciona el proyecto.</div>
<div><br>
</div>
<div>Voy a intentar enumerar los pasos, sin detallar mucho la
parte técnica, a ver si os parecen correctos.</div>
<div><br>
</div>
<div>1. El usuario llega a la web principal (<a href="http://phoneliberation.net" target="_blank">http://phoneliberation.net</a>).</div>
<div>2. Lee la descripción del proyecto, le gusta, quiere darse de
alta en la red.</div>
<div>3. Pulsa el botón de unirse a la red, rellena los datos, y la
web almacena sus datos en alguna DB y le manda un e-mail de
confirmación (validación de e-mail?).</div>
<div>4. El usuario configura su nodo, creando la pareja de clave
pública/privada TINC, abriendo puertos y ubicando las claves en
un servidor web público.</div>
<div>5. Examina el listado de nodos ya enlazado y elige 2 nodos:
"abc" y "zxy".</div>
<div>6. Visita la página del nodo "abc" y hace una solicitud para
establecer un enlace con ese nodo.</div>
<div>7. El formulario le confirma la recepción, le informa de que
le ha enviado la información al administrador para que, cuando
pueda, configure el nuevo enlace.</div>
<div>8. Cuando el admin del nodo configura tinc y dundi con la
información del nodo recien-llegado, le confirma vía correo.</div>
<div>9. El nuevo usuario termina de configurar su enlace
tinc/dundi.</div>
<div>10. Conseguido.</div>
<div><br>
</div>
<div>¿Qué os parece este proceso (a groso modo)? Lo describo yo
que soy un recién llegado y no tengo claras las partes, por eso
me gustaría que corrigierais lo que no es correcto. Este proceso
que he descrito implicaría:</div>
<div><br>
</div>
<div>* Comunicar adecuadamente/sincronizar información entre una
web central (<a href="http://phoneliberation.net" target="_blank">phoneliberation.net</a>) y
las webs distribuidas en la red (las de los nodos). Vía
repositorio GIT privado o similar.</div>
</blockquote>
<br></div>
No hace falta una web central, podemos hacerlo todo distribuido.
"Sólo" tenemos que hacer y ponernos de acuerdo en usar la futura
versión 1.0 del acuerdo, documentación, código fuente de la web,
scripts, etc.<div class="im"><br>
<br>
<blockquote type="cite">
<div>* Decidir el nivel de validación de los usuarios en todo el
proceso. Es decir, decidir si dejamos que las solicitudes sean
anónimas, o vamos a realizar un proceso de registro/validación
de usuarios pertenecientes a la red (vía usuario/contraseña).</div>
</blockquote>
<br></div>
De los datos del admin, yo validaría únicamente el email y el número
de teléfono de contacto (PSTN).<br>
<br>
A los admins no les hace falta usuario/contraseña. Los usuarios
(abonados) sí que tendrán su usuario/contraseña en la web de su
nodo, para cambiar sus datos y preferencias.<div class="im"><br>
<br>
<blockquote type="cite">
<div>* Decidir el nivel de automatismo del proceso. ¿Qué
interacción por parte de los administradores queremos que sea
necesaria? </div>
</blockquote></div>
El trabajo de máquinas, para las máquinas. Que los scripts
comprueben y configuren lo que haga falta. El tiempo del admin (y de
cualquier persona) es lo más valioso, por lo que pondría ninguna, o
la mínima posible. Si cumple las normas y funciona, bienvenido. Esto
se puede hacer automático.<br>
<br>
Excepto cuando llegue el caso de que alguien quiera un número
geográfico de una zona (país) que todavía no está consensuada,
deberá traer una propuesta para ser revisada públicamente. Esta
revisión deberán hacerla manualmente entre varios admins que ya
estén en la red.<br>
<br>
El admin del nuevo nodo siempre tendrá que hacer algo manualmente
para unirse. Como mínimo tendrá que rellenar el formulario,
demostrar que es humano y configurarse su nodo.<div class="im"><br>
<br>
<blockquote type="cite">
<div>¿Se podría dar de alta un nodo sin ningún tipo de interacción
por parte de los administradores de los nodos ya enlazados?</div>
</blockquote></div>
Si. Por ejemplo con los pasos que propongo.<br>
<br>
<blockquote type="cite">
<div>¿Cómo lo véis?</div>
</blockquote>
Bien, vamos concretando cosas :)<br>
<br>
</div>
<br>_______________________________________________<br>
PLN mailing list<br>
<a href="mailto:PLN@marsupi.org">PLN@marsupi.org</a><br>
<a href="https://lists.marsupi.org/listinfo/pln" target="_blank">https://lists.marsupi.org/listinfo/pln</a><br>
<br></blockquote></div><br></div>