On-line: PSP, гостей 2. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 61
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 18.08.16 21:52. Заголовок: Проверка файлов на crc/md5 на FTP-сервере?


Если в библиотеке hbtip функции проверки файлов на фтп? Если нету, то как можно средствами харбора организовать такую проверку?
В харборе есть две функции для вычисления контрольных чисел (hb_md5file, hb_crc32) с помощью них я получаю контрольное число файла до передачи на фтп-сервер,
как организовать такую же проверку, но только на фтп-сервере? Сервер поддерживает команды XCRC, XMD5

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]


администратор




Пост N: 5971
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.08.16 22:23. Заголовок: MD5 врядли получишь ..


MD5 врядли получишь , но вот размер можно.
Посему имея размер исходного файла и его размер после заливки на FTP , их можно сравнить.
Впрочем можно самостоятельно дописать нужный класс в Harbour если что.

ЗЫ
Это я про HBTIP писал
Но есть HBCURL и там возможностей больше , может там и есть такое ....

Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1259
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 18.08.16 23:12. Заголовок: Dima пишет: Это я п..


Dima пишет:

 цитата:
Это я про HBTIP писал


У класса TIPClientFTP есть метод UserCommand( cCommand, lPasv, lReadPort, lGetReply )
Eduard пишет:

 цитата:
Сервер поддерживает команды XCRC, XMD5


Можно попробовать

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1260
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 18.08.16 23:27. Заголовок: XCRC "filename&#..



 цитата:
XCRC "filename" SP EP 

Вычисляет контрольную сумму CRC32 файла filename от SP до EP.
SP - Начальная точка в байтах
EP - Конечная точка в байтах

Ответы сервера :

250
501 Bad or missing parameters.
504 Command not implemented for the specified argument.

XMD5 "filename" SP EP

Вычисляет контрольную сумму MD5 файла filename от SP до EP.
SP - Начальная точка в байтах
EP - Конечная точка в байтах

Ответы сервера :

250
501 Bad or missing parameters.
504 Command not implemented for the specified argument.



Это для Gene 6. 250 скорее всего


 цитата:
 
The response is

250 - XCRC XXXXXXXX

Where XXXXXXXX is the computed checksum.





Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 62
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 19.08.16 10:21. Заголовок: Что означают данные ..


Что означают данные параметры в этой функции, что туда надо писать или их можно пропустить (последние 3)?
UserCommand( XCRC File 1 100, lPasv, lReadPort, lGetReply )

Еще по ходу, скажите правильно ли я написал данную функцию ?
METHOD XCRC(cFile, cStart, cEnd) CLASS TIPClientFTP
::inetSendAll( ::SocketCon, "XCRC " + cFile + cStart + cEnd + ::cCRLF )
RETURN ::GetReply()


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1261
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.08.16 12:14. Заголовок: Eduard пишет: Что ..


Eduard пишет:

 цитата:

Что означают данные параметры в этой функции, что туда надо писать или их можно пропустить (последние 3)?
UserCommand( XCRC File 1 100, lPasv, lReadPort, lGetReply )


XCRC File 1 100 - а, что это такое?
Смотрите исходники,
в вашем случае
if (ftp1:UserCommand( 'XCRC "Filename" 0 -1', .f. /* или .t. - х-з что у вас за ftp сервер*/, .f., .t. ) == .t. ) и проверка :cReply сильно упростила бы жизнь.

Зачем вам город городить с добавлением метода XCRC.

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 63
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 19.08.16 19:43. Заголовок: Получаю ошибку на вы..


Получаю ошибку на выходе, 504 Command not implemented for the specified argument.
Если имя файла передаю без ссылки то все ок., я если вот так oFTP:UserCommand( 'XMD5 (cFile[ F_NAME ]) 0 -1', .f. , .f., .t. ) - то получаю на выходе ошибку 504.
Как передать в параметрах имя файла из переменной?
Как результат задачи (код МД5) записать в переменную?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1262
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 19.08.16 20:19. Заголовок: Eduard пишет: Если ..


Eduard пишет:

 цитата:
Если имя файла передаю без ссылки


Какая ссылка? Куда?
Команда на сервер передается в виде строки cCommand.
Строку можно сформировать разными способами, хотя бы так
cCommand := hb_strFormat( 'XMD5 "%s" 0 -1', cFile)
или
cCommand := hb_strFormat( 'XMD5 "%1$s" %2$d %3$d ', cFile, nStart, nEnd)
или
cCommand := a + b + c

Поскольку XMD5 - не стандартная команда, реализация ее зависит от сервера. Т.е. брать имя файла в кавычки или нет, понимает ли сервер, что значит EP = -1 я вам сказать не могу. Потратитьте 5 мин. на тестирование или документацию на сервер почитайте.

Eduard пишет:

 цитата:
Как результат задачи (код МД5) записать в переменную?



Если все отработает нормально, вы в :cReply получите строку что-то вроде "250 - XCRC XXXXXXXX" или
"250 - XMD5 XXXXXXXX".
Как из строки вытащить подстроку XXXXXXXX ? - воспользуйтесь hb_regexSplit( ' ', :cReply )[4] или любым другим доступным вам методом.


Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 5972
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.08.16 21:58. Заголовок: Петр пишет: Это для..


Петр пишет:

 цитата:
Это для Gene 6. 250 скорее всего



Eduard
Так ГЕНА 6.XXX стоит или что другое в качестве FTP сервера ?

Спасибо: 1 
ПрофильЦитата Ответить



Пост N: 64
Зарегистрирован: 02.07.12
ссылка на сообщение  Отправлено: 19.08.16 22:21. Заголовок: Да, G6 FTP Server..


Да, G6 FTP Server Тестовый дома. И на работе тоже.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1263
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 20.08.16 02:13. Заголовок: FOR EACH aF..



 цитата:
         FOR EACH aFile IN oFTP:ListFiles() 
IF aFile:__enumIndex() > 10
? "Skipping the rest..."
EXIT
ENDIF
cCommand := hb_strFormat( 'XMD5 "%1$s" 0 -1 %2$s', aFile[ F_NAME ], tip_CRLF() )
oFTP:UserCommand( cCommand, .t., .f., .t. )
IF "250" $ oFTP:cReply
cMD5 := hb_regexSplit( ' ', oFTP:cReply )[ 2 ]
? aFile[ F_NAME ], "-", cMD5
ENDIF
NEXT




Метод UserCommand автоматом не добавляет перевод строки ( + ::cCRLF ).
Поэтому и сервер результаты возвращает своеобразно (рекомендую посмотреть логи сервера с и без tip_CRLF() ).


Спасибо: 1 
ПрофильЦитата Ответить
администратор




Пост N: 5973
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.08.16 12:26. Заголовок: Петр :sm36: ..


Петр


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 215
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет