
- •По направлению 230100.62 – «Информатика и вычислительная техника» Профиль: «Вычислительные машины, комплексы, системы и сети»
- •Содержание
- •Введение
- •1. Обзор предметной области работы
- •1.1. Проблемы информационной безопасности картографических данных
- •1.2. Организация файлового хранилища на базе raid массива
- •1.3. Ограничение доступа к сети с применением proxy-сервера
- •2. Организация системы, описание реализации
- •2.1. Выбор конфигурации raid массива
- •2.2. Выбор Proxy сервера
- •2.3. Разработка структуры системы
- •2.4. Выбор инструментальных средств разработки
- •3. Реализация проекта
- •3.1. Организация raid 10
- •3.2. Установка и настройка ftp сервера
- •3.3. Конфигурирование Proxy-сервера
- •3.4. Разработка клиентского модуля
- •3.4.1. Работа с ftp сервером
- •3.4.2. Работа с консолью 7-Zip
- •3.4.2. Конфигурационный файл
- •3.4.3. Лог файл
- •Заключение
- •Конфигурационный файл Squid
- •Листинг клиентской программы
- •Конфигурационный файл клиентской программы
- •Акт о принятии к внедрению
3.4.2. Работа с консолью 7-Zip
Для работы с консолью 7-Zip используются следующие основные команды. Общий синтаксис программы 7z имеет вид:
7z <команда> <ключ> <имя_архива> <аргументы>
Команды:
a – задаёт добавление в архив. Если указанный архив не существует, он будет создан.
l – выводит содержимое архива.
t – производит тестирование архива.
x – извлекает файлы из архива. Если её не задать, файлы будут извлечены в текущую папку.
Ключи:
-p: задаёт пароль.
-sfx: указывает на создание самоизвлекающегося архива.
-t: задаёт тип архива, например: tzip, t7z, trar.
Аргументы содержит имена файлов, которые следует добавить/извлечь, или имя каталога в который надо извлекать. Если он не задан, используется текущий. Чтобы указать все файлы, нужно использовать маску *, а не *.* как в Windows.
Для запуска модуля из С# используется класс Process пространства имен System.Diagnostics.
Для запуста дочернего процесса необходимо указать путь к исполняемому файлу и аргументы командной строки:
using (Process pr = new Process())
{
pr.StartInfo.FileName = _7zPath;
pr.StartInfo.Arguments = ArgsCMD;
pr.StartInfo.UseShellExecute = false;
pr.Start();
pr.WaitForExit();
}
Здесь _7zPath – путь к исполняемому файлу 7z.exe, ArgCMD – строка аргументов командной строки.
3.4.2. Конфигурационный файл
Необходимые параметры для работы программы задаются в конфигурационном файле, который расположен в каталоге с программой по адресу etc/settings.conf.
Формат заполнения конфигурационного файла:
........
# ...комментарий...
<имя_параметра> = <значение_параметра> # ...комметрарий...
........
Для чтения параметров конфигурационного файла была написана функция, которая принимает имя необходимого параметра, производит поиск в конфигурационном файле и возвращает значение найденного параметра.
string GetParamValue(string ParName)
{
this.Open(); // Открывается файл, создается поток
string parValue;
string str;
try
{ // Построчное чтение файла
while ((str = sReader.ReadLine()) != null)
{
if (str.Length != 0 && str[0] != '#')
if (str.Length >= ParName.Length)
if (String.Compare(str, 0, ParName, 0, ParName.Length) == 0)
{
int i;
for (i = ParName.Length; i < str.Length && str[i] != '='; i++) ;
i++;
for (; i < str.Length && str[i] == ' '; i++) ;
int i0 = i;
for (; i < str.Length && str[i] != ' ' && str[i] != '\n' && str[i] != '\t' && str[i] != '\0' && str[i] != '#'; i++) ;
if (i > i0)
parValue = str.Substring(i0, i - i0);
else parValue = "UndefinedValue";
return parValue;
}
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
parValue = "UndefinedValue";
return parValue;
}
3.4.3. Лог файл
Вся статистика работы модуля записывается в лог файл, который расположен в каталоге с программой по адресу var/actions.log.
Формат заполнения лог файла:
........
[ДД.ММ.ГГГГ ЧЧ:ММ:СС]: ...событие...
........
Для заполнения лог файла создана функция-обработчик, которой с помощью события отправляется строка для записи в лог файл. Обработчиком перед записью добавляется текущая дата и время.
public void LogWrite(string str)
{
this.Open();
Console.WriteLine("[{0}]: {1}", DateTime.Now, str);
sWriter.WriteLine("[{0}]: {1}", DateTime.Now, str);
sWriter.Flush();
}