|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июн 16, 2004 19:25:36 Valka а ты пробовал вообще ее счем-либо кроме командера? твой сервак почему-то (в код лезть лень) в ответ на команду порт посылает 200 PORT Command successful.,13,10,0... это косяк, и большой, т.к. некоторые клиенты проверяют _окончание ответа_ на 13,10 - а не ищут их в ответе. вот тебе и глюки - кста и стандартный "ftp" из окошек висит при попытке получить директорию, файл не пробовал передавать.... |
|
|
Дата: Июн 19, 2004 13:54:10 · Поправил: Valka Valka а ты пробовал вообще ее счем-либо кроме командера? твой сервак почему-то (в код лезть лень) в ответ на команду порт посылает 200 PORT Command successful.,13,10,0... это косяк, и большой, т.к. некоторые клиенты проверяют _окончание ответа_ на 13,10 - а не ищут их в ответе. вот тебе и глюки - кста и стандартный "ftp" из окошек висит при попытке получить директорию, файл не пробовал передавать.... Было такое, висит иногда, это было с Microsoft Internet Explorer. Кроме командера подходит FlashFXP, и CuteFTP. А насчет команды PORT я посмотрю. Так директорию показывает мала-штоли =) ? ------------------------------------------------- А этот $invoke довольно простой: mov [esi].hThread,$invoke(CreateThread,0,0,offset ClientManager,esi,NORMAL_PRIORITY_CLASS,offset ThreadID) Вроде как супер трудный, но это все превращается в: invoke CreateThread,0,0,offset ClientManager,esi,NORMAL_PRIORITY_CLASS,offset ThreadID mov [esi].hThread,eax Т.Е этот макро выполняет invoke затем вместо того куда вы(ты) поставил этот макро окажется eax |
|
|
Дата: Июн 19, 2004 23:46:47 · Поправил: Mad_C [ValkaТак директорию показывает мала-штоли =) ?] Нифига он ее даж не показывает :))) нет, ну конечно он ее отсылает... но в каком виде! %))) в комментариях к исходнику написано: "Send file list, UNIX style" Вот, что я получаю от твоего сервера: drwxrwxrwx 1 user group 0 Mai 22 14:03 . drwxrwxrwx 1 user group 0 Mai 22 14:03 .. -rwxrwxrwx 1 user group 1883 Jun 07 2001 Changes.txt -rwxrwxrwx 1 user group 2890 Jun 07 2001 Readme_ENG.txt -rwxrwxrwx 1 user group 2489 Jun 07 2001 Readme_RUS.txt -rwxrwxrwx 1 user group 30208 Jun 07 2001 tcp_logger.exe -rwxrwxrwx 1 user group 323 Jan 18 11:44 cnm.txt ........ вот оказывается какой ты!!! стиль UNIX!!! %))) 1. в половине файлов, можно заметить в предпоследнем столбце стоит время создания, а в другой половине год... это как понимать? :))) 2. считается, что длина файла должна быть выровнена по правой стороне, а не как у тебя по левой. 3. следует из пункта 1 - имя файла у тебя в каждой строчке расположено на разной позиции, отсюда вывод - некоторые клиенты тут обломаются - т.к. подсчитывают смещение на имя файла _один раз_ для всей таблицы по первой строчке. ну да ладно, тут конечно сложно говорить кто должен об этом думать сервер или клиент, т.к. стандарта на список директорий нет... но! нужно же придерживаться хотя бы каких-нибудь общих критериев? ;))) |
|
|
Дата: Июн 20, 2004 01:43:34 · Поправил: Valka 1. в половине файлов, можно заметить в предпоследнем столбце стоит время создания, а в другой половине год... это как понимать? :))) Несколько часов назад обнаружел почему: drwxrwxrwx 1 user group 0 Mai 22 14:03 . Не "Mai" а "May" :) 2. считается, что длина файла должна быть выровнена по правой стороне, а не как у тебя по левой. Было лень выдумывать супер сложный алгоритм для этого, ведь total commander правильно показывает, ну вобщемто исправлю. 3. следует из пункта 1 - имя файла у тебя в каждой строчке расположено на разной позиции, отсюда вывод - некоторые клиенты тут обломаются - т.к. подсчитывают смещение на имя файла _один раз_ для всей таблицы по первой строчке. Я тоже так думал, на самом деле этот неправильно написаное слово "Mai", а нада "May" Кстати, сегодня сравнивал Мокрыйсофт Internet Explorer и Total Commander, вот результаты от отладчика(он есть в исходнике): Мокрыйсофт Internet Explorer: buffer = Client connected struct_addr: 00404E66h, host: valka (ftp.asm, 372) buffer = Raw Data, Client -> Server struct_addr: 00404E66h, host: valka, data: USER valka (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00404E66h, host: valka, data: PASS (ftp.asm, 645) buffer = Client disconnected struct_addr: 00404E66h, host: valka (ftp.asm, 657) buffer = Client connected struct_addr: 004055CCh, host: valka (ftp.asm, 372) buffer = Raw Data, Client -> Server struct_addr: 004055CCh, host: valka, data: USER valka (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 004055CCh, host: valka, data: PASS (ftp.asm, 645) buffer = Client disconnected struct_addr: 004055CCh, host: valka (ftp.asm, 657) buffer = Client connected struct_addr: 00405D32h, host: valka (ftp.asm, 372) buffer = Raw Data, Client -> Server struct_addr: 00405D32h, host: valka, data: USER valka (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00405D32h, host: valka, data: PASS padla (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00405D32h, host: valka, data: opts utf8 on (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00405D32h, host: valka, data: syst (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00405D32h, host: valka, data: site help (ftp.asm, 645) buffer = Client connected struct_addr: 00406498h, host: valka (ftp.asm, 372) buffer = Raw Data, Client -> Server struct_addr: 00405D32h, host: valka, data: PWD (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: USER valka (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: PASS padla (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: opts utf8 on (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: syst (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: site help (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: PWD (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: TYPE A (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: PASV (ftp.asm, 645) buffer = Establishing data connection struct_addr: 00406498h, host: valka, type: PASV (ftp.asm, 675) buffer = Data connection established struct_addr: 00406498h, host: valka, type: PASV (ftp.asm, 690) buffer = Sending file list struct_addr: 00406498h, host: valka, mask: *.* (ftp.asm, 895) buffer = File list was sended struct_addr: 00406498h, host: valka (ftp.asm, 990) buffer = Raw Data, Client -> Server struct_addr: 00406498h, host: valka, data: noop (ftp.asm, 645) buffer = Client connected struct_addr: 00406BFEh, host: valka (ftp.asm, 372) buffer = Client disconnected struct_addr: 00406498h, host: valka (ftp.asm, 657) buffer = Raw Data, Client -> Server struct_addr: 00406BFEh, host: valka, data: USER valka (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406BFEh, host: valka, data: PASS padla (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406BFEh, host: valka, data: opts utf8 on (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406BFEh, host: valka, data: PWD (ftp.asm, 645) buffer = Raw Data, Client -> Server struct_addr: 00406BFEh, host: valka, data: CWD /C:\/temp/ (ftp.asm, 645) buffer = Client disconnected struct_addr: 00406BFEh, host: valka (ftp.asm, 657) buffer = Client disconnected struct_addr: 00405D32h, host: valka (ftp.asm, 657) Total Commander: buffer = Client connected struct_addr: 00404EC6h, host: valka (ftp.asm, 375) buffer = Raw Data, Client -> Server struct_addr: 00404EC6h, host: valka, data: USER valka (ftp.asm, 655) buffer = Raw Data, Client -> Server struct_addr: 00404EC6h, host: valka, data: PASS padla (ftp.asm, 655) buffer = Raw Data, Client -> Server struct_addr: 00404EC6h, host: valka, data: SYST (ftp.asm, 655) buffer = Raw Data, Client -> Server struct_addr: 00404EC6h, host: valka, data: FEAT (ftp.asm, 655) buffer = Raw Data, Client -> Server struct_addr: 00404EC6h, host: valka, data: PWD (ftp.asm, 655) buffer = Raw Data, Client -> Server struct_addr: 00404EC6h, host: valka, data: TYPE A (ftp.asm, 655) buffer = Raw Data, Client -> Server struct_addr: 00404EC6h, host: valka, data: PORT 127,0,0,1,5,6 (ftp.asm, 655) buffer = Establishing data connection struct_addr: 00404EC6h, host: valka, type: PORT (ftp.asm, 746) buffer = Data connection established struct_addr: 00404EC6h, host: valka, type: PORT (ftp.asm, 776) buffer = Sending file list struct_addr: 00404EC6h, host: valka, mask: *.* (ftp.asm, 972) buffer = File list was sended struct_addr: 00404EC6h, host: valka (ftp.asm, 1074) |
|
|
Дата: Июн 20, 2004 20:52:07 Не "Mai" а "May" :) Что-то не пойму, каким образом от неправильного написания месяца зависит, год он поставит или время создания, в предпоследний столбец, в последней строчке листинга директорий, что я приводил в пример, стоит вообще месяц январь, а в предпоследнем столбце все одно - время :))) В общем главное тут - чтобы строчки были по одному шаблону построены, это будет правильно, и не стоит рассчитывать на то, что клиенты будут "сильно умные" :))) А в винкомандере вообще фтп-клиент сильный стоит, как-то раз надо было на AN залезть, думаю счас попробую командером, посмотрю, как он обломается (там вообще листинг директорий совершенно нестандартный и столбцов меньше, и порядок не тот....) дык он зарегался, и вывел мне диалог, где можно легко забацать свой шаблон под листинг директорий, вот так-то :))) З.Ы. А про "Mai" я сразу заметил |
|
|
Дата: Июн 20, 2004 21:51:40 в Total Commander-е ели листинг какойто нестандартный, то можно вручную прописать где что. А вот посмотрел там сям, есть какойто IBM style, а что нада писать в ответ на SYST? |
|
|
Дата: Июн 21, 2004 01:20:06 · Поправил: Mad_C [А вот посмотрел там сям, есть какойто IBM style] аха, и еще множество других, например OS9000, MVS - это можно даже в винкомандере посмотреть, различаются только форматом вывода каталога [а что нада писать в ответ на SYST?] по RFC-959 на команду SYST сервер должен возвращать тип ОС под которой он работает, причем тип этот должен браться из "Reynolds, Joyce, and Jon Postel, "Assigned Numbers", RFC 943, ISI" и быть первым словом ответа после цифр ессно. В RFC-943 ни слова об этих типах не сказано, как не сказано о них и в "Requirements for Internet Hosts - Application and Support" - RFC-1123. А по сему полагаться на этот ответ сервера никоим образом нельзя, исходя из всего вышесказаного лучшим вариантом ответа сервера на эту команду будет "215 UNIX Type: L8", что говорит о том что мы (как бы) работаем в юникс-системе с дбиной байта = 8 битам. Более того - так поступают все сервера, на всех платформах (с которыми я сталкивался), некоторые правда вообще отвечают на SYST - "500 команда не поддерживается.". ServU под win отвечает "215 UNIX Type: L8", так же, как и G6FTP-server под win. вот ответ Nowell - фтп сервера: "215 UNIX Type: L8 Version: NetWare MurkWorks. Inc 1.64" FreeBSD 5.2.2 - "215 UNIX Type: L8 Version: BSD-199506" Вот такие пирожки с котятами :))) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.052 |