Lotus Domino. Editar Grupos de Personas con Lotus Script

0 Flares Twitter 0 Facebook 0 LinkedIn 0 Google+ 0 0 Flares ×

Grupo Lotus DominoUno de los controles antispam que os comentaba en otros post anteriores era el bloqueo de dominios desde el control de mensajes entrantes desde el Servidor Lotus Domino (podéis verlo aquí).

En ese post os comentaba como crear un grupo de personas donde añadir los dominios de correos que no queríamos que llegaran a nuestros buzones. Obviamente, tener que meter esos dominios uno a uno en el grupo del directorio implicaba un trabajo excesivo que la mayoría de las veces no se realizaba.

Pues bien, para evitar ese trabajo y agilizar los procesos, creé una acción para que al usarla, se añadieran automáticamente al grupo de bloqueo el dominio del los mensaje no deseado que teníamos seleccionado, con lo cual, con un simple click dejábamos de recibir correos de ese dominio.

No hace falta recalcar la peligrosidad de botón y de dejarle a cualquier usuario usarla, ya que podríamos bloquear todos los mensajes entrantes de cualquier emisor….

Mi solución fue crear una Base de Datos donde el resto de usuarios envía los correos que desea bloquear y donde yo añado el botón de bloqueo. Periódicamente me meto en esa Base de Datos y bloqueo todo lo que veo que debo bloquear y elimino lo que creo que es un error.

El botón en cuestión está asociado a una Accion escrita en Lotus Script que os detallo a continuación y, como siempre, al final tenéis completa.

Lo primero es abrir la Base de Datos del directorio de Lotus Domino, ubicada en el servidor y que se llama names.nfs (ojo, no confundir con la local que es la vuestra particular).

Set db2 = ss.GetDatabase(db.Server,»names.nsf»)
If db2.IsOpen Then

Luego buscamos el grupo que queramos en la vista Groups y recuperamos el documento

Grupo = «Spam»
Set vista = db2.getview(«Groups»)
Set doc = vista.getdocumentbykey(Grupo,True)
If Not doc Is Nothing Then ‘ si encuentra el documento, añade el dominio

Controlamos que no exista ya ese miembro en el grupo

Contador = Arraygetindex( doc.members, Dominio )
If Contador > 0 Then
Msgbox «Dominio ya Existe en Grupo»,0+64+0+0,»Error»
Else

Por último, añadimos el valor al array de miembros de ese grupo, reordenamos el array con la función QuickSort y salvamos el documento.

doc.members = Arrayappend( doc.members, Dominio)
FieldList=Evaluate(|@Name([Abbreviate];Members)|,doc)
Call QuickSort(FieldList)
Call doc.ReplaceItemValue(«Members»,SortedArray)
Call doc.Save(1,0)

Eso es todo. Con esta sencilla acción, con un simple click bloqueo el dominio de cualquier remitente que no desee recibir más. Obviamente, si me equivoco basta ir al grupo Spam y eliminar el dominio.

Os dejo la función completa, por eso del copy/paste…..

Sub Click(Source As Button)
   Dim ss As New notessession
   Dim ws As New notesUIworkspace
   Dim uiview As NotesUIView
   Dim dc As NotesDocumentCollection
   Dim db As notesdatabase, db2 As notesdatabase
   Dim uidoc As NotesUiDocument
   Dim docAct As NOtesDocument
   Dim doc As NOtesDocument
   Dim vista As Notesview
   Dim Dominio As String, Grupo As String
   Dim Contador
   Dim Hecho As Boolean

   Set db = ss.CurrentDatabase
   Set uiview = ws.CurrentView
   Set dc = db.UnprocessedDocuments
   Set docAct = dc.GetFirstDocument

   If Not (docAct Is Nothing)  Then
      'Buscamos el Grupo Spam donde añadirlo
      Set db2 = ss.GetDatabase(db.Server,"names.nsf")
      If db2.IsOpen Then
         Dominio = "@"+Strright( docAct.SMTPOriginator(0),"@")
         Grupo = "Spam"
         Set vista = db2.getview("Groups")
         Set doc = vista.getdocumentbykey(Grupo,True)
         If Not doc Is Nothing Then
            'Si ya existe mostramos mensaje
             Contador  = Arraygetindex(  doc.members, Dominio )
             If Contador > 0 Then
                Msgbox "Dominio ya Existe en Grupo",0+64+0+0,"Error"
             Else
                doc.members = Arrayappend( doc.members, Dominio)
                FieldList=Evaluate(|@Name([Abbreviate];Members)|,doc)
                ' Ordenamos la lista
                Call QuickSort(FieldList)
                Call doc.ReplaceItemValue("Members",SortedArray)
                Call doc.Save(1,0)
             End If
          Else
             ' Mostramos error
             Msgbox "Error, Grupo "+Grupo+" No Encontrado",0+64+0+0,"Error"
          End If
      Else
         Msgbox "Error, BD no Encontrada",0+64+0+0,"Error"
      End If
   End If
End Sub

JoBenCa

http://jobenca.es

Administrador y desarrollador de sistemas IBM System i y curioso de todo tipo de tecnología.

View more posts from this author

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0 Flares Twitter 0 Facebook 0 LinkedIn 0 Google+ 0 0 Flares ×