Autor Thema: NotesRegistration.SwitchToID und ECL-Alerts - schon fast offtoppic  (Gelesen 5239 mal)

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Hi,

Hier habe ich noch den zweiten Teil meines Migrationsprojekts, der mich an einer "Kleinigkeit" zur Verzweiflung bringt.

Wir haben einen Haufen Mail-DBs in denen persönlich verschlüsselte Mails entschlüsselt werden müssen. (Zum glück haben wird auch die UserIds und Passwörter und die entschlüsselungsfunktion ist auch wunderbar funktional!)

Das ganze läuft über eine Client-"Aktion" (Notes 6.54) ab und funktioniert auch soweit!
Hier ein relevanter Code-Auschnitt:
Code
[...]
Set Doc = Coll.GetFirstDocument
while not doc is nothing
	' id-datei und passwort aus den anderen dbs holen
	' wechselt auch zum "Admin-User" der auch in die ID-DB darf (die hab ich auch schon lokal und "offen" kopiert - aber bitte nicht verraten!)
	Call GetUserIDAndPWD(Doc.Shortname(0), IDFileName, PWD ) 

	' neue session um sie zu "trennen" - aber nicht relevant....        
	Set S_user = New NotesSession
	Set reg = New NotesRegistration
	reg.RegistrationServer = Doc.MailServer(0)
	Call reg.SwitchToID(	IDFileName , PWD	) 
	'[...]
	Set DBMail = S_user.GetDatabase(Doc.MailServer(0), Doc.MailFile(0)) 
	'[...]hier dann der decrypt mit u.a.
        item.encrypted = false 
	' und
        docMail.save()
        '[...]

        'nächstes doc:
	Set Doc = Coll.GetNextDocument(Doc)
Wend

' fertig

Enziges Manko an der ganzen Sache ist noch:
da die hunderte User eben nicht auf dem Client angemeldet waren, haben sie keine ECL-Konfig und erhalten die "Notes-Standard" ECL. (defautl, unsigned ... Lotus Notes Template Development...)
-> Somit kommt (interessanterweise sporadisch, bei unterschiedlichen "Personen") immerwieder eine ECL-Meldung, ob man das will, (-> 2x nach unten + ok)

Wie bekomme ich die ECL-Meldung für den Client zumindest vorübergehend los?
(ja ich habe volle ECL-änderungsrechte auf meinem Client - ich bin "root" ich darf das....)

- notes.ini: 
  ECLSetup=0 / =1 /  =2
  nützt nichts (wirkt wohl nur bei der Anmeldung)
- @RefreshECL(server, "names.nsf","")
  als evaluate({@RefreshECL(} & doc.MailServer(0) & {:"names.nsf";"")})
  als auch in agent.run() geht nicht.
  selbst Workspace.Dialogbox("(RefreshECL-ButtonForm)"...)
  mit einem Button: @RefreshECL(...) hat nicht den gewünschten Effekt  (wäre immer nur 1xKlick)
  (ehrlich gesagt hab ich auch noch nicht rausgefunden, bei welchem User die dann landet)

Muss ich letztendlich alle User zuerst auf meinem Client "anmelden" (damit die ECL vom Server kommen kann) oder
doch ca. 800x "durchtickern" (zum Glück sinds keine tausende)?

Weiss jemand noch eine Möglichkeit ?

Grüsse, und ich bin dankbar für jeden Hinweis,  :)

Pete(r)

[size=8pt]nachtrag - hab den Titel geändert[/size]
« Letzte Änderung: 14.12.07 - 00:45:26 von pete_bla »
pete(r)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
... die Datenbanken entsprechend signieren sollte auch helfen...

Toni
Grüßle Toni :)

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Hi Toni,

leider nein -
ausser ich habe die echte "Lotus Notes Template Development/Lotus Notes" ID - aber die habe ich leider nicht - ....    :-X)
In diesem Fall, ohne ECL erhalte ich immer die "Default" wie wenn ein Client neu aufgesetzt (und nie mit einem Server verbunde) wurde.

Danke, Pete(r)
pete(r)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
... ist schon ne Weile her - will mal sehen...

Toni
Grüßle Toni :)

Glombi

  • Gast
Eine Idee: Du machst eine Org.-Richtline für die ECL und definierst, dass die immer aktualisiert werden soll. In die Admin ECL trägst Du den User ein, der das Script signiert/ausführt.
Dann könnte es sein, dass bei
Call reg.SwitchToID(   IDFileName , PWD   )
zuerst die ECL neu gezogen wird, wobe ich da meine Zweifel habe.

Andreas

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Hi Andreas,

Danke für den Vorschlag -
genau so ist es in der AdminECL eingetragen -
aber genau daran haptert es ja auch - sie wird nicht (rechtzeitig) gezogen.

Gibts eine Scritpvariante für
@RefreshECL (eval geht nicht)
oder
ECLSetup=0 / =1 /  =2
 - NotesSession.SetEnvironmentVar("ECLSetup","0",true) teste ich gleich noch (mit wenig Hoffnung)

Danke, Pete(r)
(Versprochen: wenn ich eine Lösung finde poste ich die hier!)
pete(r)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
... eventuell benötigt man den Refresh vor dem Ab- und Anmelden für den tatsächlichen Refresh im Cache...

Toni

edit => Rechtschreibpfuhler
« Letzte Änderung: 06.12.07 - 14:26:11 von ata »
Grüßle Toni :)

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Hi Toni,

Danke für die Mühe,
aber genau das "an und Abmelden" beim switchToID ist nicht 1:1 das,
was mit einem klassischen "ID-Wechsel" oder einem Location-Wechsel geschieht.
-> Ich kam schon auf die Idee, 200 Arbeitsumgebungen/Locations mit den IDs einzurichten (per script) und für die dann entweder manuell den RefresECL oder über ECLSetup die ECL zu holen.
Problem: -> ich muss dann das Passwort eingeben - wären nur ~8 Zeichen + 2 Klicks
....
Vielleicht klappst ja auch wenn ich die Ganze "Schose" von ausen per VB ansteuere...  (aber auch nicht das gelbe vom Ei - wo war nochmal das vb-express....)

Grüsse, Pete(r)

PS: hab gerade erfahren, dass eventuell die User "für so eine Problem" verantwortlich gemacht werden könnten,
sprich sie sollten sich dann selbst darum kümmern, ihre verschlüsselten Mails zu entschlüssel
natürlich mit Funktionsunterstützung
=>Mail: "Sie habnen verschlüsselte Dokumente" bitte 1x Knopf drücken .
- zumal es ja auch gegen das Prinzip "Geheim" verstösst, dass das jemand  anderes - und wenn es nur ein Script ist - macht!
Das würde bedeuten, dass es hier vergebliche Mühe mit dem IDWechseln war. (zumindest für die hier beteiligten)
- Danke auf jeden Fall an Toni & Andreas, und alle die sich einen Kopf darum gemacht haben!  :)
- vielleicht bringt es ja noch in Zukunft jemandem etwas produktives!

pete(r)

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
So noch zum Abschluss was aus der KB hierzu (hätte ich schon früher posten sollen)
#1193777 After Switching to a New UserID via LotusScript Unexpected ECL Alerts Occur

#1091591 Where are Notes client Execution Control List (ECL) settings stored

Es ist für mich zwar vom Tisch (vorerst), aber letztendlich ist das Problem nicht gelöst.

Danke Nochmals!
Pete(r)
pete(r)

Glombi

  • Gast
Ich hatte mal versurcht Notes zu überlisten und habe einen User namens "Lotus Notes Template Development/Lotus Notes" registriert.

Aber Notes merkt, dass es der "falsche" ist. Offenbar wird nicht nur der Name intern hardcodiert gespeichert, sondern auch der öffentliche Schlüssel.

Andreas

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Hi Andreas,

Auf die Idee sind wir auch gekommen ....
die echte "Lotus Notes Template Development/Lotus Notes" ID - aber die habe ich leider nicht - ....    :-X)
Zum glück geht das auch nicht!  :-P

(aber gabes aber nicht irgendwann bei 4.5~5 so eine meldung, das der Lotus Notes-Cert nicht passen würde?)

Pete(r)

pete(r)

Glombi

  • Gast
Zitat
In Notes 6.x.x, the ECL is stored in the local Names.NSF file. This permits the ECL to roam when the Roaming User roams to other workstations. Names.NSF is one of the files that roams. Desktop6.NDK does not roam.
Na, das ist doch eine Herausforderung an die Hacker hier  ;D

Andreas

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
ja,

aber:
Zitat von: KB
However, when the ID is accessed for the first time via the backend it is not seen as a new session, and therefore, the ECL is not refreshed. In LotusScript this behavior occurs when using the SwitchToID method (of the NotesRegistrationClass), and this may cause problems with ECL alerts appearing as the rest of the LotusScript code is executed.

Depending on the version used, the default ECL will include the following:

      Lotus Notes Template Development/Lotus Notes
      BT Mail and Calendar Migration Tools/Lotus Notes Companion Products
      Sametime Development/Lotus Notes Companion Products
      Lotus Fax Development/Lotus Notes Companion Products
      Domino Unified Communications Services/Lotus Notes Companion Products

Note: The default ECL is hardcoded into the Notes Client and cannot be modified.

nur was meinen die mit
Zitat von: KB
Workaround:
Code the LotusScript so that it opens the user's home server Domino Directory.
So alles mit:
Code
NotesSession.OpenDatabase(Mailserver,"names.nsf")
forall db in NotesSession.AddressBooks ...
DBMail.openMail()
... hab ich auch versucht!
- ohne gewünschten erfolg!
? muss ich da wohl was aus dem "Names.nsf" sauge? - und wenn ja was ? und wenn was wohin?
womöglich noch:
Code
	Set DBDIr = NotesSession.GetDbDirectory
(hab ich nicht getestet - da für mich zu abwägig!)

Pete(r)
pete(r)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Mit "open" ist hier ggf. das Frontend gemeint. Aber das ist nur ein Schuss ins Blaue, Pete.

Bernhard

Glombi

  • Gast
Die meinen garantiert das:

dim uidb as NotesUIDatabase
set uidb = ws.OpenDatabase( Mailserver,"names.nsf" )
call uidb.Close


oder falls das set... nicht geht:
dim uidb as NotesUIDatabase
call ws.OpenDatabase( Mailserver,"names.nsf" )
set uidb = ws.CurrentDatabase
call uidb.Close


und das alles nach
Set DBMail =...
Andreas

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Hi,

schon ein paar Tage her, hatte leider noch andere Baustellen, aber versprochen mich zu melden.
(Die Geschichte ist ja wie gesagt für mich vom Tisch,
die User sind mit ihrem Button glücklich und freuen sich wohl auf die tollen alternativen Mail-Systeme, die es ausser Notes auch noch geben soll, weil die so schön bunt sind und eine vertikale Vorschau haben ....  - werde nie erfahren ob sie damit glücklich(er) werden)  ::)


set uidb = ws.OpenDatabase( Mailserver,"names.nsf" )
gibts leider nicht  :( schön wäre es ;D

und
call ws.OpenDatabase( Mailserver,"names.nsf" )
set uidb = ws.CurrentDatabase
call uidb.Close
dreht meinem Agenten leider den Saft ab....  :P

Selbst ein WS.Dialogbox mit "OpenDatabase" im Agenten hat keinen Erfolg gebracht,
und jeglicher sonst "angeworfene" ECL-Refresh war, wie es aussieht nicht im context der gewechselten ID, sonder der des Users, der den Agenten startet. (NotesSession.UserName und NotesSession.EffectiveUsername geben immer die ID des Startenden Users aus.)

was ist da dann mit dem KB
Zitat von: KB
however, it was found that Notes was working as designed.
als as designed gemeint?
Zitat von: desinger7 help
NotesRegistration class 

Represents the creation or administration of an ID file.
Note  This class is new with Release 4.6.
Containment
Contained by: NotesSession
[...]
Usage
The properties are intended to be set before calling the methods. The usage notes for the properties and methods provide the necessary detail.
und
Zitat von: desinger7 help
SwitchToID method 

Switches to a different ID file.
Defined in
NotesRegistration
[...]
Usage
This method works only on a client.
Naja, wohl nur um die ID zu erneuern & co, aber ob da nicht auch irgendwelche ECL-Meldungen aufplatzen?

Interessanterweise funktioniert aber der Decrypt !
- er hat wohl die ID, und kann die Encryption-Keys verwenden
aber es ist eben kein "Switch" wie wenn man die ID wechselt!

Eventuell ist das Konzept mit dem "Agenten auf gewählte Personen" mist,
aber selbst ein SwitchToID und dann agent.Run() für die "einzelnen user-Agenten" hat ja nicht so funktioniert ....


So ganz habe ich das mit dem SwitchToID wohl noch nicht in mein Hirn bekommen  O0 

Aber endlich verstehe ich (als Aushilfsentwickler und Teilzeitadmin) die ECL-Thematik etwas besser und aus mir wird vielleicht doch noch was...


Grüsse, Pete(r)
pete(r)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz