LINUX.ORG.RU
решено ФорумAdmin

proftpd vs microsoft explorer


0

1

Доброго времени суток.

Сабж: proftpd сервер в выводе list выдаёт файлы без указания года. explorer показывает, что у последних файлов дата модицикации - год назад. Время то же, число то же, но год назад.

touch'ем меняю дату на 3 часа назад - ситуация приходит в норму. Убираю из конфига

TimesGMT off

у файлов в explorer'е отображается дата модицикация 3 часа назад.

Т.е. глюк похоже у эксплорера и завязан на разницу с GMT, но пользователям это объяснять бесполезно.

Быстрый обходной путь - убрать «TimesGMT off» из конфига и сказать, что дата модификации, свиднутая 3 часа назад - это нормально. Но как бы это решить по-человечески? Можно ли proftpd указать в выводе ls в явном виде писать год даже если этот год текущий? Или стандарт запрещает?

★★★★★

Т.е.

1) если на часах 16:35, а в выводе команды ls proftpd напишет

-rw-r--r-- 1 vasya vasya 5 Mar 9 16:32 vip.doc

у пользователя в эксплорере дата модификации - 09.03.2010 16:32

2) если на часах 16:35, а в выводе команды ls proftpd напишет

-rw-r--r-- 1 vasya vasya 5 Mar 9 13:32 vip.doc

у пользователя в эксплорере дата модификации - 09.03.2011 13:32

Кто-нибудь знает, такой укороченный формат даты, без года, - это стандарт для ftp или особенность proftpd?

router ★★★★★
() автор топика
Ответ на: комментарий от router

Вроде, стандарта на вывод дат в ftp нет, настройки такой у proftpd я не помню, наверное, проще расковырять исходник.

mky ★★★★★
()
Ответ на: комментарий от mky

Расковырял

modules/mod_ls.c

        if (ls_curtime - mtime > 180 * 24 * 60 * 60)
          snprintf(timeline, sizeof(timeline), "%5d", t->tm_year+1900);

        else
          snprintf(timeline, sizeof(timeline), "%02d:%02d", t->tm_hour,
            t->tm_min);
          /* Format nameline using user/group IDs. */
          snprintf(nameline, sizeof(nameline)-1,
            "%s %3d %-8u %-8u %s %s %2d %s %s", m, (int) st.st_nlink,
            (unsigned) st.st_uid, (unsigned) st.st_gid, s,
            months[t->tm_mon], t->tm_mday, timeline,
            pr_fs_encode_path(cmd->tmp_pool, name));

Т.е. простого способа нет(через LC_TIME, например), для удовлетворения пользователей explorer нужно править исходник и пересобирать, да ещё не факт, что explorer правильно обработает новый формат.

Вывод - либо пересаживаются на номальный ftp клиент (утопическо-юмористический вариант, влиять на пользователей заказчика нереально), после чего я возвращаю «TimesGMT off» в конфиг, либо время - 3 часа - это фича специально для совместимости с их софтом.

router ★★★★★
() автор топика
Ответ на: комментарий от mky

Кстати, о стандарте. А ftp обязан показывать дату по GMT, по localtime или не регламентируется?

router ★★★★★
() автор топика
Ответ на: комментарий от router

Дак, в стандарте RFC 959 особо про это не сказано. Там говорится, что команд LIST (ls) служит для людей. Поэтому, каждый во что горазд, если посмотреть исходники wget, там достаточно большой код по разбору вывода LIST.

А для машин, относительно недавно, сделали команды MLSD/MLST (RFC 3659), там формат определённый и в UTC. И proftpd должен поддеживать эти команды, но, видимо, ie их не использует.

да ещё не факт, что explorer правильно обработает новый формат.

Почему новый? Ведь прошлогодние файлы ie правильно показывает?

mky ★★★★★
()

В IE _крайне_ кривой FTP-клиент.

Deleted
()
Ответ на: комментарий от mky

Спасибо.

Оставил конфиг как есть, без TimesGMT off, рекомендовал пользователям посмотреть в сторону filezilla

router ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.