Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   как запретить сохранять медиа-файлы на файл-сервере? (http://forum.oszone.net/showthread.php?t=136729)

Delirium 02-12-2008 08:41 969584

как запретить сохранять медиа-файлы на файл-сервере?
 
Вложений: 1
В данной ветке часто возникает вопрос - а как же можно ЗАПРЕТИТЬ копировать файлы определенных разрешений в некоторые папки на сервере? Дабы не кидали фильмы, музыку и прочее, но Server 2003 R2 с его File Resource Manager поставить нет возможности...
Чтобы помочь страждущим, предлагаю небольшую консольную утилитку. В чем её суть:
указываете в параметрах запуска папку на сервере и расширение, например так: fsw.exe \\server\share *.avi . Утилитка запустит простейший мониторинг данной папки и будет кидать в файл log.txt изменения, произошедшие в данной папке именно с указанными типами файлов.

Приведу исходный код и готовый exe:
читать дальше »
Код:

using System;
using System.IO;

namespace FileSystemWatcherTest
{
        class Class1
        {
                [STAThread]
                static void Main(string[] args)
                {

            if (args.Length != 0)
            {
                try
                {
                    // Создаем наблюдателя
                    FileSystemWatcher watcher = new FileSystemWatcher();
                    watcher.Path = args[0]; //первый параметр при запуске
                    // Будем следить за изменениями по последнему доступу,
                    // времени записи и переименованию файла или директорий
                    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                        | NotifyFilters.FileName | NotifyFilters.DirectoryName;
                    // Будем следить только за указанными файлами
                    watcher.Filter = args[1]; //второй параметр при запуске

                    // Добавляем обработчики событий
                    watcher.Changed += new FileSystemEventHandler(OnChanged);
                    watcher.Created += new FileSystemEventHandler(OnChanged);
                    watcher.Deleted += new FileSystemEventHandler(OnChanged);
                    watcher.Renamed += new RenamedEventHandler(OnRenamed);


                    // Включаем наблюдение
                    watcher.EnableRaisingEvents = true;

                    // Ждем пока пользователь не нажмет клавишу q
                    Console.WriteLine("Наблюдение запущено. Нажмите \'q\' для выхода.");
                    while (Console.Read() != 'q') ;
                }
                catch (Exception msg_ex)
                {
                    Console.WriteLine(msg_ex.Message);
                }
            }
            else
            {
                Console.WriteLine(@"Формат запуска: fsw.exe 1 2");
                Console.WriteLine(@"1-путь до папки с указанием последнего слеша (C:\temp\ или \\server\share\)");
                Console.WriteLine(@"2-тип файлов (*.jpg)");
                Console.WriteLine("Логи пишутся в файл log.txt в папке с fsw.exe");

                Console.WriteLine("Нажмите \'q\' для выхода.");
                while (Console.Read() != 'q') ;
            }

                }

                private static void OnChanged(object source, FileSystemEventArgs e)
                {
            StreamWriter sw;
            sw = File.AppendText("log.txt");
            sw.WriteLine(DateTime.Now.ToLocalTime().ToString() +  " Файл: " + e.FullPath + " " + e.ChangeType);
            sw.Close();
                }

                private static void OnRenamed(object source, RenamedEventArgs e)
                {
            StreamWriter sw;
            sw = File.AppendText("log.txt");
            sw.WriteLine("Файл: {0} был переименован в {1}", e.OldFullPath, e.FullPath);
            sw.Close();
                }
       
        }

}


Соответственно, если вам необходимо просто вжесткую удалять файлы при попытке их копирования на сервер, можно просто добавить строку File.Delete(e.FullPath) после строк sw.Close(); и он будет удаляться.
Данный код можно практически без изменений сделать службой.

Не претендую на уникальность, но вдруг кому то пригодится :) Если будет необходимо, перепишу под нужные запросы/параметры.
P.S. Огромное спасибо Павлу Агурову и его книге "C# Сборник рецептов" за простые и понятные коды. Кстати, очень рекомендую.

Цитата:

Цитата Admiral
Тема рассчитана на обладателей NT/2000/2003
Первые двоим нужно ещё .net 1.0 или 1.1 установить, прежде чем проследовать по инструкции по компиляции исходника. Обладателям NT он правда будет не к чему, а вот обладателям 2000-го думаю, что всё же нужен.
Обладатели 2003-го могут приступать сразу же к инструкции:
1)Скопируйте код из сообщения, вставьте в блокнот, сохраните его в файл, например под именем fsw.cs.
2)Зайдите в консоли в директорию в которую сохранили этот файл, наберите команду
%SystemRoot%\Microsoft.NET\Framework\v1.1.4322\csc.exe fsw.cs
в пути вместо .4322 может быть другое число в зависимости от установленного Сервис пака, данное справедливо для 2003 Sp2[/i]
4)В этой же директории Вы получите файл скомпилированный (exe) и готовый к работе файл.
Почему именно 1.1? Потому что он встроенный в 2003, не все обладатели последнего ставят 2.0, а то и 3.0/3.5.
Кстати он будет весить всего лишь 5,00 KB (5 120 bytes), чего там студия кроме иконки компилятору велела написать остаётся по ту сторону этой сборки ехе.


Oleg Krylov 02-12-2008 13:45 969893

Молодец! Спасибо.

AntohaV 10-12-2008 12:54 977264

Спасибо. Давно искал что-то подобное.
И вопросик: возможно что-бы мониторились файлики, во вложенных папках?

Delirium 11-12-2008 01:23 977995

Да. Достаточно добавить строку watcher.IncludeSubdirectories = true;

Delirium 12-12-2008 09:39 979135

Всё таки сегодня пятница, и поэтому я решился и переписал чутка программку.
В итоге получилась небольшая утилитка, сворачивающаяся в трей и позволяющая мониторить произвольное количество файлов и масок в любых папках. Внешний вид можно увидеть на http://kts.kna.ru/wnd.jpg, добавление папок показано на http://kts.kna.ru/restrict.JPG. Саму програмку можно пощупать на http://kts.kna.ru/FSW.rar (230 кб) .

Один минусик есть:
При создании мини базки я зачем то выбрал файл базы SQL Compact Server. Когда очнулся, и понял, что для ней нужно будет ставить компонент, уже все было написано :)
Для корректной работы нужен .Net Framework 2.0 и этот самый компонентик MS на 1,74 МБ. Его можно взять на http://kts.kna.ru/SSCERuntime-ENU.msi. Не корите сильно, сам знаю, что затупил :) Ну если уж совсем туго будет, перепишу без этого компонентика :)

P.S. надеюсь, понравится... :)

kdesys 24-02-2009 18:12 1047630

Может кто-нибудь скачавший выложит на другом ресурсе? Сервер kts.kna.ru к сожалению не доступен. :-(

Delirium 25-02-2009 01:34 1047964

Исправляю ошибку. Выложил файлы на своей машине и выключаю иногда. Вот постоянные ссылки:
http://rapidshare.de/files/45604898/FSW.rar.html - fsw.rar
http://rapidshare.de/files/45604946/...e-ENU.msi.html - SQL Compact Server.

kdesys 25-02-2009 10:40 1048133

Отличная утилита, хорошо работает. Спасибо.
Неплохо было бы сделать экспорт/импорт настроек, включить возможность редактирования внесенных настроек, а также отключение протоколирования.

kdesys 25-02-2009 12:05 1048177

Цитата:

Цитата kdesys
Неплохо было бы сделать экспорт/импорт настроек, включить возможность редактирования внесенных настроек, а также отключение протоколирования. »

Ну и чтобы совсем было хорошо жить, сделать галочку/кнопочку для инсталлирования сервиса. Ато после ребута опять необходимо входить в сеанс пользователем и запускать софтинку.

Delirium 26-02-2009 01:49 1048942

Цитата:

Цитата kdesys
Неплохо было бы сделать экспорт/импорт настроек »

Достаточно сохранить mdf файл, в нем хранятся все настройки.
По поводу остального подумаю :) Сейчас просто времени не хватает на все проекты :)

kdesys 26-02-2009 09:31 1049103

Цитата:

Цитата Delirium
Достаточно сохранить mdf файл, в нем хранятся все настройки.

Файл к сожалению не mdf, а sdf и отредактировать его содержимое я не знаю как. Да и держать отдельный софт для редактирования sdf как-то некрасиво.

Цитата:

Цитата Delirium
По поводу остального подумаю Сейчас просто времени не хватает на все проекты

Пожалуйста, найдите пару часиков, очень полезная штука.

Delirium 27-02-2009 02:36 1050076

Торжественно обещаю в ближайшее время переделать программку, дабы она не работала с sql клиентом. Возможно, будет храниться или в простом txt или в xml.
Что планирую добавить:
Цитата:

Цитата kdesys
экспорт/импорт настроек »

Цитата:

Цитата kdesys
озможность редактирования внесенных настроек »

Цитата:

Цитата kdesys
отключение протоколирования »

Цитата:

Цитата kdesys
галочку/кнопочку для инсталлирования сервиса »

Расширить функциональность лог-файла, чтобы отображался в таблице с указанием имени пользователя и других атрибутов + возможности быстро открыть папку, содержащую файл.

kdesys 06-03-2009 09:40 1056276

Цитата:

Цитата Delirium
Торжественно обещаю в ближайшее время переделать программку, дабы она не работала с sql клиентом. »

Здравствуйте.

Хотелось бы узнать, как продвигается разработка?

masus 03-04-2009 20:16 1083380

как запретить сохранять медиа файла на файл-сервере?
 
как запретить сохранять медиа файла на файл-сервере?
Доброго времени суток господа, вот перед мной став вопрос как запретить копировать и сохранять медия файлы (*.avi, *mp3, ну и тд) на файл-сервер?
Хотелось бы это сделать всем юзерям кроме определенной группы лиц (начальство) ну и себе любимому тоже.
Подскажите, как можно решить эту проблему?
Можно ли это решить средствами винды?
Возможно ли это сделать средствами Group Policy, если да то подскажите как это сделать?

З.Ы. Не много о сети AD Win 2003, отдельно стоит фал-сервер тк же под win2003

Dimas_83 03-04-2009 22:37 1083536

http://forum.oszone.net/thread-108774.html
http://forum.oszone.net/thread-83861.html

Delirium 06-04-2009 01:22 1085219

Если просто всем удалять файлы, то вам сюда:
http://forum.oszone.net/showthread.p...E5%ED%ED%FB%F5

А если с разграничением прав, то 2003 Server R2.

Delirium 06-04-2009 01:26 1085227

Давно не писал. Пока разработка не двигается в связи с двумя проблемами:
1. Я сменил квартиру и теперь прет ремонт полным ходом.
2. Я удалил случайно исходники FSW :cry: :laugh: Т.к. программа проста, то просто напишу заново с учетом предложений, указанных выше.

kdesys 03-08-2009 18:01 1184553

Цитата:

Цитата Delirium
просто напишу заново с учетом предложений, указанных выше »

Есть новости?

Delirium 04-08-2009 01:19 1184853

kdesys, к сожалению нет, навалили другой работы, в том числе и связанной с программированием. Так что увы, пока тишина ;(

Nitrokamer 26-08-2009 07:33 1203403

Delirium, Народ требует продолжения проекта... очень актуально!

Delirium 26-08-2009 07:59 1203412

Nitrokamer, я бы с удовольствием, но пока нет возможности, завалы на работе :) Как освобожусь, обещаю дописать(точнее, переписать с нуля, ибо исходники умерли вместе с винтом)

tom 23-10-2009 17:53 1250575

блин где можно скачать программу сервера не работают на рапиде срок закончился. Помогите!!!
дайте хоть старую программу.

zubkoff.s 03-11-2009 17:25 1260548

+1
дайте хоть старую версию поюзать!
Актуально.
Видел, ее размеры позволяют перекинуть на почту.
Снизойдите - zubkoff.s[delit_sobaka].gmail.com

zubkoff.s 04-11-2009 18:29 1261604

Обратил внимание на некоторые нюансы.
1. Она не стирает файлы, которые уже записаны на ресурсе, что вполне очевидно.
2. Не могу понять, когда именно и как она производит поиск файлов по указанной маске - на лету, или уже после запилси, по какому-то своему внутреннему шедулу? Некоторые файлы успешно удаляются. А некоторые - в логе написно несколько одинаковых записей - "%путь к файлу% Не удалось удалить". Т.е. файл по маске он нашел, но удалить не может. Программа запущена под админ правами. Вручую файл удаляется.
Можно подумать, что файл кем-то занят - НО это не так.

В общем немного разочарован данной утилитой. Буду продолжать поиски решения по фильтру записи файлов по маске.

Delirium 23-11-2009 01:33 1277655

Цитата:

Цитата zubkoff.s
Не могу понять, когда именно и как она производит поиск файлов по указанной маске - на лету, или уже после запилси, по какому-то своему внутреннему шедулу? »

Поиска как такового нет, утилита использует средства .NET framework для наблюдения за файловой системой, это что то вроде подписки на события системы при записи на винт. Если образно. Для того, чтобы написать полноценный файловый драйвер, который будет все это дело обрабатывать, надо покупать в MS спец. пакет.
Цитата:

Цитата zubkoff.s
Т.е. файл по маске он нашел, но удалить не может »

Дело в том, что триггер программы срабатывает при начале записи на винт, но, если размер файла очень большой, то пока будет идти попытка записи, файл будет заблокирован системой. Это недостатки реализации FileSystemWatcher в .NET Framework. Если вам нужен надежный способ - то ставьте 2003R2. Хотя эту защиту обойти элементарно простой сменой расширения файла :)

riwen 21-01-2011 15:53 1594027

Большое спасибо за утилиту!
Уважаемый Delirium, а возможно ли вести наблюдение сразу по нескольким маскам (*.jpg and *.mp3)?

Lentyi 27-09-2011 13:09 1760978

Delirium вот у тя написано что есл в коде дописать File.Delete(e.FullPath) и он будет удалять файлы указанные по расширению, но у меня почему то не получается((.....пожалуйста, пропиши как именно нужно это в коде прописать??....плюс у меня еще без File.Delete(e.FullPath) тож не пашет утилитка, в смысле лог то он ведет, а запрет не делает на заданное мной расширение.

Delirium 29-09-2011 15:07 1762464

Lentyi, сейчас не могу ничего подсказать, времени нет совсем. Но я обещаю переписать программу в более удобный вид и выложить.


Время: 07:09.

Время: 07:09.
© OSzone.net 2001-