Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: buzzy666 am 19.02.13 - 12:08:31

Titel: LS & FTP
Beitrag von: buzzy666 am 19.02.13 - 12:08:31
Hi zusammen,
ich habe ein Problem mit dem Übertrag einer Datei via LS in ein FTP-Verzeichnis. Bei uns in der Entwicklungsumgebung klappt (logischerweise) alles, in der Praxisumgebung leider nicht.
Und zwar habe ich einen Agenten, der zeitgesteuert läuft. Der rumpelt über bestimmte Dokumente und liest dort das Zielverzeichnis aus, generiert eine HTML-Datei, speichert diese lokal ab und überträgt sie dann via FTP (ich verwende da die Funktion FTPPutFile der WinInet.dll).
Besser gesagt: *soll* die übertragen, weil die lokale Datei zwar erzeugt wird, aber nicht übertragen.

Erzeugt wird sie durch folgenden Code:

Dim fileName As String
fileName = "newsletter.html"      
Dim fileNum As Integer
fileNum% = FreeFile()
Open fileName For Output As fileNum%   
Print #fileNum%, inhalt      
Close fileNum


Die Variable "fileName" wird gleich im Anschluß an die PutFile-Funktion übergeben (enthält zu dem Zeitpunkt "newsletter.html"), aber Domino scheint damit nix anfangen zu können.

Hat jemand nen Tipp, woran das liegen könnte?

Grüße,
Buzzy
Titel: Re: LS & FTP
Beitrag von: Peter Klett am 19.02.13 - 12:27:50
Schön, dass Du uns nur den Teil des Codes zeigst, der funktioniert ...

Befindet sich die WinInet.dll auf dem Server?

Falls ja, welche Ausführungsrechte hat der Agent?

Gibt es irgendwelche Fehlermeldungen?

Reicht dem FTPPutFile ein Dateiname ohne Pfadangabe aus?
Titel: Re: LS & FTP
Beitrag von: Thomas Schulte am 19.02.13 - 13:07:38
Hmm, Ohne winInet Aufrufe ...
http://www.nsftools.com/tips/NotesTips.htm Such da mal nach FTP.
Titel: Re: LS & FTP
Beitrag von: buzzy666 am 19.02.13 - 14:05:20
Schön, dass Du uns nur den Teil des Codes zeigst, der funktioniert ...

Befindet sich die WinInet.dll auf dem Server?

Falls ja, welche Ausführungsrechte hat der Agent?

Gibt es irgendwelche Fehlermeldungen?

Reicht dem FTPPutFile ein Dateiname ohne Pfadangabe aus?

Hi,
der Aufruf, der nicht funktioniert (ohne Fehlermeldung) sieht so aus:

erg = ftp.PutFile(fileName, Me.m_document.Getitemvalue("FTPFolder")(0) + "/" + fileName, FTP_TRANSFER_TYPE_ASCII)

wobei "ftp" die Instanz einer Klasse aus einer anderen Bib ist, in der die FTP-Funktionalität abgebildet wurde.
Der dortige Aufruf der DLL-Funktion schaut so aus:

bRet = FtpPutFile(mlConnection, LocalFileAndPath, ServerFileAndPath, TransferType, 0)

Die Ausführungsrechte stehen auf "1".

Die Pfadangaben haben lokal (also: auf unserem Server) immer funktioniert, beim Kunden jedoch nicht. Ob die DLL dort vorhanden ist, bringe ich gerade in Erfahrung.

Grüße,
Buzzy

Titel: Re: LS & FTP
Beitrag von: Thomas Schulte am 19.02.13 - 14:34:46
Lass mich raten. Ihr nutzt das hier ...

http://www.bananahome.com/ldd/sandbox.nsf/ByDate/9e752a60b6f902c7852568ef006b4ad1?OpenDocument

Ihr wisst schon, das das 32 Bit Code ist ...

"As the NotesFTPSession Class makes calls to the Win32 Internet function library (wininet.dll), this script library can only be used on the Win32 platform. "

Und da würde ich mal als allererstes nachschauen.

Die Ganzen Strukturen und Functions die in dieser Bibliothek deklariert werden sind nämlich all auf die WIN32 Internet API gemünzt.
Titel: Re: LS & FTP
Beitrag von: buzzy666 am 20.02.13 - 09:10:46
Moing,

also woher die Bib, die ich verwende, kommt kann ich nicht sagen, weil ich mir die aus einer anderen unserer Anwendungen geklaut habe - sagen wir's mal so: wir verwenden auch die wininet.dll - die Aufrufe ihrer Funktionen schauen ähnlich aus, obwohl "unsere" Funktionen (in der Bib) etwas anders auscodiert sind.

Aber ich glaube, daran könnte es liegen! Unser Server läuft auf einem 32Bit-Windows, und der wo's nicht geht auf einem 64Bit-Windows.
Was ich aber nicht verstehe - es werden auch Uploads vom Client aus angestoßen - bei mir 64Bit. Und da klappt's ja auch...?

Auf NSFTools hab ich übrigens nichts gefunden :-?

Danke & Gruß,
Buzzy
Titel: Re: LS & FTP
Beitrag von: m3 am 20.02.13 - 09:13:35
Der Notes Client ist immer 32 Bit, der Server aber nicht ...
Titel: Re: LS & FTP
Beitrag von: buzzy666 am 20.02.13 - 10:04:27
Hm, das wäre natürlich eine Erklärung...
Wenn's keine Alternative gibt müsste ich halt probieren, den Upload zusammen mit den anderen Uploads vom Client aus zu triggern *seufz*

Danke & Gruß,
Buzzy
Titel: Re: LS & FTP
Beitrag von: Thomas Schulte am 20.02.13 - 12:38:57
Dann hast du nicht genau genug hingeschaut. Auf der Seite unter dem Link den ich gepostet habe gibt es folgendes:

 LS2J Examples Database
November 19, 2004 (updated December 6)

This is a database with a few agents and script libraries that demonstrate some interesting ways to use the LS2J technology that was introduced in Notes 6. LS2J allows you to call Java classes and methods from LotusScript. The examples in this database include:

    An agent that makes an FTP connection to a server, lists files and directories, and downloads a file. Using LS2J for this type of thing allows you to perform multiplatform FTP client operations (without relying on LotusScript calls to Windows DLLs).

...

unter anderem.
Titel: Re: LS & FTP
Beitrag von: umi am 28.02.13 - 09:44:28
Moin

Lass mich mal raten, euer Produktiv Server läuft unter dem Local System Account ?
Local System darf im Normalfall nicht auf andere Netz-Ressourcen zugreifen.
Läuft evtl. euer Entwicklungsserver unter einem speziellen Account?
Titel: Re: LS & FTP
Beitrag von: eknori am 01.05.13 - 07:59:40
SOrry, wenn ich den Thread noch einmal hochhole; ist ja schon ein paar Tage alt.

Hatte gerade im Rahmen einer Kundenanfrage mit genau dem gleichen Problem zu kämpfen. Na, ja, kämpfen ist ein bisschen zu hart ausgedrückt.
Auch bei dem Kunden funktionierte der Code nach einem Upgrade des OS auf 64 Biti nicht mehr.
Ich habe mehrere SPRs gefunden, die auf ein Problem im 8er Codestream im Zusammenspiel mit der wininet.dll hindeuten.

Ich habe ein Testsystem aufgesetzt und den Code getestet.

Ergebnis: es funktioniert sowohl mit einem 8.5.3 Domino 32Bit als auch mit einem 8.5.3 Domino 64 Bit ( scheduled Agent, Start des Domino als Dienst ) auf einem Win 2008 R2 ( 64Bit )

Das einzige Problem war die Firewall; wenn die aktiviert ist, dann läuft der Agent zwar an, kann aber keine Verbindung aufbauen. Bei deaktivierter FW lief alles problemlos. Und damit meine ich nicht nur das verbinden, sondern auch das Wechseln in ein Verzeichnis auf dem FTP und der Download einer Datei.

BTW: Auch auf einem 9er Server ( 64Bit ) lauf Win 2008-R2 äuft der Code
Titel: Re: LS & FTP
Beitrag von: bikerboy am 07.08.13 - 12:22:51
Gut, da der Thread dankenswerter Weise von Ulrich frisch gehalten worden ist.

Bei mir lief der Code letzte Woche. Heute Generalprobe und zack funktionierte der putFile nicht mehr. DANKE Ulrich für den Hinweis mit der Firewall. Saved my Day.

Dafür geb ich doch glatt ein Bier auf dem nächsten Entwicklercamp aus :D
Titel: Re: LS & FTP
Beitrag von: Tim Pistor am 07.08.13 - 13:19:42
Hi Robert, kannst Du mal "Dir" ausprobieren? Da krachts bei mir immer...*

Anm.: Mit 64 bit Win+Domino