Cargando...
 

 Obsoleta
La información de esta página es antigua. Puede que esté obsoleta.

Historial: Desenvolupament de plugins en n4d

Previsualización de la versión: 5

Versiones
  -LliureX 16

 

1. Introducció

Abans de començar la creació de plugins és important que hages llegit les següents entrades:

2. Plugins n4d

El desenvolupament de mòduls n4d és prou senzill i consisteix principalment en:

  • Definir la classe i els mètodes que volem implementar.
  • Indicar al sistema n4d com publicar aquests mètodes de cara a l'exterior.

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 C tenim diferents carpetes en funció del llenguatge de programació  que utilitzem per a realizar el plugin:

  • python-­plugins: escrits en python
  • perl-plugins: escrits en perl
  • binary-plugins: escrits en bash

3. Creació d'un plugin xat d'aula

El nostre plugin, que anomenarem N4dXat, implementarà tres mètodes i disposarà d'un atribut on guardarà els missatges:

  • ClaseN4dXat
    • Atribut missatge: llista de missatges.
    • Mètode SendMessage(ip, usuari, missatge): Agafarà  la ip de qui l'envia, el nom d'usuari i el missatge.
    • Mètode getMessages(inici): Tornarà tots els missatges enviats a la par del missatge marcat com "Inici".
    • Mètode saveChat(arxiuo): guardarà tots els missatges en el /tmp del servidor.

Els mètodes sendMessage i getMEssage són accessibles per a tothom i

 

Los métodos sendMessage y getMEssage son accesibles para todo el mundo y C 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:

  • SETUP: que es donde se configura el plugin.
    • type=python : definimos el lenguaje de programación del plugin.
    • path=N4dChat.py Nombre del fichero donde se implementan los métodos
    • class=N4dChat Nombre de la clase
  • METHODS: donde se indican los métodos que se hacen publicos en la clase.
    • (ip)sendMessage=anonymous : la ip delante indica que la ip de la máquina se envía como primer parámetro
    • getMessages=anonymous
    • saveChat=adm,admins,teachers

 

Vamos a explicar el código paso por paso. Has de tener en cuenta que no puedes cortar y pegar directamente este código ya que python hace uso de los tabuladores.

Importamos las librerías os y json. Os para acceder al sistema y json para poder crear archivos json.

import os import json

 


Definimos la clase N4dChat y definimos el constructor. En el constructor iniciamos un vector:

class N4dChat: def __init__(self): self.Messages=[] pass


Definimos el método 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



Definimos el método getMessage(self, startMsg), donde le pasamos desde que mensaje queremos que empiece a leer:

def getMessages(self,startMsg): try: return(self.Messages[int(startMsg):]); except Exception as e: print "except "+str(e) return 1 return 0

 
Definimos el método saveChat(self, filename) donde indicamos el nombre del archivo que queremos que 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

 

Podemos bajar el archivo para usarlo de aquí:

N4dChat 

 

4.   Uso y testeo de plugins

 

Una vez tengamos nuestro plugin hecho, si queremos testearlo debemos reiniciar el servicio n4d, para ello debemos hacer:

sudo service n4d restart


Es importante abrir otra terminal y controlar el log de n4d:

sudo tail -f /var/log/n4d/n4d-server


Si nos fijamos en el log, en algún momento debe salirnos:

[N4dChat] /usr/share/n4d/python-plugins/N4dChat.py ... OK


Si hay algún problema deberemos revisar el código para asegurarnos que todo es correcto.

 

5. Pruebas

Finalmente hemos de probar nuestro plugin. Si todo ha ido bien para testearlo usaremos 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"}]

 

Historial

Avanzado
Información Versión
2018-09-20 14:42 empar 10
Ver
2018-09-20 14:36 empar 9
Ver
2018-09-20 14:28 empar 8
Ver
2018-09-20 13:48 empar 7
Ver
2018-09-20 13:37 empar 6
Ver
2018-09-20 13:33 empar 5
Ver
2018-09-20 13:23 empar 4
Ver
2018-09-20 13:11 empar 3
Ver
2018-09-20 12:50 empar 2
Ver
2018-09-20 14:42 empar 1
Ver

Historial

No hay registros que mostrar
Mastodon E-Mail