Abans de començar la creació de plugins és important que hages llegit les següents entrades:
El desenvolupament de mòduls n4d és prou senzill i consisteix principalment en:
La millor manera de veure açò, és a través d'un xicotet exemple que veurem a continuació.
L'estructura d'un plugin consta de dos fitxers, un de configuració (/etc/n4d/conf.d) i altre d'implementació de la classe (/usr/share/n4d/).
Dins de la carpeta /usr/share/n4d tenim diferents carpetes en funció del llenguatge de programació que utilitzem per a realizar el plugin:
El nostre plugin, que anomenarem N4dChat, implementarà tres mètodes i disposarà d'un atribut on guardarà els missatges:
Els mètodes sendMessage i getMEssage són accessibles per a tothom i savehat serà sols accessible per a administradors i professors.
Per a implementar açò crearem un fitxer /etc/n4d/conf.d/N4dChat amb el següent contingut:
[SETUP] type=python path=N4dChat.py class=N4dChat [METHODS] (ip)sendMessage=anonymous getMessages=anonymous saveChat=adm,admins,teachers
Podem veure que tenim dues seccions en l'arxiu:
Anem a explicar el codi pas a pas. Has de tenir en compte que no pots tallar i apegar directament aquest codi puix python utilitza els tabuladors.
Importem les llibreries os i json. Os per accedir al sistema i json per poder crear arxius json
import os import json
Definim la classe N4dChat i definim el constructor. En el constructor iniciem un vector:
class N4dChat: def __init__(self): self.Messages=[] pass
Definimo el mètode sendMessage(self, ip, username, message)
def sendMessage(self, ip, username, message): try: msg={"ip":ip, "username": username, "message":message} self.Messages.append(msg) except Exception as e: print "except "+str(e) return 1
Definim el mètode getMessage(self, startMsg), on li passem des de quin missatge volem que comence a llegir.
def getMessages(self,startMsg): try: return(self.Messages[int(startMsg):]); except Exception as e: print "except "+str(e) return 1 return 0
Definim el mètode saveChat(self, filename) on indiquem el nom de l'arxiu que volem que se salve.
def saveChat(self, filename): try: with open("/tmp/"+filename, 'w') as outfile: json.dump(self.Messages, outfile) except Exception as e: print "except "+str(e) return 1 return 0
Des d'ací podem baixar l'arxiu per a utilitzar-lo:
Una vegada hagem creat el nostre plugin, si volem verificar-lo hem de reinicialitzar el servidor n4d, per a aixó hem de fer:
sudo service n4d restart
És important obrir altra terminal i controlar el log de n4d:
sudo tail -f /var/log/n4d/n4d-server
Si ens fixem en el log, en algun moment ha d'eixir-nos:
[N4dChat] /usr/share/n4d/python-plugins/N4dChat.py ... OK
Si hi ha algun problema, hem de revisar el codi per a assegurar-nos que tot és correcte.
Finalment hem de provar el nostre plugin. Si tot ha funcionat correctament, per a provar-lo utilitzarem n4d-client.
n4d-client -c N4dChat -m sendMessage -a "" lliurex "Hola a tots"
n4d-client -c N4dChat -m getMessages -a 0 [{'username': 'lliurex', 'ip': '127.0.0.1', 'message': 'Hola a tots'}, {'username': 'lliurex', 'ip': '127.0.0.1', 'message': 'Fent proves'}]
n4d-client -c N4dChat -m saveChat -u lliurex -p lliurex -a chat.txt cat /tmp/chat.txt [{"username": "lliurex", "ip": "127.0.0.1", "message": "Hola a tots"}, {"username": "lliurex", "ip": "127.0.0.1", "message": "Fent proves"}]