Unc путь

  • Автор темы DNT
  • Дата начала
D

DNT

Всех с прошедшими и наступающими!

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

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

Elena Nefedova

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

DNT

А шо ж, извените, делать? Насилуют голову ведь. :(
Может в две итерации? Сначало на локальный диск извлекаем а потом копируем каким-то батником через шел? Только тоже вопрос как с правами разрулить?
 
O

oshmianski

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

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

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

DNT

Для: oshmianski

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

Elena Nefedova

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

DNT

Для: 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

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

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

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

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

DNT

Для: 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

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

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


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



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

DNT

Для: Elena Nefedova

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

Elena Nefedova

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

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

DNT

Для: Elena Nefedova

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

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

Elena Nefedova

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

DNT

Для истории выкладываю кусок кода отвечающий за извлечение файла на сетевой ресурс.
Переменные привык называть понятными именами так что думаю все понятно будет.

...
'определим какой диск будем юзать
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

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

DNT

Для: oshmianski

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!