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.

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. Podeu descarregar una presentació que es va mostrar al passat SAX de Valls que explica els detalls de Docker i l'ús que en fem a Guifi: Presentació Docker

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.

Eines de l'usuari