Domino 9 und frühere Versionen > ND7: Entwicklung

AdminP erweitern

(1/4) > >>

eknori:
Hat irgendwer hier schon einmal den AdminP um individuelle RequestHandles erweitert? ( analog http://www.ibm.com/developerworks/lotus/library/ls-Custom_AdminP_Handler/ )
Ich suche eine Möglichkeit, über den AdminP Gruppenmitglieder aus bestehenden Gruppen zu löschen.
Wäre klasse, wenn mir jemand sein Werk zur Verfügung stellen könnte.

eknori:
Hmm, ich hocke gerade über dem C Code. Obwohl ich der festen Überzeugung bin, daß ich beim Herunterladen des Codes und kompilieren alles richtig gemacht habe, bekomme ich den Kram nicht ans Laufen ...

Je mehr ich mich aber mit dem Code beschäftige, desto mehr komme ich auch zu der Überzeugung, daß man das Ziel einer Erweiterung des AdminP auch mit ganz normalem LS Code erreichen kann.

Denn, was passiert eigentlich, wenn man einen AdminRequest absetzt? Es wird ein Dolument in der admin4.nsf erzeugt, welches Felder mit Informationen enthält.
Der AdminP ( ein Server Addin ) horcht regelmässig in die Message Queue des Servers und schnappt sich dann die zu bearbeitenden Dokumente.  Innerhalb des AdminP Codes steht dann: "Wenn du einen request mit der Nummer nnn findest, dann mache dies und das"

Das Dies und Das kann dann sein :"Gucke mal in den request, ob da in dem feld SoundSo ein Name steht. Wenn ja, dann packe den in die Gruppe ABC und sag mir Bescheid, ob das geklappt hat"

Wenn der Code das OK gibt, schreibt der AdminP seinem herrchen einen netten Report in Form eines AntwortDocs auf den request. "Chef, hat klappt!!"

Das lässt sich aber Alles auch mit normalem Code bewerkstelligen. Die Admin4.nsf dient dabei dann lediglich als Container für die Anfragen und die Logs zu den Requests.
Code, den der AdminP nicht kennt ( z.B. 5001 ) fasst er nicht an. Das kann dnn ein Agent in der admin4.nsf übernehmen. Der Agent läuft mit den rechten des Servers; dann kommt er auch überall ran.

Ein paar Einschränkungen wird es geben, aber für das Löschen von Usern aus einer Gruppe sollte es reichen.

...

eknori:
Der geht einfach in dieses IF nicht rein **!!@@@@ :'(

    while (!AddInIdle())
    {
      WORD            wRetLen = 0;
      AdminpAddInMessage   adminpMsg;

      memset(&adminpMsg, 0, sizeof(AdminpAddInMessage));

        OSPreemptOccasionally();

      /* Call MQGet to get the next message with a 200 ms timeout */
      MQGet(hMQ, (char*)&adminpMsg, sizeof(AdminpAddInMessage), 0, 200, &wRetLen);

   --->>>>>>      
        if (wRetLen == sizeof(AdminpAddInMessage))
        {
         /* Call our Internal Code to do the file Distribution */
            if (error = ProcessRequests(&adminpMsg)) 
                AddInLogMessageText("Error Processing Request.", error);

            AddInSetStatusText("Idle");
        }
    }   /* End of main task loop. */

eknori:
uff, schwere geburt ... Wer lesen kann ist klar im Vorteil:


--- Zitat ---AdminP requires the document and its fields to be signed
--- Ende Zitat ---

Wenn man natürlich nur die Felder signiert, geht das nicht  ::) :-[

eknori:
Und wieder ein Stück weiter:

Ich kann nun:

- einen AdministrationsRequest in der admin4.nsf erstellen ( manuell )
- Addin auf dem Domino als Erweiterung des AdminP Task starten
- AdminP den Request an die Erweiterung übergeben lassen
- das Gruppendokument in der names.nsf finden
- die zu löschenden Personen aus dem AdminP Request auslesen

was noch fehlt ist

- die zu löschenden Personen aus der Gruppe im names.nsf löschen
- das geänderte Gruppendoc speichern
- eine kleine LS Klasse schreiben mit der Methode
   
  noteID$ = notesAdministrationProcessEx.RemoveGroupMembers( group$ , members )

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln