Introducció al desenvolupament de Guifi.net
De Guifi.net - Wiki Català
Aquest document ens ajudarà a començar a desenvolupar sobre els serveis i aplicacions que trobem a la xarxa de guifi. Principalment la xarxa comunitària Guifi.net està construïda sobre la web www.guifi.net basada en el CMS Drupal, no obstant, actualment també tenim altres eines que interactuen amb aquest Drupal o que directament es troben aïllades.
Contingut
Repositoris
Per treballar en projectes en grup s'utilitzen repositoris amb control de versions, com per exemple git. A Guifi.net disposem d'una pàgina de github.com on hi trobarem tots els repositoris de software de la xarxa. La seva direcció és https://github.com/guifi
Entorns de desenvolupament preparats
Introducció
Des de l'estiu del 2017 disposem d'entorns de desenvolupament basats en la tecnologia Docker. Docker és un software que permet col·locar aplicacions dins d'uns contenidors amb les seves pròpies llibreries i de forma aïllada del sistema operatiu del host.
Instal·lació de Docker
Tot-hi que Docker és multiplataforma, només funcionen les imatges que estan basades en aquell sistema operatiu, és a dir, no es pot executar un contenidor d'una imatge de Windows amb un host que executi Linux. Totes les imatges de guifi estan basades en Linux així que es necessari aquest sistema. Per tal d'instal·lar Docker es recomana seguir les indicacions de la seva pàgina oficial: https://www.docker.com/
Encara que la vostre distribució incorpori Docker no se'n recomana la instal·lació ja que normalment els paquets es troben força desactualitzats.
Un cop instal·lat Docker hem d'instal·lar el Docker Compose. Aquesta eina ens permet executar aplicacions basades en més d'un contenidor. Per fer-ho, necessitem l'aplicació pip de Python i instalar el paquet docker-compose.
Per a Debian/Ubuntu les instruccions són:
$ sudo apt install python-pip $ sudo pip install docker-compose
Posada en marxa dels entorns
S'ha creat un repositori especific per totes les composicions de Docker. Per fer-ho servir necessitem clonar el repositori:
$ git clone https://github.com/guifi/docker-guificompose.git
I navegar pels diferents directoris fins arribar a la composició que ens interessi:
$ docker-compose up
Amb aquesta comanda ja tindrem l'aplicació a desenvolupar executant-se a la nostra màquina.
Projectes principals
Web Drupal 6
És la web principal de la xarxa guifi.net. Actualment es basa en el popular CMS Drupal 6 i conté dos mòduls de desenvolupament propi (drupal-guifi i drupal-budgets). El primer d'aquests mòduls serveix per representar i descriure la xarxa (assignació de direccions, enllaços, serveis...) i el segon és útil pel recompte de despeses per tal de que els implicats en la xarxa puguin assumir els costos d'operació i construcció segons l'ús de la xarxa per part d'ells.
Eina fiberfy
És una aplicació utilitzada per descriure projectes de fibra òptica de la xarxa Guifi. Permet descriure l'obra cívil involucrada en els desplegaments de fibra i també permet especificar la capa física del desplegament de fibra (splitters, cables...). L'eina es troba desenvolupada en node.js basada en una API Rest i el client web està desenvolupat seguint els paradigmes de SPA (Single Page Application) en JavaScript.
guifiproxy
És un servidor basat en squid3 que interconnecta amb la base de dades d'usuaris de Guifi i permet la creació de proxys sobre la xarxa amb accés a Internet.
guifimaps
És un conjunt d'scripts juntament amb el software MapServer que ens permet traçar els enllaços entre nodes que formen la xarxa. Aquests scripts estan fets en PHP.
snpservices
És l'eina que ens permet graficar l'estat de la xarxa basant-se en el paradigme de Xarxes espontànies. Per fer aquesta tasca utilitza l'eina rrdtool i un script fet amb PHP.
dnsservices
És l'eina que s'utilitza per crear servidors de DNS dins del context de Guifi. Obté les entrades de DNS de la base de dades de la web i genera les configuracions pel servidor de DNS bind.