Autor Thema: !!! Problem mit Agent  (Gelesen 8682 mal)

Offline MrXYZ

  • Aktives Mitglied
  • ***
  • Beiträge: 100
  • never touch a running system!
!!! Problem mit Agent
« am: 24.01.08 - 16:41:12 »
Hi @ALL,  ???

mal wieder ein kleines Problem. Habe einen Agenten geschrieben, der Attachments aus einer Mail auf einen bestimmten Share lösen soll, danach wird eine auf dem Share befindliche exe-Datei angestartet, die den ZIP entpackt, auf Validatät überprüft und die entpackten Dateien in einen anderen Share schiebt.

Lokal funktioniert der Agent einwandfrei. Nur nicht auf dem Server ! Konsolenmeldung Server: object variable not set... ich arbeite auf einem Server, auf dem ich komplette Execution Rechte für die Skripte habe

   On Error Goto ErrorHandler   
   
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim view As NotesView
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   
   
   
   Dim rtitem As Variant
   Dim object As NotesEmbeddedObject
   Dim fileCount As Integer
   Dim tempshare, mailinshare As String
   Dim message As String
   
   Dim mail As NotesDocument
   Dim stream As NotesStream
   
   
   '### DEFINE Sharefolders
   tempshare = "\\server1\mailin$\TEMP\"
   mailinshare = "\\server1\mailin$\Anonymous\"
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("($Inbox)")
   
   fileCount = 0   
   
   Set doc = view.GetFirstDocument
   
   
   
   While Not(doc Is Nothing)
      
      Set rtitem = doc.GetFirstItem( "Body" )
      
      '### Check: Attachment available ?
      
      If doc.HasEmbedded = True Then 'Loop 1
         
         If ( rtitem.Type = RICHTEXT ) Then 'Loop 2
            
         '### Here we go ...
            
            Forall o In rtitem.EmbeddedObjects
               
               If ( o.Type = EMBED_ATTACHMENT ) Then 'Loop 3
                  fileCount = fileCount + 1
                  '# Extract to temporary Directory
                  Print o.Name
                  Call o.ExtractFile ( tempshare & o.Name )
                  
                  
                  '### Start Extraction of files and check
                  Dim result As Integer
                  result = Shell(tempshare & "zipchecka.exe " &  o.Name, 1)
                  pathname = tempshare & "validation-" & Left$(o.Name,Len(o.Name)-4) & ".txt"
                  Sleep 20
                  Call o.Remove
                  Call doc.Save( True, True )
                  'Move processed document to processedfolder
                  'Call doc.Remove(True)
                  
               End If 'End Loop 3
               
            End Forall
            
         Else 'Else Loop 2
            
            
            Print "No attachments in Document"
            
            doc.subject = doc.subject(0) + "No attachments in document"
            Call doc.Save( True, True )
            'Move processed document to processedfolder
            'Call doc.Remove(True)
            Goto NextDoc
            
         End If 'End Loop 2
         
      'Mail generieren mit Informationen
         'Sleep 10
         
         Set stream = session.CreateStream
         
         'Stream defined in Loop for detaching files !
         'pathname = tempshare & "\validation-" & o.Name & ".txt"
         
         If Not stream.Open(pathname, "ASCII") Then
            Messagebox pathname ,, "Open failed"
            Exit Sub
         End If
         
         If stream.Bytes = 0 Then
            
            Messagebox pathname,, "File has no content"
            Exit Sub
            
         End If
         
         'Send mail with information of stream to sender of the mail
         
         Set mail = New NotesDocument(db)
         Call mail.ReplaceItemValue("Form", "Memo")
         Call mail.ReplaceItemValue("Subject", "Notes2XXX - Information Mail")
         mail.sendto = doc.Principal(0)
         Call mail.ReplaceItemValue("Body", stream.ReadText())
         Call stream.Close
         Delete stream
         Call mail.Send(False)
         pathname =""
         Delete mail
         
         
         
      End If
      
NextDoc:
      
      
      'Call doc.Remove(False)
      Set doc = view.GetNextDocument(doc)
      
      
   Wend
   
   
   '### Cleanup Documents
   
ErrorHandler:
   
   routine$ = "Check Attachment Agent - Notes2XXX"
   mailError routine$, Err, Erl, Error
   Exit Sub
   

Glombi

  • Gast
Re: !!! Problem mit Agent
« Antwort #1 am: 24.01.08 - 16:50:29 »
Du solltest mal nach
Print o.Name
                  Call o.ExtractFile ( tempshare & o.Name )

ein
Print "Nach ExtractFile"
einbauen und in der log.nsf nachsehen, ob das dort steht. Falls nicht liegt es vermutlich an den Verzeichnissen
tempshare = "\\server1\mailin$\TEMP\"
mailinshare = "\\server1\mailin$\Anonymous\"

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: !!! Problem mit Agent
« Antwort #2 am: 24.01.08 - 16:55:11 »
Die Markierung der Zeile, die der ErrorHandler angibt, wäre auch nicht schlecht.

Bernhard

Offline MrXYZ

  • Aktives Mitglied
  • ***
  • Beiträge: 100
  • never touch a running system!
Re: !!! Problem mit Agent
« Antwort #3 am: 24.01.08 - 17:00:20 »
Das Problem ist, dass der ErrorHandler auch nicht läuft  >:(

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: !!! Problem mit Agent
« Antwort #4 am: 24.01.08 - 17:11:03 »
die Sache ist ganz einfach: Vermutlich läuft der Server (wie 90% aller Domino- Server) als Dienst.
Und ein Dienst läuft mit dem Systemkonto, das keine Netzwerk- Credentials besitzt.

Mit Domino als Dienst auf ein Netzwerkshare zuzugreifen ist damit quasi unmöglich.

Es gibt diverse Workarounds, die aber alle am Server- Setup eingreifen, nicht im Code.

Die wären (u.a):
- Server nicht als Dienst laufen lassen (blöd, wenn man sich ausloggt dann stoppt der Server)
- Server als Dienst mit Benutzernamen laufen lassen (blöd, weil man dann keine Server- Konsole mehr sieht)
- Share einrichten ganz ohne Authentifizierung (blöd wegen Sicherheit)
...

Hier im Forum wurde das schon ein paar mal diskutiert, vielleicht findest Du eine andere Lösung...

Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline MrXYZ

  • Aktives Mitglied
  • ***
  • Beiträge: 100
  • never touch a running system!
Re: !!! Problem mit Agent
« Antwort #5 am: 24.01.08 - 17:18:05 »
Wir haben zum Testen erst einmal die unsicherste Methode gewählt und das ist der offene Share  :(

Offline guesswho

  • Senior Mitglied
  • ****
  • Beiträge: 291
Re: !!! Problem mit Agent
« Antwort #6 am: 24.01.08 - 18:26:57 »
geht imho generell nicht über einen UNC-Namen, wenn Domino als Dienst läuft. Auch wenn der Share für alle bearbeitbar ist. Wenn dann musst du (bereits vor Anmeldung) den Share als Laufwerk zuordnen. Hab ich so schon realisiert. Mehr kann ich da im Moment nicht sagen, weil ich nicht sicher bin ob ich grad die Citrix oder die W2K3-Brille aufhab und die damalige Umgebung grad nicht zur Hand hab.

Kann im Bedarfsfall morgen mal in der Umgebung nachschauen, wie ich das damals realisiert habe....

Jo
5 Server 9.x auf W2K3/W2K8
ca. 550 Clients: 9.x auf Win7
Notes Traveler
iQ.Suite
BCC Charon 4
panagenda Marvel Client
BES 10/12 und viele Blackberrys
paar iPad und iPhones
Teamstudio

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 668
  • Geschlecht: Männlich
Re: !!! Problem mit Agent
« Antwort #7 am: 24.01.08 - 23:56:41 »

    Dim ws As New NotesUIWorkspace
      

UI Klassen gehen für Hintergrundagenten nicht, manuell laufen die natürlich schon. Rausnehmen und erneut testen.



Und ein Dienst läuft mit dem Systemkonto, das keine Netzwerk- Credentials besitzt.

Mit Domino als Dienst auf ein Netzwerkshare zuzugreifen ist damit quasi unmöglich.


Das ist so quasi unkorrekt, auch wenn kein Kennwort existiert heißt das nicht, daß keine Credentials da sind.

Nur gibt es natürlich keinen Benutzernamen den man in der Share einträgt sondern man trägt direkt das Systemkonto des anderen Servers ein - das ist simpel deren Maschinenname statt eines Anmeldebenutzers.

Das praktiziere ich schon seit Jahren in bestimmten Kombinationen mit Windows und Exchangeservern, wo Dienste auf bestimmte Dinge zugreifen müssen - und es funktioniert ^^.

HTH Carsten

Offline MrXYZ

  • Aktives Mitglied
  • ***
  • Beiträge: 100
  • never touch a running system!
Re: !!! Problem mit Agent
« Antwort #8 am: 25.01.08 - 09:20:26 »

    Dim ws As New NotesUIWorkspace

Genau das war es ... so ein shit. Habe die Klasse noch nicht mal benutzt, aber damit war der komplette Agent blockiert. Danke für den Hinweis !!  ;D

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: !!! Problem mit Agent
« Antwort #9 am: 25.01.08 - 10:45:17 »
@Carsten: Danek für die wertvolle Info. Da hat sich wohl eine "düstere Legende" gebildet. Bisher hat mir in dem Punkt noch niemand widersprochen.

Ich werde mir das gut merken.

Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: !!! Problem mit Agent
« Antwort #10 am: 26.01.08 - 18:32:05 »
Dank an Carsten, die Auskunft sorgt für die nötige Klarheit. Ich war mit meiner bisherigen Meinung an der Stelle nämlich ganz bei Thorsten gewesen. Und sehe mit einem Mal: das ist nur die halbe Wahrheit.

Wo wir aber bei den "düsteren Legenden" sind, vielleicht noch eine Frage von mir zu ein wenig Aufklärung, was für den Agentencode oben nicht unwichtig ist.

Bisher denke ich, daß die EMBEDDEDOBJECTS des Notes-Dokuments nur diejenigen sind, die NICHT in einem RT-Item hängen, während die EMBEDDEDOBJECTS eines RT-Items nur die sind, die in diesem RTITEM hängen.

Im Mailing heißt das typischerweise: Eingehende Faxe oder Mailgateways hängen die Attachments nicht an ein Feld, sondern an das Dokument (stehen ganz am Ende des Dokuments unter dem Strich,

Mails von Notes-Anwendern, die nur von Notes-Servern geroutet werden, enthalten die Attachments typischerweise im BODY-Feld.

Sicher ist, daß der obige Agent die ersteren Anhänge gar nicht erfassen kann, da er nur das BODY-Feld betrachtet. Fraglich ist für mich aber, ob die Eigenschaft doc.HasEmbedded zum gewünschten Ergebnis führt, wenn nur das Body-Feld einen Anhang hat.

Einmal ganz abgesehen von all den vielen anderen Unzulänglichkeiten des Agenten (mit Sleep 20 kann man pro Stunde gerade einmal 180 Anhänge wegzippen - und wenn die maximale Agentenlaufzeit auf dem Server auf 30 Minuten festgesetzt ist, ist vermutlich zwischen 87 und 89 Feierabend durch Abbruch). Was passiert, wenn in einer Mail-Sequenz der gleiche Anhang - vielleicht in modifizierter Form - noch einmal auftaucht ? Dafür ist keine Vorkehrung getroffen. Die Anwender werden sich freuen, wenn nicht die gültige, sondern nur irgendeine Dateiversion gesichert vorliegt. Aber das nur am Rande.

Interessiert bin ich an der Erhellung der "düsteren Finsternis" rund um die Eigenschaft des DOC.HASEMBEDDED. Wer klärt mich auf ?

Danke im Voraus

Norbert
Situs vilate in isse tabernit.

Stefan1971

  • Gast
Re: !!! Problem mit Agent
« Antwort #11 am: 26.01.08 - 20:40:12 »
Hallo zusammen,

wenn ich mich noch recht erinnere, deklariert die Zeile

Dim tempshare, mailinshare As String

eine Variable 'tempshare' vom Typ Variant und eine namens 'mailinshare' als String.
Ich weiss nicht, ob das hier so beabsichtigt ist...

Wäre nicht ein

Dim tempshare as String
Dim mailinshare as String

treffender?

Viele Grüße, Stefan

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: !!! Problem mit Agent
« Antwort #12 am: 26.01.08 - 21:05:38 »
Deine Erinnerung täuscht Dich nicht - die von Dir zitierte Deklaration ist mehr als unsauber, Deine Korrektur ist korrekt.

Nur mit dem Problem hat es nichts zu tun.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz