Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2014, 21:14   #1
noname_06
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 49
Вопрос Выбор домашней папки пользователя в IdFTPServer

FTP сервер на основе XE3 + IdFTPServer v10. Как правильно установить корневую директорию для пользователя? В моей версии пользователь после подключения оказывается в общей для всех папке (Options.StoredPath):
Код:
procedure TfMain.IdFTPSrvAfterUserLogin(ASender: TIdFTPServerContext);
var
  tmp : string;
begin
  tmp := Options.StoredPath + ASender.Username + '/';
  if not DirectoryExists(tmp) then
    if not ForceDirectories(tmp) then
    begin
      MessageDlg('Невозможно создать директорию для пользователя ' + ASender.Username,
                 mtError, [mbYes], 0);
        AddToLog(DateTimeToStr(Now) + '> Невозможно создать директорию для пользователя ' +
                 ASender.Username, clMaroon);
    end;
  ASender.HomeDir := tmp;
  ASender.CurrentDir := '/';
end;
Т.е. user1 вместо того, что бы попасть в "физическую" папку c:\users\user1 попадает в c:\users\
Пробовал переносить код в событие IdFTPSrvUserLogin - без изменений.
*демки от 9 и 10 версий смотрел. "Глубины Indy" ситуацию не прояснили, как и IndyDocs_10.1.5.0_Pdf
Может ли быть проблема в синхронизации потоков, создаваемых Indy, с основным приложением? Пробовал ставить breackpoint'ы и ShowMessage'и - реакции ноль. И как можно просмотреть значение ASender?
Вообще складывается такое впечатление, что события UserLogin и AfterUserLogin не происходят. Хотя как оно тогда работает?
noname_06 вне форума Ответить с цитированием
Старый 14.06.2014, 21:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вообще складывается такое впечатление, что события UserLogin и AfterUserLogin не происходят.
Вау! Наконец то верная мысль )))
А то понимаешь ли и "проблема в синхронизации потоков" и "переносить код в событие IdFTPSrvUserLogin"
Директорию юзеру лучше всего задавать в OnListDirectory. Все равно получение списка файлов идет через это событие. Вот там и прибавляй свое c:\users\
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.06.2014, 22:16   #3
noname_06
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 49
По умолчанию

Вообще то это было предположение "в порядке бреда". Про взаимодействие потоков меня натолкнули на форуме embarcadero.
Тогда 2 вопроса к знающему: почему события не происходят и почему код, фактически "скопипащеный" из офф демки Indy, не работает.
*подключаюсь с помощью totalcmd
Цитата:
Сообщение от Stilet Посмотреть сообщение
Вау! Наконец то верная мысль )))
Звучит так, как будто я тут всем мозг третьи сутки выношу переименованием label'a

Последний раз редактировалось noname_06; 15.06.2014 в 22:05.
noname_06 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор пользователя Афанасий[vedma] Общие вопросы Delphi 4 30.07.2012 08:14
Диалог выбор папки DSK Общие вопросы Delphi 1 08.06.2011 17:01
Как программно получить путь до папки Application Data для пользователя LocalService? bzzz Win Api 3 23.09.2009 09:30
Случайный выбор с папки Marsik Помощь студентам 2 15.12.2007 19:04
Выбор папки UnD)eaD)Snake Общие вопросы Delphi 10 22.08.2007 12:05