El desarrollo de módulos n4d es bastante sencillo, y consiste principalmente en:
La mejor manera de ver esto es através de un pequeño ejemplo que veremos a continuación.
La estructura de un plugin consta de dos ficheros, uno de configuración (/etc/n4d/conf.d) y otro de implementación de la clase (/usr/share/n4d/).
Dentro de la carpeta /usr/share/n4d tenemos diferentes carpetas en función del lenguaje de prograión que usemos para hacer el plugin:
Nuestro plugin, que vamos a nombrar como N4dChat, implentará tres métodos, y dispondrá de un atributo donde guardar los mensajes:
Los métodos sendMessage y getMEssage son accesibles para todo el mundo y savehat será solo accesible para administradores y profesores.
Para implementar esto crearemos un fichero /etc/n4d/conf.d/N4dChat amb el siguiente contenido:
[SETUP] type=python path=N4dChat.py class=N4dChat [METHODS] (ip)sendMessage=anonymous getMessages=anonymous saveChat=adm,admins,teachers
Podemos ver que tenemos dos secciones en el archivo:
import os import json class N4dChat: def __init__(self): ''' Class Constructor: Initializes Messages ''' # Define Messages as a List (empty) self.Messages=[] pass #def init def sendMessage(self, ip, username, message): ''' sends a Message to chat from user,ip ''' try: # Msg is a register formed by ip, username and message msg={"ip":ip, "username": username, "message":message} self.Messages.append(msg) except Exception as e: print "except "+str(e) return 1 #def sendMessage def getMessages(self,startMsg): ''' returns messages from startMsg to last message ''' try: # Python sublists notation: list[stat:end] return(self.Messages[int(startMsg):]); except Exception as e: print "except "+str(e) return 1 return 0 #def getMessages 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 # def saveChat #class N4dChat