• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Работа с FTP из Lotus

seoman2

Green Team
17.02.2010
503
1
BIT
41
Вопрос. На одном из серваков некорректно работает класс 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 597
310
BIT
177
@seoman2
в библиотеке, функция dir, делайте дебаг.
Вам нужно смотреть как заполняется структура pData - это через winApi
Конкретно Вас должно интересовать: pData.cFileName
+ можете перейти на java
 

Domino-Designer

Людям надо поморгать!
Lotus Team
06.12.2011
616
223
BIT
9
@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 при запуске прям начиная с первого файла режется?
 

Domino-Designer

Людям надо поморгать!
Lotus Team
06.12.2011
616
223
BIT
9
Изменив MAX_PATH с 260 на 1024 изменит результат?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
Куда копать? В чем может быть проблема?
очевидный ответ
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 и Domino-Designer

maliy

Green Team
20.03.2007
180
2
BIT
42
все бы хорошо - но ссылка - не работает
 

seoman2

Green Team
17.02.2010
503
1
BIT
41
А как можно еще лотус скриптом, кроме как " " получить файлы с фтп в винде?
 

Domino-Designer

Людям надо поморгать!
Lotus Team
06.12.2011
616
223
BIT
9
@seoman2 Using LotusScript and LS2J, you can access Java classes, giving you a powerful cross-platform extension to LotusScript.
 
  • Нравится
Реакции: seoman2

garrick

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

maliy

Green Team
20.03.2007
180
2
BIT
42
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
1 349
151
BIT
176
А лотусскрипт будет ждать окончания работы внешней программы - FTP клиента?
Через Shell не будет. Если нужно ожидание, то надо запускать процесс через WinAPI. Или, например, в цикле проверять наличие полученного файла. Или проще и правильней написать на Java.
 

seoman2

Green Team
17.02.2010
503
1
BIT
41
на одном из серверов при обращении к библиотеке NotesFTP
выдается ошибка
LS2J Error: Illegal signature

Как устранить - не понимаю ((
 

seoman2

Green Team
17.02.2010
503
1
BIT
41
В NotesFTPSession
Set objFTP=New NotesFTPSession
objFTP.Connect "ип", "логин", "пароль", 0
что означает параметр 0 ?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!