Unc путь

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#1
Всех с прошедшими и наступающими!

Есть задача сохранять вложения из пришедших писем в определенную папку на сервере. Всё бы ничего, НО появился вопрос : как сохранить файл на другом серваке используя UNC путь например \\server\share\ ???? Есть ли способ предварительно сохранить "имя_пользователя:пароль" и потом под ним ломиться на необходимую шару ???

Заранее спс за ответы
 
E

Elena Nefedova

#2
Я серверным агентом с расширенными правами такие вещи делаю.
Там какой-то в виндах есть запрет: невозможно подконнектиться к одному и тому же серверу с одной и той же станции под разными пользователями. Так что там хоть храни username, хоть нет, а винды не дадут :(
 

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#3
А шо ж, извените, делать? Насилуют голову ведь. :(
Может в две итерации? Сначало на локальный диск извлекаем а потом копируем каким-то батником через шел? Только тоже вопрос как с правами разрулить?
 
O

oshmianski

#4
Для: DNT
может попробовать так.

1. n = Shell({net use s: ...})
2. складываем вложения
3. n = Shell({net use s: /delete})

Тут можно и пользователя и пароль указывать
 

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#5
Для: oshmianski

идея хороша. уже пробую. о результатах оповещу...
 
E

Elena Nefedova

#6
Для: DNT
А чем стандартное журналирование не подходит?
Там и сообщения полностью хранятся, и права разграничиваются, и другие есть плюсы...
 

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#7
Для: Elena Nefedova

<!--QuoteBegin-Elena Nefedova+11:01:2007, 11:07 -->
<span class="vbquote">(Elena Nefedova @ 11:01:2007, 11:07 )</span><!--QuoteEBegin-->стандартное журналирование
[snapback]52810" rel="nofollow" target="_blank[/snapback]​
[/quote]

А как это мне поможет складировать пришедшие файлы на другом сервере в определенную папку?
 
E

Elena Nefedova

#8
А как это мне поможет складировать пришедшие файлы на другом сервере в определенную папку?
Я, собственно, и пытаюсь понять, насколько принципиально хранить в определенной папке, нарушая этим конфиденциальность в случае доступа к ней кого-то непроверенного.

Открепление можно повесить на before-mail в базах контролируемых пользователей.
Пароль можно зашифровать, а ключ прошить в ID сервера.
net use при этом будет работать, если домино запущен как сервис, а не от имени пользователя.
Иначе этому пользователю надо будет права раздавать на директорию, зато пароль не понадобится.
При этом может снизиться производительность сервера.

Если же вешать открепление на сторону клиента, то у текущего юзера должен быть доступ либо к ресурсу, либо к паролю.
В последнем случае придется запоминать все(!!!) шары пользователя на целевой сервер, убивать их все, подключаться заново, совершать открепление, отключаться и восстанавливать все шары, как они были.
А это как раз такое приключение на свою голову, что мало не покажется.

Так что, если журналирование все же может решить вашу проблему, лучше его настроить, а не воплощать в жизнь описанный процесс.
 

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#9
Для: Elena Nefedova

Спс за столь развернутый ответ.

Задача открепления файликов висит на сервере по событию "After new mail ...".
То место, куда положить текущий файл зависит только от темы письма, и не зашивается плотно в код. Существует док. настройки для возможных вариантов сабжекта. Пользователя и Пароль думаю хранить там же.

Можете объяснить как правильно работать с полем Password и галкой Enabled encryption?
<!--QuoteBegin-Elena Nefedova+11:01:2007, 11:40 -->
<span class="vbquote">(Elena Nefedova @ 11:01:2007, 11:40 )</span><!--QuoteEBegin-->Пароль можно зашифровать, а ключ прошить в ID сервера.
[snapback]52818" rel="nofollow" target="_blank[/snapback]​
[/quote]

Как прошить ключ? Где его для этого взять? И как с этим работать если эта база в дальнейшем будет распостраняться на другие сервера?
 
E

Elena Nefedova

#10
Для: DNT
Поле Password в общем-то не нужно.
Нужно обычное шифрованное поле.
Для этого сначала создать какой-нибудь ключ, внятно названный.
В свойствах формы указать этот ключ для шифрования по умолчанию.
Создать поле и включить в нем опцию шифрования.
А для пущей безопасности - скрыть это поле, чтоб никто на экране у админа не подсмотрел, а пароль выводить/изменять по кнопке.
Изменять документ с зашифрованным полем смогут только обладатели ключа. Остальные могут только читать незашифрованные поля, если доступ на чтение есть.
Теперь ключ надо распространить.
Людям можно выслать его по почте, а в серверный ID надо прошивать из файла (сначала выгрузить в файл, потом войти в клиент под серверным ID, подгрузить ключ из файла, а затем заменить на реальном сервере старый ID без ключа на новый с ключом. Файл с ключом после этого удалить)

Все операции по созданию/распространению ключа надо читать в хелпе. Кажется, в юзерском. А юзерский бывает и русский, что приятно.


ЗЫ: After new mail... может не поймать быстро удаленный аттач или весь документ.



ЗЗЫ: Лучше бы вам это все журналировать. А уже из журнала выгружать в директорию.
Тоже повозиться надо с изучением вопроса - там шифруются данные автоматически, но я думаю, оно того стоит: это должно уменьшить нагрузку на сервер.
 

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#11
Для: Elena Nefedova

Да, вот уж есть где поломать голову.
А где почитать в хелпе про журналирование? Как это звучит на инглише?
 
E

Elena Nefedova

#12
Журналирование:
Administrator Help, поиск по ключу Mail journaling и далее по ситуации

Можно сделать базу, которая фоновым агентом прошерстит журнальную базу и все выгрузит.
 

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#13
Для: Elena Nefedova

Буду копать.
Но уже хочу отказаться от энкрипшена :( по причине сложности реализации и дальнейшего распостранения БД, такой халотности конечно нельзя допускать, всё зависит от способа использования БД: просто в моём случае овчинка выделки не стоит. База эта является мэйлиновской в нее присылает письма тоже не человек, а некий процесс, доступ в нее имеет только админский состав. Ну а от них скрывать пароль не имеет смысла. А журналирование тема интересная, бегло прочитал.

Что скажете? В моем случае можно не заморачиваться с шифрованием?
 
E

Elena Nefedova

#14
Если админский состав и так имеет доступ всюду, то можно и не заморачиваться.
Просто IBM это рекомендует.
 

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#15
Для истории выкладываю кусок кода отвечающий за извлечение файла на сетевой ресурс.
Переменные привык называть понятными именами так что думаю все понятно будет.

...
'определим какой диск будем юзать
disk$ = ServerDoc.Letter(0)
'убиваем предыдущее подключение, если было - отключит, если не было отругается незаметно
comand$ = "CMD.EXE /C net use " + disk$ +" /delete"
rezult = Shell(comand$,1)
'будем спать секунду после каждой сетевой операции - надо дать немного времени
Sleep 1
'подключаем диском необходимый сетевой фолдер под соответствующим именем и паролем
comand$ = "CMD.EXE /C net use " + disk$ +" " + {"} + Path + {"} +" " + ServerDoc.fPassword(0) + " /user:" + ServerDoc.fUserName(0)
rezult = Shell(comand$,1)
Sleep 1
'извлекаем файл локально в темповую директорию
TempDir$ = Environ("Temp")
Call o.ExtractFile( TempDir$ & "\" & FileName$)
'мувим файл на наш сетевой диск
comand$ = "CMD.EXE /C move /Y " + TempDir$ + "\" + FileName$ + " " +disk$ + "\" + FileName$
rezult = Shell(comand$,1)
Sleep 1
Print ("File " & FileName$ & " was detached to " & Path & "\" )
'убиваем подключение
comand$ = "CMD.EXE /C net use " + disk$ +" /delete"
rezult = Shell(comand$,1)
...
 
O

oshmianski

#16
Для: DNT
а зачем сначала сохранять во временную директорию? сразу сохранить на сетевой диск нельзя?
 

DNT

Постоялец форума
Lotus team
12.10.2005
594
2
#17
Для: oshmianski

Ждал этого вопроса.

Нельзя потому что access denied. А когда копируешь или мувишь то винда помнит под кем подключен диск и у нее больше вопросов нет.