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