Aquesta és la documentació bàsica d'Inite. Inite incorpora un servidor DNS fet en python i un Captive Portal fet en el REST framework de python Django:
-
CustomDNS: Aquest senzill dns (a la carpeta customDNS) permet l'aparició automàtica del captive portal i l'enllaç amb els altres serveis del servidor. El seu funcionament és el següent:
- Un host de la xarxa interna desitja connectar-se a internet. Si el router ha estat ben configurat com explica la documentació aquest host farà una petició DNS al servei per resoldre el nom del recurs que demana.
- Al rebre aquesta petició el servidor customDNS té dos comportaments:
- Aquest host no ha passat pel captive portal: En aquest cas mostrarà el portal perquè el host es pugui registar.
- Aquest host s'ha registrat correctament al captive portal: En aquest cas podrà accedir als recurosos d'internet i/o del servidor lliurement. Es pot configurar el borrat de la base de dades cada x nombre d'hores per forçar el registre de la gent tenint en compte que els cursos pels que s'ha dissenyat aquest servei duren 4 hores i els ordinadors són compartits. Veure documentació Borrat de la base de dades
-
Captive Portal: La funció principal és recollir les dades de les persones que es dirigeixin al centre a fer els cursos. Aquest portal es veurà cada cop que un nou host entri a la xarxa en les hores entre que la base de dades es reseteja (veure documentació Borrat de la base de dades). Permet també a un administrador amb usuari i contrasenya poder-se descarregar aquestes dades i bloquejar o permetre la sortida a internet.
Abans de tot cal donar el valor correcte a les variables d'instal·lació: ROUTER_PASSWD: Password del router ROUTER_USER: User del router ROUTER_IP: IP del router IP_SERVIDOR: IP del servidor web (192.168.33.2) en la nostra configuració IP_DNS: IP del servidor DNS pel forwarding DOMAINS: Domini base. (ex: duniakato.org) DB_NAME: Nom de la base de dades, a escollir. DB_USER: Usuari de la base de dades, a escollir. DB_PASSWD: Contrasenya de la base de dades, a escollir. (Aquí en falten encara)
Cal també donar permisos d'exexcució a l'script d'instal·lació
chmod +x installinite.shCarrega el fitxer de configuració del router que trobaras a la carpeta (FALTA PUJAR).
Guia d'instal·lació ràpida del servei Inite en un servidor Devian/Ubuntu i derivats. La instal·lació pot fer-se de forma automàtica per mitjà del script d'instal·lació installinite.sh o de forma manual amb els passos següents ( Això encara no està implementat. Cal instal·lar manualment ). Si s'opta per la instal·lació automàtica el manual segueix al punt borrat de la base de dades.
Abans de començar la instal·lació cal moure el fitxer de configuracions al lloc que el pertoca
mkdir /etc/inite
cp variables.json /etc/inite/- Cal primer instalar python i l'instal·lador de paquets pip, el servidor web Apache2, el SGBD postgresql
sudo apt update -y
sudo apt install python python-pip python3 python3-dev python-dev python3-pip apache2 postgresql postgresql-contrib libpq-dev apache2-utils libapache2-mod-wsgi-py3 expect -y - Configuració de Postgres. És important escriure aquestes comandes per separat per evitar problemes amb el shell de postgres. CAL DONAR AL NOM DE L'USUARI, AL NOM DE LA BASE DE DADES I A LA CONTRASENYA EL MATEIX VALOR QUE S'HA INDICAT EN EL FITXER DE CONFIGURACIÓ variables.json
sudo systemctl enable postgresql
sudo systemctl start postgresql
sudo -u postgres psql
create user <DB_USER>;
create database <DB_NAME>;
alter user <DB_USER> with encrypted password <DB_PASSWORD>;
grant all privileges on database <DB_NAME> to <DB_USER>;
\q- Configuració de l'entorn python
- Crear entorn virtual
pip3 install venv
python3 -m venv venv
source venv/bin/activate- Instal·lacció dels requisits de python
pip3 install wheel
pip3 install -r requirements.txt
python3 manage.py makemigrations
python3 manage.py migrate
deactivate- Deshabilitar el dns server per defecte d'unix
systemctl disable systemd-resolved- Configuració de l'apache.
- Configuració de les variables d'entorn
Cal donar valor a la variable PROJ_PATH present a web_server/envvars. Exemple:
bash #Això és el fitxer envvars export PROJ_PATH=/home/quim/initeAfegir la variable a l'entorn d'Apache:bash su -c "cat web_server/envvars >> /etc/apache2/envvars" - Configuració dels mòduls i entorn
sudo rm /etc/apache2/sites-enabled/000-default.conf
sudo cp web_server/inite.conf /etc/apache2/sites-available/
sudo ln -s /etc/apache2/sites-available/inite.conf /etc/apache2/sites-enabled/inite.conf
sudo cp web_server/mod-wsgi.conf /etc/apache2/conf-available/
sudo a2enconf mod-wsgi
sudo a2enmod wsgi
sudo systemctl enable apache2
sudo systemctl restart apache2
chmod +x enable updateIP
sudo chown root:root updateIP
echo "www-data ALL= (root) NOPASSWD: `pwd`/updateIP" | sudo EDITOR='tee -a' visudo- Procedim a la instal·lació de customDNS
pip install -r customDNS/requirements.txt- Copiar la carpeta la carpeta de sistema /usr/local/.
sudo cp -r ./customDNS /usr/local/- Copiar el servei a la carpeta de serveis de Debian
sudo cp ./customDNS/fakeDNS.service /etc/systemd/system/fakeDNS.serviceAquesta versió del programa permet un borrat programat de la base de dades de registres, és a dir, un sistema que obligarà als usuaris a registrar-se cada un nombre determinat d'hores. És útil per exemple en sales on es fan cursos i assisteixen moltes persones diferents per obligar sempre al començament de cada curs a fer un nou registre. Aquest borrat només borra les IPs dels ordinadors que s'han registrat. No borra pas les dades que els usuaris han entrat en cada registre. La manera de fer-ho és la seguent:
sudo chmod +x ./psql.sh
sudo chown postgres:postgres ./psql.sh
sudo -u postgres bash
(crontab -l 2>/dev/null; echo "30 14 * * * /path/to/psql.sh") | crontab - #Borra el registre de la base de dades
(crontab -l 2>/dev/null; echo "@reboot /path/to/psql.sh") | crontab - #Permet el borrat dels registres a cada reinici de la maquina
exitÉs poden afegir d'aquesta manera totes les regles necessàries a crontab amb per respondre a les necessitats.
Instruccions de posada en marxa dels serveis:
- Mode debugging: Permet engegar els serveis en terminals i veure els outputs de debugging per a detectar errors en la configuració/programació
- Mode producció: Fet amb daemons de systemd per garantir l'execució en segon plà, l'engegada del servei amb l'engegada de l'ordinador i el restabliment del servei si cau.
- Assegurarnos que tenim tots els daemons al port 80 i al port 53 desctivats
netstat -putan #per veure les connexions
systemctl stop apache2 #apagar la connexió d'apache que podem tenir encesa
systemctl stop fakeDNS #apagar el dns que podem tenir encès
systemctl stop systemd-resolved #apagar el dns resolver d'ubuntu- Assegurar-nos que la base de dades està activada
systemctl start postgresql-
Assegurar-nos que la variable IP_SERVIDOR del fitxer customDNS/fakeDNS.py té el valor del dispositiu que esta exercit de servidor DJango.
-
Engegar el dns en un terminal
python2 customDNS/fakeDNS.py- Engegar el server DJango
source venv/bin/activate
sudo su
python3 manage.py runserver 0.0.0.0:80
deactivateSi es el primer cop que accedim (és a dir, la base de dades està buida) caldrà entrar creant un usuari administrador per defecte amb la seguent comanda
source venv/bin/activate
python3 manage.py createsuperuser
sudo su
python3 manage.py runserver 0.0.0.0:80
deactivateLlest. Al obrir un navegador amb el DNS ben configurat i dirigit al nostre servidor ens sortirà un popup del navegador per registrar-nos.
- Posada en marxa del daemon de customDNS.
sudo systemctl enable fakeDNS
sudo systemctl start fakeDNS- Posada en marxa del daemon apache2
sudo systemctl start apache2Cal tenir en compte que l'única forma de creat nous usuaris és a través de la comanda createsuperuser mostrada en el punt anterior. Cal preveure quants usuaris cal donar.
Per poder seguir aquest punt cal haver completat Instal·lació i Posada en marxa.
- A l'iniciar un navegador, ens sortirà un pop-up demanant-nos que ens registrem per usar la xarxa. (foto popup)
- Al accedir-hi, s'ens mostrarà un formulari que haurem d'omplir per usar els recursos de la xarxa. Des d'aquest panell podrem anar també al taulell d'administració (punt 4). (foto)
- Des d'aquesta se'ns mostren els recursos als que podem accedir sense internet (foto)
- Si cliquem al botó d'Admin accedirem al panell d'administració des del que ens haurem de loggejar. (foto)
- Des d'aquest panell d'administració tenim accés a diverses funcionalitats
- Descarregar les dades dels usuaris en format csv des de la data assenyalada
- Canviar la contrasenya i el nom d'usuari
- Permetre o bloquejar l'accés a internet dels ordinadors de la sala
- Sortir de l'usuari
A la carpeta templates hi ha els templates html amb els textos que es poden canviar per adaptar-los a les necessitats d'allà on implementem el projecte (en un futur aquesta docu estarà millor).

