• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь. Мобильный клиент для IOS находится в itunes по этой ссылке

Работа с Ftp из Lotus'a

seoman2

Lotus team
17.02.2010
476
1
#1
Вопрос. На одном из серваков некорректно работает класс NotesFTPSession с библиотеки
Для просмотра контента необходимо: Войти или зарегистрироваться
в одном из агентов. На трех других серваках - всё ок.
На фтп лежат файлы
1121018.xml
2223344.xml
1122334455.xml
Код:
    Dim objFTP As NotesFTPSession
    Set objFTP=New NotesFTPSession
    With objFTP
   .Connect ftpIP, ftpLogin, ftpPass, 0
    Dim x As Variant
    x = .dir("папка")
Так вот, в массив x попадают обрезанные значения имен файлов:
018.xml
344.xml
334455.xml

Куда копать? В чем может быть проблема?

Провел эксперимент:
Windows 2003 + Domino 9.0.1 - не обрезает имена файлов.
Windows 2008 + Domino 9.0.1 - обрезает имена файлов
 
Последнее редактирование:

savl

Lotus team
28.10.2011
2 139
105
#2
@seoman2
в библиотеке, функция dir, делайте дебаг.
Вам нужно смотреть как заполняется структура pData - это через winApi
Конкретно Вас должно интересовать: pData.cFileName
+ можете перейти на java
 

Domino-Designer

Людям надо поморгать!
Lotus team
06.12.2011
489
158
#3
@seoman2, В функцию Dir добавь
Код:
            ' initialize array and plug in first element
            nCt%=0
            Redim retArray(nCt%)
        ==> Print nCt%, pData.cFileName
            retArray(nCt%) = Left(pData.cFileName, Instr(1, pData.cFileName, String(1, 0)) - 1)
Код:
            ' find all files in the current directory and place their names into an array
            Do While InternetFindNextFile(hFind&, pData) <> 0
                nCt%=nCt%+1
                Redim Preserve retArray(nCt%)   
            ==> Print nCt%, pData.cFileName        
                retArray(nCt%) = Left(pData.cFileName, Instr(1, pData.cFileName, String(1, 0)) - 1)
                pData.cFileName = String$(MAX_PATH, 0)       
            Loop
Будут уже обрезанные имена?

И еще:
1 в твоем примере именно так обрезается? (т.е. впереди идущие символы уходят)
2 при запуске прям начиная с первого файла режется?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 696
309
#7
Куда копать? В чем может быть проблема?
очевидный ответ
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.
нет винды - нет проблем ;)
зачем использовать библиотеку из состава винды, не понимая - "как с этим жить" ?
последнее время, у любителей винды какое-то обострение...
сначала используют без понимания - получают граблями в нос, жалуются на форуме
этот раздел не относится к решениям проблем пользователей виндовс, задавайте вопросы на профильном форме
ни к LDN ни к LotusSript этот вопрос отношения не имеет

решение можно искать в другой плоскости (использовать java или нативный клиент ftp), но как я уже убедился (по общению "здесь") - и @seoman2 и @maliy к подобным решениям "не готовы" (относятся негативно)
а икать ответ на непрофильную тему - неконструктивно
 

garrick

Lotus team
26.10.2009
911
62
#12
все бы хорошо - но ссылка
Для просмотра контента необходимо: Войти или зарегистрироваться
- не работает
У меня открывается. Если у вас проблема с этим сайтом, посмотрите здесь
Для просмотра контента необходимо: Войти или зарегистрироваться
Для просмотра контента необходимо: Войти или зарегистрироваться

А как можно еще лотус скриптом, кроме как "
Для просмотра контента необходимо: Войти или зарегистрироваться
" получить файлы с фтп в винде?
Использовать внешнюю программу FTP Client, которая "управляется" с командной строки. В Windows вроде была такая, так и называлась ftp.exe, можно управлять ей через Shell или подготовить с помощью LS bat/cmd файл и запустить его.
очевидный ответ
нет винды - нет проблем ;)
зачем использовать библиотеку из состава винды, не понимая - "как с этим жить" ?
последнее время, у любителей винды какое-то обострение...
сначала используют без понимания - получают граблями в нос, жалуются на форуме...
А ещё эти извращенцы ставят Excel на сервере и запускают его через OLE :)
 
Последнее редактирование:

maliy

Well-known member
20.03.2007
168
2
#13
NotesFTP:
Было:
Код:
' Win32 API struct for extracting file info
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As Currency
    ftLastAccessTime As Currency
    ftLastWriteTime As Currency
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type
Стало:
Код:
Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type
' Win32 API struct for extracting file info
Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As Long
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type
=не обрезает имена файлов на 2003, 2008 windows
 
Симпатии: Понравилось seoman2

garrick

Lotus team
26.10.2009
911
62
#16
А лотусскрипт будет ждать окончания работы внешней программы - FTP клиента?
Через Shell не будет. Если нужно ожидание, то надо запускать процесс через WinAPI. Или, например, в цикле проверять наличие полученного файла. Или проще и правильней написать на Java.
 
17.02.2010
476
1
#18
на одном из серверов при обращении к библиотеке NotesFTP
выдается ошибка
LS2J Error: Illegal signature

Как устранить - не понимаю ((
 
Вверх Снизу